Oracle数据库之创建表空间与用户
一、创建表空间
基本语法表述:
CREATE TABLESPACE tablespace_name [DATAFILE datafile_spec1 [,datafile_spec2] ......] [ { MININUM EXTENT integer [K|M] |BLOCKSIZE integer [K] |[ONLINE|OFFLINE] |logging clause |[PERMANENT|TEMPORARY] |extent_manager_clause |segment_manager_clause} ]
详细的 CREATE TABLESPACE
语法描述请参考:http://docs.oracle.com/cd/E11882_01/server.112/e41084/statements_7003.htm#SQLRF01403
说明:
1.tablespace_name:
指出表空间的名称。
2.datafile_spec1:
指出表空间包含的数据文件。
[filename] [SIZE integer [ K | M ]] [REUSE] [AUTOEXTEND { OFF | ON [NEXT integer [ K | M ]] [MAXSIZE { UNLIMITED | integer [ K | M ] }] }]
其中filename是数据文件的全路径名;SIZE是文件的大小;REUSE表示文件是否被重用;AUTOEXTEND表明是否自动扩展;NEXT表示数据文件满了以后,扩展的大小。
3.MININUM EXTENT integer [K|M]:
指出在表空间中区的最小值。这个参数可以减小空间碎片,保证在表空间的范围是这个数值的整数倍。
4.BLOCKSIZE integer [K]
这个参数可以设定一个不标准的块的大小。如果要设置这个参数,必须设置db_block_size,至少一个db_nk_block_size,并且声明的integer的值必须等于db_nk_block_size。
注意:在临时表空间不能设置这个参数。
5.[ONLINE|OFFLINE]
改变表空间的状态。online使表空间创建后立即有效,这是缺省值,offline使表空间创建后无效。
6.logging clause
{ LOGGING | NOLOGGING }
这个子句声明这个表空间上所有的用户对象的日志属性(缺省是LOGGING),包括表,索引,分区,物化视图,物化视图上的索引,分区。
7.[PERMANENT|TEMPORARY]
指出表空间的属性,是永久表空间还是临时表空间。永久表空间存放的是永久对象,临时表空间存放的是session生命期中存在的临时对象。这个参数生成的临时表空间创建后一直都是字典管理,不能使用extent management local选项。如果要创建本地管理表空间,必须使用create temporary tablespace。
8.extent_management_clause
EXTENT MANAGEMENT { LOCAL [ AUTOALLOCATE | UNIFORM [ SIZE size_clause ] ] | DICTIONARY }
说明了表空间如何管理区。一旦你声明了这个子句,只能通过移植的方式改变这些参数。
如果希望表空间本地管理的话,声明local选项。本地管理表空间是通过位图管理的。autoallocate说明表空间自动分配范围,用户不能指定范围的大小。只有9.0以上的版本具有这个功能。uniform说明表空间的区的固定大小,缺省是1m。
9.segment_manager_clause
SEGMENT SPACE MANAGEMENT { AUTO | MANUAL }
说明了如何管理段。只为永久性的,本地管理表空间有关。可以指定是否应该跟踪在使用空闲列表或位图的表空间段的使用和自由空间。本选项不适用于临时表空间。
示例:
CREATE TABLESPACE tbs_01 DATAFILE 'demo.dbf' SIZE 40M AUTOEXTEND ON NEXT 5M MAXSIZE 100M ONLINE LOGGING EXTENT MANAGEMENT LOCAL UNIFORM SIZE 2M SEGMENT SPACE MANAGEMENT AUTO;
我们可以使用DROP TABLESPACE语句从数据库中删除表空间:
DROP TABLESPACE tablespace [ INCLUDING CONTENTS [ {AND | KEEP} DATAFILES ] [ CASCADE CONSTRAINTS ] ] ;
使用详情见:http://docs.oracle.com/cd/E11882_01/server.112/e41084/statements_9004.htm#SQLRF01807
示例:
DROP TABLESPACE tbs_01 INCLUDING CONTENTS AND DATAFILES;
二、创建用户
基本语法描述:
CREATE USER user IDENTIFIED BY password [DEFAULT TABLESPACE tablespace] [TEMPORARY TABLESPACE tablespace]
详细的语法与使用见:http://docs.oracle.com/cd/E11882_01/server.112/e41084/statements_8003.htm#SQLRF01503
说明:
1.user
用户名。
2.password
密码
3.DEFAULT TABLESPACE tablespace
用户默认使用的表空间。
4.TEMPORARY TABLESPACE tablespace
用户使用的临时表空间。
示例:
CREATE USER sidney IDENTIFIED BY out_standing1 DEFAULT TABLESPACE tbs_01 TEMPORARY TABLESPACE temp
用户创建完毕后,并不能马上使用,我们还需要为用户分配权限或角色:
GRANT privileges or role TO user;
若要撤销权限或角色:
REVOKE privileges or role FROM user;
示例:
-- 把CONNECT、RESOURCE角色授予用户sidney GRANT CONNECT,RESOURCE TO sidney; -- 撤销用户sidney的RESOURCE角色 REVOKE RESOURCE FROM sidney; -- 允许用户查看 EMP 表中的记录 GRANT SELECT ON emp TO sidney; -- 允许用户更新 EMP 表中的记录 GRANT UPDATE ON emp TO sidney;