Oracle OMF文件管理

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


请使用浏览器的分享功能分享到微信等