12.4 如何创建OMF表空间

数据库创建后,我们还可以根据需要,在数据库中创建新的表空间,或者向一个已经存在的表空间中添加新的数据文件。这些数据文件可以是常规文件,也可以是Oracle管理的文件。

如果设置了初始化参数DB_CREATE_FILE_DEST,那么当执行CREATE TABLESAPCE语句创建表空间时,可以省略DATAFILE子句。如果使用了DATAFILE子句,可以不指定文件名。在这两种情况下,将创建Oracle管理的数据文件,数据文件的存储位置由初始化参数DB_CREATE_FILE_DEST指定,文件的默认大小为100MB,并且可以自动扩展。如果没有设置这个初始化参数,表空间将创建失败。可以在DATAFILE子句中为数据文件指定相关的属性,如初始大小、自动扩展等,文件名称可以省略。如果通过SIZE关键字为数据文件指定了初始大小,则必须使用AUTOEXTEND关键字指定它的自动扩展属性,否则该数据文件将没有自动扩展属性。

当执行ALTER TABLESPACE语句向表空间中添加数据文件时,可以省略ADD DATAFILE子句。如果使用了ADD DATAFILE子句,可以不指定文件名。添加数据文件的情况与创建新的表空间的情况类似。

初始化参数的值可以在参数文件中设置,也可以在数据库运行过程中动态修改。例如,考虑以下语句序列:


SQL>ALTER SYSTEM SET DB_CREATE_FILE_DEST='/export/home/Oracle/oradata4';

SQL>CREATE TABLESPACE tbs1;

SQL>CREATE TABLESPACE tbs2 DATAFILE SIZE 100M SIZE 50M AUTOEXTEND ON;


在上述语句中,首先通过ALTER SYSTEM语句修改初始化参数DB_CREATE_FILE_DEST的值,然后按照默认方式创建表空间tbs1,最后创建了表空间tbs2。在表空间tbs2中有两个数据文件,其中第一个数据文件的初始化大小为100MB,不能自动扩展。第二个数据文件的初始化大小为50MB,可以自动扩展。在创建以上两个表空间时没有指定数据文件的存储位置和名称,因此这些数据文件的存储位置均由初始化参数DB_CREATE_FILE_DEST指定,文件的名称按照Oracle的命名规则自动指定。

如果要向一个已经存在的表空间中添加新的数据文件,情况是类似的。例如,假设已经设置了初始化参数DB_CREATE_FILE_DEST,以下语句将向表空间tbs1中添加一个数据文件,它的初始化大小为50MB,可自动扩展,并且每次扩展1024KB,文件的最大大小为200M。


SQL>ALTER TABLESPACE tbs1

ADD DATAFILE SIZE 50M AUTOEXTEND ON NEXT 1024K MAXSIZE 200M;


对于临时表空间和UNDO表空间,无论是创建新的表空间,还是向表空间中添加新数据文件,采用的方法与普通表空间类似,这里不再详细描述。