OMF是为了简化对数据文件的管理,靠参数DB_CREATE_FILE_DEST实现:
如果定义了DB_CREATE_FILE_DEST,则创建表空间就不需要制定数据文件位置、文件名称,数据文件会按照固定创建到特定位置,在删除表空间的时候对应的数据文件也会删除。
在文件系统不使用OMF时候,那么参数DB_CREATE_FILE_DEST参数为空:
SQL> show parameter db_create_file_dest
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest string
在没有使用OMF的时候,创建表空间必须要制定数据文件的位置,否则会报错:
SQL> create tablespace kel;
create tablespace kel
*
ERROR at line 1:
ORA-02199: missing DATAFILE/TEMPFILE clause
如果此时制定数据文件位置,那么即可创建:
SQL> create tablespace kel datafile '/home/oracle/oradata/kel/kel.dat' size 10M;
Tablespace created.
在没有使用OMF的时候,删除表空间,不会自动删除数据文件
SQL> drop tablespace kel;
Tablespace dropped.
查看数据文件的时候,数据文件没有被删除,依然存在:
[oracle@kel kel]$ ls -l kel.dat
-rw-r----- 1 oracle oinstall 10493952 Jun 29 19:33 kel.dat
要想同时删除掉数据文件,必须使用子句including contents and datafiles 或者使用操作系统的删除命令rm -rf datafilename
SQL> drop tablespace kel including contents and datafiles;
Tablespace dropped.
文件系统使用OMF时候,必须启用参数DB_CREATE_FILE_DEST
启用OMF:
SQL> alter system set db_create_file_dest='/home/oracle/oradata/kel/';
System altered.
SQL> show parameter db_create_file_dest
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest string /home/oracle/oradata/kel/
创建表空间:
SQL> create tablespace kel;
Tablespace created.
查看数据文件命名:
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/home/oracle/oradata/kel/system01.dbf
/home/oracle/oradata/kel/undotbs01.dbf
/home/oracle/oradata/kel/sysaux01.dbf
/home/oracle/oradata/kel/users01.dbf
/home/oracle/oradata/kel/KEL/datafile/o1_mf_kel_9v1mj9rv_.dbf
删除表空间时,数据文件会自动删除:
SQL> drop tablespace kel;
Tablespace dropped.
SQL> !ls -l /home/oracle/oradata/kel/KEL/datafile
total 0