CREATE [UNDO|TEMPORARY] TABLESPACE tablespace_name
DATAFILE 'path/filename' [SIZE INTEGER[K| M]] [REUSE]
[AUTOEXTEND [OFF | ON ] ]
[NEXT INTEGER[K | M]]
[MAXSIZE [UNLIMITED | INTEGER[K | M]]]
[MINIMUM EXTENT INTEGER[K | M]]
[BLOCKSIZE integer [k]]
[DEFAULT STORAGE storage_clause]
[ONLINE | OFFLINE]
[LOGGING | NOLOGGING]
[FORCE LOGGING]
[EXTENT MANAGEMENT [DICTIONARY | LOCAL]]
[AUTOALLOCATE | UNIFORM [SIZE INTEGER[K | M]]]
[SEGMENT SPACE MANAGEMENT [AUTO | MANUAL]]
1、UNDO
说明系统将创建一个回滚表空间。
在9i中数据库管理员可以不必管理回滚段,只有建立了undo表空间,系统就会自动管理回滚段的分配,回收的工作。当然,也可以创建一般的表空间,在上 面创建回滚段.不过对于用户来说,系统管理比自己管理要好很多.如果需要自己管理,请参见回滚段管理的命令详解.
当没有为系统指定回滚表空间时,系统将使用system系统回滚段来进行事务管理。
2、tablespace_name表空间名满足oracle的命名规范即可。
3、DATAFILE 'path/filename' [SIZE INTEGER[K| M]] [REUSE]
指定一个或多个数据文件路径和文件名,[SIZE INTEGER[K| M]]用来指定表空间在数据文件中所占的空间大小,K|M是说大小的单位是K还是M。
[REUSE] 如果创建表空间指定的数据文件已经存在,则需要使用reuse注明,否则会报错。
ERROR at line 1:
ORA-01537: cannot add data file 'E:\oracle\oradata\10.1.0\ZRPTEST\TB_TEST1.dbf'
- file already part of database
4、[AUTOEXTEND [OFF | ON ] ]
禁止或允许自动扩展数据文件,默认情况下为OFF
5、[NEXT INTEGER[K | M]]
指定当需要更多盘区时分配给数据文件的磁盘空间,以K或M为单位。
6、[MAXSIZE [UNLIMITED | INTEGER[K | M]]]
指定允许分配给数据文件的最大磁盘空间,当为UNLIMITED时表示只有当磁盘空间满时,才不允许再扩展数据文件。
7、[MINMUM EXTENT INTEGER[K | M]]
指定盘区大小是指定大小的整数倍。即initial和next盘区大小应为minimum extent的整数倍,这个参数可以减小空间碎片,保证表空间的范围是这个值的整数倍。
【注:minextents 用于指定在创建时分配给段的盘区总数。使用这个参数,即使可用空间是不连续的,在创建对象时也能分配很大的空间。默认 值和最小值都是1。如果minextents>1,盘区大小以next和pctincrease为基础计算。】
8、[BLOCKSIZE integer [k]]
这个参数可以设定一个不标准的块的大小。如果要设置这个参数,必须设置db_block_size,至少一个db_nk_block_size,
并且声明的integer的值必须等于db_nk_block_size.
注意:在临时表空间不能设置这个参数。
9、 [DEFAULT STORAGE storage_clause]
表示为在该表空间创建的全部对象指定缺省的存储参数,没有指定时oracle将会为所有对象指定一些系统默认的存储参数。
storage_clause的语法格式如下:
STORAGE(
INITIAL integer[K|M] --为段分配第一个区的大小
NEXT integer[K|M] --为第一个扩展分区的大小
MINEXTENTS integer|UMLIMITED --创建段时分配的最小总区间数
MAXEXTENTS integer|UMLIMITED --创建段时分配的最大总区间数
PCTINCREASE integer --每次扩展增量的大小
FREELISTS integer --模式对象中每一个自由列表组中自由列表的数量,表、族或索引的每个空闲列表组中的列表数量。
FREELISTS GROUPS integer --指定表、族或索引的每个空闲列表组数量。
)
10、[ONLINE | OFFLINE]
ONLINE是指在创建表空间之后使该表空间立即对授权访问该表空间的用户可用。
OFFLINE是指offline以后,未完成的事物可以提交或回滚,但不能发起新的事物,也不能进行查询。OFFLINE的四种模式
(1)NORMAL:做检查点
alter tablespace users offline; alter tablespace users online;
(2)TEMPORARY:可以在数据文件损坏的情况下offline tablespace
alter tablespace users offline temporary; alter tablespace users online;
(3)IMMEDIATE:不做检查点,只有在归档模式下才可以offline tablespace,online时需要recover
alter tablespace users offline immediate; recover tablespace users; alter tablespace users online;
(4)FOR RECOVER:在归档模式下才可以offonline,在基
11、[LOGGING | NOLOGGING]
指定日志属性,它表示将来的表、索引等是否需要进行日志处理。默认值为LOGGING
12、[FORCE LOGGING]
使用这个子句指出表空间进入强制日志模式。此时,系统将记录表空间上对象的所有改变,除了临时段的改变。这个参数高于对象的nologging选项。
注意:设置这个参数指数据库不可以open并且进入读写模式。而且,在临时表空间和回滚表空间中不能使用这个选项。
13、[PERMANENT | TEMPORARY]
指出表空间的属性,是永久表空间还是临时表空间。永久表空间存放的是永久对象,临时表空间存放的是session生命期中存在的临时对象。
这个参数生成的临时表空间创建后一直都是字典管理,不能使用extent management local选项。
如果要创建本地管理表空间,必须使用create temporary tablespace
注意,声明了这个参数后,不能声明block size
14、[EXTENT MANAGEMENT [DICTIONARY | LOCAL]]
[AUTOALLOCATE | UNIFORM [SIZE INTEGER[K | M]]]
这是最重要的子句,说明了表空间如何管理范围。一旦你声明了这个子句,只能通过移植的方式改变这些参数。
如果希望表空间本地管理的话,声明local选项。本地管理表空间是通过位图管理的。autoallocate说明表空间自动分配范围,用户不能指定范围的大小。
只有9.0以上的版本具有这个功能。uniform说明表空间的范围的固定大小,缺省是1m。
不能将本地管理的数据库的system表空间设置成字典管理。oracle公司推荐使用本地管理表空间。
如果没有设置extent_management_clause,oracle会给他设置一个默认值。如果初始化参数compatible小于9.0.0,那么系统创建字典管理表空间。
如果大于9.0.0,那么按照如下设置:如果没有指定default storage_clause,oracle创建一个自动分配的本地管理表空间。
否则,如果指定了mininum extent,那么oracle判断mininum extent 、initial、next是否相等,以及pctincrease是否=0.如果满足以上的条件,oracle创建一个本地管理
表空间,extent size是initial.如果不满足以上条件,那么oracle将创建一个自动分配的本地管理表空间。
如果没有指定mininum extent。initial、那么oracle判断next是否相等,以及pctincrease是否=0。表示满足oracle创建一个本地管理表空间并指定uniform。
否则oracle将创建一个自动分配的本地管理表空间。
注意:本地管理表空间只能存储永久对象。如果你声明了local,将不能声明default storage_clause,mininum extent、temporary.
15、[SEGMENT SPACE MANAGEMENT [AUTO | MANUAL]]
指定 表空间段的管理方式,AUTO为系统自动管理,MANUAL为手工管理。默认为AUTO。