oracle文件管理OMF

时间:2024-08-16 22:03:02

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