ORACLE OMF介绍

本文介绍了Oracle Managed Files (OMF) 的基本概念,包括如何判断数据库是否支持OMF、如何设置支持OMF的方法,以及OMF的主要功能特点。文章还探讨了OMF的实际应用价值及其可能存在的局限性。

先看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就可以分配和命名这些文件。Oracle OMF使用如下的命名转换惯例。默认的文件大小为100M,并按如下格式命名:

where
%u is a unique 8 digit code
%g is the log file group number
%t is the tablespace name

Controlfiles ora_%u.ctl
Redo Log Files ora_%g_%u.log
Datafiles ora_%t_%u.dbf
Temporary Datafilesora_%t_%u.tmp

 

Oracle9i OMF工具还有一个新的警告日志消息(alert log message),它用来告诉我们OMF数据文件何时发生了改动。下面是关于警告日志的一个例子。

Fri Mar 23 01:44:46 2001
CREATE TABLESPACE omf1 DATAFILE SIZE 10M AUTOEXTEND OFF
Fri Mar 23 01:44:47 2001
Created Oracle managed file /databases/ed25/OMF1/ora_omf1_xcp6rg84.dbf
Completed: CREATE TABLESPACE omf1 DATAFILE SIZE 10M AUTOEXTE
Fri Mar 23 01:45:45 2001
drop tablespace omf1
Fri Mar 23 01:45:45 2001
Deleted Oracle managed file /databases/ed25/OMF1/ora_omf_xcp6rg84.dbf
Completed: drop tablespace omf1

 

 

不过也有人认为OMF对于一个专业的DBA来说是鸡肋,呵呵,没有太大的实际意义。

 

下面来说明一下我认为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 为鸡肋,玩玩可以在生产环境使用就有点儿戏了。

 

要关闭 Oracle 数据库中的 OMFOracle Managed Files)功能,需要通过修改数据库参数并手动管理相关文件来实现。OMF 是一种由 Oracle 自动管理数据库文件(如数据文件、日志文件和控制文件)的功能,其行为可通过初始化参数进行配置。 ### 修改初始化参数以禁用 OMF 关闭 OMF 的关键是修改以下初始化参数: - `db_create_file_dest` - `db_create_online_log_dest_n` - `db_recovery_file_dest` 这些参数用于指定 OMF 文件的默认存储位置。如果这些参数被设置为某个目录路径,则 OFMD(Oracle Managed Files Daemon)会自动创建和管理文件。若需禁用 OMF,应将这些参数设置为空或删除它们的值。 #### 示例:清除 OMF 参数 ```sql ALTER SYSTEM SET db_create_file_dest=''; ALTER SYSTEM SET db_create_online_log_dest_1=''; ALTER SYSTEM SET db_recovery_file_dest=''; ``` 此外,还需要确保在创建新文件时明确指定文件名和路径,而不是依赖 OMF 自动命名机制。例如,在创建表空间时,使用显式的数据文件路径: #### 示例:创建非 OMF 表空间 ```sql CREATE TABLESPACE users DATAFILE '/u01/oradata/users01.dbf' SIZE 50M; ``` 而不是使用 OMF 管理的方式: ```sql CREATE TABLESPACE users DATAFILE SIZE 50M; ``` ### 手动管理现有 OMF 文件 对于已经使用 OMF 创建的文件,可以通过以下方式将其转换为手动管理形式: 1. **查询当前 OMF 文件信息** 使用以下 SQL 查询获取现有数据文件、日志文件等路径信息: ```sql SELECT name FROM v$datafile; SELECT member FROM v$logfile; ``` 2. **关闭数据库并备份文件** 在修改任何文件前,确保数据库处于关闭状态,并对所有数据库文件进行完整备份。 3. **手动重命名和移动文件** 将 OMF 文件从原始位置复制或移动到新的自定义目录结构中,并根据需要更改文件名。注意,直接使用 `ALTER DATABASE RENAME FILE` 命令可能导致源文件被删除,因此建议在操作系统级别完成此操作后再更新控制文件中的路径信息[^1]。 4. **更新控制文件中的文件路径** 启动数据库至 mount 状态后,执行以下命令更新控制文件中的文件引用: ```sql ALTER DATABASE RENAME FILE '/original/path/to/datafile.dbf' TO '/new/path/to/datafile.dbf'; ``` 5. **打开数据库并验证** 完成所有文件路径更新后,打开数据库并验证文件是否正常访问。 ### 操作系统级别的资源限制调整 为了确保数据库实例运行稳定,特别是在切换回手动管理模式后,还需检查并适当调整操作系统的资源限制,包括进程数和文件句柄数。以下是典型的推荐设置[^2]: ```bash oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 ``` 可以通过编辑 `/etc/security/limits.conf` 文件来应用上述设置,并确保 Oracle 用户在登录时加载了正确的 shell 配置。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值