一、表空间操作

1.1 创建永久表空间

永久表空间包含存储在数据文件中的持久性模式对象。

语法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
CREATE
[ SMALLFILE | BIGFILE ]
TABLESPACE tablespace_name
{ DATAFILE { [ 'filename' | 'ASM_filename' ]
[ SIZE integer [ K | M | G | T | P | E ] ]
[ REUSE ]
[ AUTOEXTEND
{ OFF
| ON [ NEXT integer [ K | M | G | T | P | E ] ]
[ MAXSIZE { UNLIMITED | integer [ K | M | G | T | P | E ] } ]
}
]
| [ 'filename | ASM_filename'
| ('filename | ASM_filename'
[, 'filename | ASM_filename' ] )
]
[ SIZE integer [ K | M | G | T | P | E ] ]
[ REUSE ]
}
{ MINIMUM EXTENT integer [ K | M | G | T | P | E ]
| BLOCKSIZE integer [ K ]
| { LOGGING | NOLOGGING }
| FORCE LOGGING
| DEFAULT [ { COMPRESS | NOCOMPRESS } ]
storage_clause
| { ONLINE | OFFLINE }
| EXTENT MANAGEMENT
{ LOCAL
[ AUTOALLOCATE
| UNIFORM
[ SIZE integer [ K | M | G | T | P | E ] ]
]
| DICTIONARY
}
| SEGMENT SPACE MANAGEMENT { AUTO | MANUAL }
| FLASHBACK { ON | OFF }
[ MINIMUM EXTENT integer [ K | M | G | T | P | E ]
| BLOCKSIZE integer [ K ]
| { LOGGING | NOLOGGING }
| FORCE LOGGING
| DEFAULT [ { COMPRESS | NOCOMPRESS } ]
storage_clause
| { ONLINE | OFFLINE }
| EXTENT MANAGEMENT
{ LOCAL
[ AUTOALLOCATE | UNIFORM [ SIZE integer [ K | M | G | T | P | E ] ] ]
| DICTIONARY
}
| SEGMENT SPACE MANAGEMENT { AUTO | MANUAL }
| FLASHBACK { ON | OFF }
]
}

示例:

CREATE TABLESPACE WNO704 LOGGING DATAFILE '/opt/oracle/app/oradata/qhfwbzdb/WNO704.dbf' SIZE 100 M AUTOEXTEND ON NEXT 32 M MAXSIZE 500 M EXTENT MANAGEMENT LOCAL;

1.2 创建临时表空间

临时表空间包含存储在会话期间存在的临时文件中的模式对象。

语法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
CREATE
[ SMALLFILE | BIGFILE ]
TEMPORARY TABLESPACE tablespace_name
[ TEMPFILE { [ 'filename' | 'ASM_filename' ]
[ SIZE integer [ K | M | G | T | P | E ] ]
[ REUSE ]
[ AUTOEXTEND
{ OFF
| ON [ NEXT integer [ K | M | G | T | P | E ] ]
[ MAXSIZE { UNLIMITED | integer [ K | M | G | T | P | E ] } ]
}
]
| [ 'filename | ASM_filename'
| ('filename | ASM_filename'
[, 'filename | ASM_filename' ] )
]
[ SIZE integer [ K | M | G | T | P | E ] ]
[ REUSE ]
}
[ TABLESPACE GROUP { tablespace_group_name | '' } ]
[ EXTENT MANAGEMENT
{ LOCAL
[ AUTOALLOCATE | UNIFORM [ SIZE integer [ K | M | G | T | P | E ] ] ]
| DICTIONARY
} ]

示例:

CREATE TEMPORARY TABLESPACE WNO704_TEMP TEMPFILE '/opt/oracle/app/oradata/qhfwbzdb/WNO704_TEMP.dbf' SIZE 100 M AUTOEXTEND ON NEXT 32 M MAXSIZE 500 M EXTENT MANAGEMENT LOCAL;

1.3 UNDO表空间

如果Oracle数据库以自动撤消管理模式运行,则会创建撤消表空间来管理撤消数据。

语法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
CREATE
[ SMALLFILE | BIGFILE ]
UNDO TABLESPACE tablespace_name
[ DATAFILE { [ 'filename' | 'ASM_filename' ]
[ SIZE integer [ K | M | G | T | P | E ] ]
[ REUSE ]
[ AUTOEXTEND
{ OFF
| ON [ NEXT integer [ K | M | G | T | P | E ] ]
[ MAXSIZE { UNLIMITED | integer [ K | M | G | T | P | E ] } ]
}
]
| [ 'filename | ASM_filename'
| ('filename | ASM_filename'
[, 'filename | ASM_filename' ] )
]
[ SIZE integer [ K | M | G | T | P | E ] ]
[ REUSE ]
}
[ EXTENT MANAGEMENT
{ LOCAL
[ AUTOALLOCATE | UNIFORM [ SIZE integer [ K | M | G | T | P | E ] ] ]
| DICTIONARY
} ]
[ RETENTION { GUARANTEE | NOGUARANTEE } ]

示例:

CREATE UNDO TABLESPACE WNO704_UNDO DATAFILE '/opt/oracle/app/oradata/qhfwbzdb/WNO704_UNDO.f' SIZE 5 M AUTOEXTEND ON RETENTION GUARANTEE;

1.4 表空间删除

1.4.1 删除空的表空间,但是不包含物理文件

DROP TABLESPACE tablespace_name;

1.4.2 删除非空表空间,但是不包含物理文件

DROP TABLESPACE tablespace_name including contents;

1.4.3 删除空表空间,包含物理文件

DROP TABLESPACE tablespace_name including datafiles;

1.4.4 删除非空表空间,包含物理文件

DROP TABLESPACE tablespace_name including contents AND datafiles;

1.4.5 如果其他表空间中的表有外键等约束关联到了本表空间中的表的字段,就要加上CASCADE CONSTRAINTS

DROP TABLESPACE tablespace_name including contents AND datafiles CASCADE CONSTRAINTS;

1.5表空间查看与监控

1.5.1 查看表空间的名称及大小

1
2
3
4
5
6
7
8
9
10
SELECT
t.tablespace_name,
round( sum( bytes / ( 1024 * 1024 ) ), 0 ) ts_size
FROM
dba_tablespaces t,
dba_data_files d
WHERE
t.tablespace_name = d.tablespace_name
GROUP BY
t.tablespace_name;

1.5.2 查看表空间物理文件的名称及大小

1
2
3
4
5
6
7
8
9
SELECT
tablespace_name,
file_id,
file_name,
round( bytes / ( 1024 * 1024 ), 0 ) total_space
FROM
dba_data_files
ORDER BY
tablespace_name;

1.5.3 查看回滚段名称及大小

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT
segment_name,
tablespace_name,
r.STATUS,
( initial_extent / 1024 ) initialextent,
( next_extent / 1024 ) nextextent,
max_extents,
v.curext curextent
FROM
dba_rollback_segs r,
v$rollstat v
WHERE
r.segment_id = v.usn ( + )
ORDER BY
segment_name;

1.5.4 查看控制文件

SELECT NAME FROM v$controlfile;

1.5.5 查看日志文件

SELECT MEMBER FROM v$logfile;

1.5.6 查看表空间的使用情况

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
SELECT
sum( bytes ) / ( 1024 * 1024 ) AS free_space,
tablespace_name
FROM
dba_free_space
GROUP BY
tablespace_name;

SELECT
a.tablespace_name,
a.bytes total,
b.bytes used,
c.bytes free,
( b.bytes * 100 ) / a.bytes "% used ",
( c.bytes * 100 ) / a.bytes "% free "
FROM
sys.sm$ts_avail a,
sys.sm$ts_used b,
sys.sm$ts_free c
WHERE
a.tablespace_name = b.tablespace_name
AND a.tablespace_name = c.tablespace_name;

1.5.7 查看数据库库对象

1
2
3
4
5
6
7
8
9
10
11
SELECT OWNER
,
object_type,
STATUS,
count( * ) count
FROM
all_objects
GROUP BY
OWNER,
object_type,
STATUS;

1.5.8 查看数据库的版本

1
2
3
4
5
6
SELECT
version
FROM
product_component_version
WHERE
substr( product, 1, 6 ) = 'oracle';

1.5.9 查看数据库的创建日期和归档方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
SELECT created,	log_mode,	log_mode FROM	v$ DATABASE;
--1g=1024mb
--1m=1024kb
--1k=1024bytes
--1m=11048576bytes
--1g=1024*11048576bytes=11313741824bytes

SELECT
a.tablespace_name "表空间名",
total "表空间大小",
free "表空间剩余大小",
( total - free ) "表空间使用大小",
total / ( 1024 * 1024 * 1024 ) "表空间大小(g)",
free / ( 1024 * 1024 * 1024 ) "表空间剩余大小(g)",
( total - free ) / ( 1024 * 1024 * 1024 ) "表空间使用大小(g)",
round( ( total - free ) / total, 4 ) * 100 "使用率 %"
FROM
( SELECT tablespace_name, sum( bytes ) free FROM dba_free_space GROUP BY tablespace_name ) a,
( SELECT tablespace_name, sum( bytes ) total FROM dba_data_files GROUP BY tablespace_name ) b
WHERE
a.tablespace_name = b.tablespace_name

二、用户操作

2.1 创建用户

CREATE USER WNO704 IDENTIFIED BY wno704db312 DEFAULT TABLESPACE WNO704 TEMPORARY TABLESPACE WNO704_TEMP;

2.2 删除用户

DROP USER WNO704 CASCADE;

若用户拥有对象(例如进行过增删改查等等操作),则不能直接删除,否则将返回一个错误值。指定关键字CASCADE,可删除用户所有的对象,然后再删除用户。

三、权限

3.1 增加权限

GRANT connect,resource,dba TO monitor;
GRANT CREATE SESSION TO monitor;

3.2 删除权限

REVOKE CONNECT, RESOURCE FROM 用户名;

3.3 常用权限

CREATE SESSION 允许用户登录数据库权限
REATE TABLE 允许用户创建表权限
UNLIMITED TABLESPACE 允许用户在其他表空间随意建表

四、角色

4.1 创建角色

CREATE ROLE 角色名;

4.2 授权角色

GRANT SELECT ON 表名 TO 角色名;

4.3 删除角色

DROP ROLE 角色名;

4.4 与权限安全相关的数据字典表有:

1
2
3
4
5
6
7
8
9
10
11
12
13
ALL_TAB_PRIVS
ALL_TAB_PRIVS_MADE
ALL_TAB_PRIVS_RECD
DBA_SYS_PRIVS
DBA_ROLES
DBA_ROLE_PRIVS
ROLE_ROLE_PRIVS
ROLE_SYS_PRIVS
ROLE_TAB_PRIVS
SESSION_PRIVS
SESSION_ROLES
USER_SYS_PRIVS
USER_TAB_PRIV

4.5 oracle的系统和对象权限列表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
alter any cluster 修改任意簇的权限
alter any index 修改任意索引的权限
alter any role 修改任意角色的权限
alter any sequence 修改任意序列的权限
alter any snapshot 修改任意快照的权限
alter any table 修改任意表的权限
alter any trigger 修改任意触发器的权限
alter cluster 修改拥有簇的权限
alter database 修改数据库的权限
alter procedure 修改拥有的存储过程权限
alter profile 修改资源限制简表的权限
alter resource cost 设置佳话资源开销的权限
alter rollback segment 修改回滚段的权限
alter sequence 修改拥有的序列权限
alter session 修改数据库会话的权限
alter sytem 修改数据库服务器设置的权限
alter table 修改拥有的表权限
alter tablespace 修改表空间的权限
alter user 修改用户的权限
analyze 使用analyze命令分析数据库中任意的表、索引和簇
audit any 为任意的数据库对象设置审计选项
audit system 允许系统操作审计
backup any table 备份任意表的权限
become user 切换用户状态的权限
commit any table 提交表的权限
create any cluster 为任意用户创建簇的权限
create any index 为任意用户创建索引的权限
create any procedure 为任意用户创建存储过程的权限
create any sequence 为任意用户创建序列的权限
create any snapshot 为任意用户创建快照的权限
create any synonym 为任意用户创建同义名的权限
create any table 为任意用户创建表的权限
create any trigger 为任意用户创建触发器的权限
create any view 为任意用户创建视图的权限
create cluster 为用户创建簇的权限
create database link 为用户创建的权限
create procedure 为用户创建存储过程的权限
create profile 创建资源限制简表的权限
create public database link 创建公共数据库链路的权限
create public synonym 创建公共同义名的权限
create role 创建角色的权限
create rollback segment 创建回滚段的权限
create session 创建会话的权限
create sequence 为用户创建序列的权限
create snapshot 为用户创建快照的权限
create synonym 为用户创建同义名的权限
create table 为用户创建表的权限
create tablespace 创建表空间的权限
create user 创建用户的权限
create view 为用户创建视图的权限
delete any table 删除任意表行的权限
delete any view 删除任意视图行的权限
delete snapshot 删除快照中行的权限
delete table 为用户删除表行的权限
delete view 为用户删除视图行的权限
drop any cluster 删除任意簇的权限
drop any index 删除任意索引的权限
drop any procedure 删除任意存储过程的权限
drop any role 删除任意角色的权限
drop any sequence 删除任意序列的权限
drop any snapshot 删除任意快照的权限
drop any synonym 删除任意同义名的权限
drop any table 删除任意表的权限
drop any trigger 删除任意触发器的权限
drop any view 删除任意视图的权限
drop profile 删除资源限制简表的权限
drop public cluster 删除公共簇的权限
drop public database link 删除公共数据链路的权限
drop public synonym 删除公共同义名的权限
drop rollback segment 删除回滚段的权限
drop tablespace 删除表空间的权限
drop user 删除用户的权限
execute any procedure 执行任意存储过程的权限
execute function 执行存储函数的权限
execute package 执行存储包的权限
execute procedure 执行用户存储过程的权限
force any transaction 管理未提交的任意事务的输出权限
force transaction 管理未提交的用户事务的输出权限
grant any privilege 授予任意系统特权的权限
grant any role 授予任意角色的权限
index table 给表加索引的权限
insert any table 向任意表中插入行的权限
insert snapshot 向快照中插入行的权限
insert table 向用户表中插入行的权限
insert view 向用户视图中插行的权限
lock any table 给任意表加锁的权限
manager tablespace 管理(备份可用性)表空间的权限
references table 参考表的权限
restricted session 创建有限制的数据库会话的权限
select any sequence 使用任意序列的权限
select any table 使用任意表的权限
select snapshot 使用快照的权限
select sequence 使用用户序列的权限
select table 使用用户表的权限
select view 使用视图的权限
unlimited tablespace 对表空间大小不加限制的权限
update any table 修改任意表中行的权限
update snapshot 修改快照中行的权限
update table 修改用户表中的行的权限
update view 修改视图中行的权限