OMF,全称是Oracle_Managed Files,即Oracle文件管理,使用OMF可以简化管理员的管理工作,不用指定文件的名字、大小、路径,其名字,大小,路径由oracle 自动分配。在删除不再使用的日志、数据、控制文件时,OMF也可以自动删除其对应的OS文件。
OMF 支持下列文件的自动管理:
表空间
日志文件 ( 联机 )
控制文件
前提条件:需要为这些类型文件设定相关参数。
1. 数据文件的OMF 管理:
数据文件管理参数: db_create_file_dest
db_create_file_dest:Oracle创建数据文件、临时文件时,在未明确指定路径的情况下的缺省路径
当db_create_online_log_dest_n未指定时,也作为联机日志文件和控制文件的缺省路径。
测试:
SYS@prod> CREATE TABLESPACE a;
create tablespace s
ERROR at line 1:
ORA-02199: missing DATAFILE/TEMPFILE clause
当未使用OMF时,不指定表空间数据文件具体路径以及大小会报错。
查看db_create_file_dest参数:
SYS@prod>show parameter db_create_file_dest;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest string
设定db_create_file_dest参数
SQL> ALTER SYSTEM SET db_create_file_dest = '/u01/app/oracle/oradata/ omf ';
System altered.
再次查看:
SYS@prod>show parameter db_create_file_dest;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest string /u01/app/oracle/oradata/omf
再次进行表空间创建:
SYS@prod>create tablespace a;
Tablespace created.
查看数据文件位置(v$datafile)
SYS@prod>select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/prod/system01.dbf
/u01/app/oracle/oradata/prod/sysaux01.dbf
/u01/app/oracle/oradata/prod/undotbs01.dbf
/u01/app/oracle/oradata/prod/users01.dbf
/u01/app/oracle/oradata/prod/example01.dbf
/u01/app/oracle/oradata/prod/t1.dbf
/u01/app/oracle/oradata/prod/tbs03.dbf
/u01/app/oracle/oradata/prod/tbs04.dbf
/u01/app/oracle/oradata/omf/PRIDB/datafile/o1_mf_a_hf916n12_.dbf
9 rows selected.
由于创建该表空间时未指定数据文件大小,查看数据文件大小:
SYS@prod>select name,bytes from v$datafile;
/u01/app/oracle/oradata/omf/PRIDB/datafile/o1_mf_a_hf916n12_.dbf
104857600 -100M
创建时也可仅指定数据文件大小:
SYS@prod>create tablespace b datafile size 10M;
Tablespace created.
SYS@prod>select name,bytes from v$datafile;
NAME BYTES
-------------------- ----------
/u01/app/oracle/orad 10485760
ata/omf/PRIDB/datafi
le/o1_mf_b_hf91cgo8_
.dbf
创建日志组:
SYS@prod>alter database add logfile group 8;
Database altered.
不需要指定日志组位置以及日志组大小。
由于没有配置db_create_online_log_dest_n
所以OMF 自动创建的日志组位置也在 db_create_file_dest 参数指定的位置处。
SYS@prod>select member from v$logfile;
/u01/app/oracle/oradata/omf/PRIDB/onlinelog/o1_mf_8_hf91h666_.log
SYS@prod>alter database drop logfile group 8;
Database altered.
删除表空间时,对于使用了OMF生成的数据文件将随着表空间的删除一起被删除 :
SYS@prod>drop tablespace a;
Tablespace dropped.
SYS@prod>drop tablespace b;
Tablespace dropped.
[oracle@service1 datafile]$ pwd
/u01/app/oracle/oradata/omf/PRIDB/datafile
[oracle@service1 datafile]$ ls
对于未采用OMF来创建的表空间,在删除表空间之后,其数据文件并没有删除,v$datafile视图中被删除 。
对于未采用OMF 来创建的表空间,在删除表空间之后,数据文件也随之删除。
Drop tablespace including datafile and contents
总结:
1. 使用 OMF 需要指定参数设置。
2. 使用 OMF 创建表空间 create tablespace a 。
3. 未使用 OMF 创建表空间 create tablespace a datafile ‘ xxx ’ size xxM 。
4. 使用 OMF 也可以自动创建 undo 和临时表空间。