以下转自:http://blog.itpub.net/34596/viewspace-592274/  作者:myhuaer


又听到有人说Oracle OMF 能减轻DBA 的工作量,Oracle 数据库服务器自己创建数据文件和自动销毁不再需要的文件。
作为一个真正意义上的DBA 来看,Oracle OMF 无非是一个鸡肋产品,对DBA 来说根本就没有实际意义,更无法减轻DBA 的工作负担(如果少打几个字符也算的话),反而在后面维护增加的负担,更有甚者会对数据库造成危害。
先看Oracle 官方解释
Oracle managed file (OMF)
A file that is created automatically by the Oracle database server when it is needed and automatically deleted when it is no longer needed.
如何判断你的数据库是否为支持OMF

SQL> show parameter db_create_file_dest;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest                  string

如果Value 为空则不支持,有值则支持。
如何设置DB 支持?
修改初始化参数文件
[oracle@itc-test9 dbs]more initOCM.ora
.......
*.user_dump_dest='/disk/oracle/admin/OCM/udump'
db_create_file_dest = '/disk/oracle/oradata'

使用 ALTER SYSTEM 命令动态设置

SQL> alter system set db_create_file_dest='/disk/oracle/oradata ;
System altered.
OMF有些用呢?
我大体总结一个一下就下面几点:
1: 创建Tablespace 是不需要写数据文件名称和大小 (default 100M,自动增长,Autoextend 为unlimited)
SQL> create tablespace omf;
Tablespace created.
Os:

[oracle@itc-test9 datafile]pwd
/disk/oracle/oradata/OCM/datafile
[oracle@itc-test9 datafile]ll
total 102512
-rw-r-----  1 oracle dba 104865792 Apr 29 16:13 o1_mf_omf_4zj30b2p_.dbf
 创建数据文件属性:

Name  /disk/oracle/oradata/OCM/datafile/o1_mf_omf_4zj30b2p_.dbf
Tablespace  OMF
Status  Online
File Size (KB)  102400
AutoExtend  Yes
Increment  100MB
Maximum File Size  32767MB
2:  向Tablespace 添加文件是只适用add datafile 就可以了,参数如1.

SQL> alter tablespace omf add datafile;
Tablespace altered.
Os
[oracle@itc-test9 datafile]ll
total 205024
-rw-r-----  1 oracle dba 104865792 Apr 29 16:13 o1_mf_omf_4zj30b2p_.dbf
-rw-r-----  1 oracle dba 104865792 Apr 29 16:28 o1_mf_omf_4zj3wj0v_.dbf
3: 可动态修改数据库创建文件的位置。

SQL> alter system set db_create_file_dest='/disk/oracle/oradata/OCM' ;
System altered.
不做测试了,和前面一样。
4: 删除Tablespace 时,后面对应的Datafile 在OS一并删除
SQL> drop tablespace omf;
Tablespace dropped.

[oracle@itc-test9 datafile]ll
total 0
 文件一并删除。
下面来说明一下我认为Oracle OMF 为鸡肋的原因:
1: 创建Tablespace 是不需要写数据文件名称和大小
  作为一个DBA 在维护DB 时就应该规划好数据文件存放的位置,命名规则和初始大小。
o1_mf_omf_4zj30b2p_.dbf 这样的文件你能看懂和那个Tablespace有关系嘛,更何况生产环境一般都几十个tablesapce 以上。找对应关系也会在日常维护过程中浪费很多时间。
2:向Tablespace 添加文件是只适用add datafile 就可以了
  观点如1.
3:动态调整文件存放位置
 如果你的数据文件存放位置一直要改的话,还是建议你好好规划一下。
4:连带删除数据文件
SQL> drop tablespace noomf including contents and datafiles;
Tablespace dropped.
 使用上面的语句一样能安全快捷的删除。
以上几点我认为Oracle OMF 为鸡肋,玩玩可以在生产环境使用就有点儿戏了。