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
和临时表空间。