OMF,全称是Oracle_Managed Files,即Oracle文件管理,使用OMF可以简化管理员的管理工作,不用指定文件的名字、大小、路径,其名字,大小,

路径由oracle 自动分配。在删除不再使用的日志、数据、控制文件时,OMF也可以自动删除其对应的OS文件。

OMF支持下列文件的自动管理:

表空间

日志文件(联机)

控制文件

前提条件:需要为这些类型文件设定相关参数。

一.数据文件的OMF管理

数据文件管理参数:db_create_file_dest

db_create_file_dest:Oracle创建数据文件、临时文件时,在未明确指定路径的情况下的缺省路径,当db_create_online_log_dest_n未指定时,

也作为联机日志文件和控制文件的缺省路径。

假定需要创建表空间s及数据文件

SQL> CREATE TABLESPACE s;  /*收到了错误信息*/

create tablespace s

*

ERROR at line 1:

ORA-02199: missing DATAFILE/TEMPFILE clause

SQL> show parameter db_create_file   /*查看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/orcl';

System altered.

--设定参数后,创建成功

SQL> CREATE TABLESPACE s;

Tablespace created.

SQL> SELECT NAME FROM v$datafile;  /*可以看到ORCL/datafile/o1_mf_s_5vrl1t7h_.dbf是Oralce自动创建的数据文件*/

NAME

--------------------------------------------------------------------------------

/u01/app/oracle/oradata/orcl/system01.dbf

/u01/app/oracle/oradata/orcl/undotbs01.dbf

/u01/app/oracle/oradata/orcl/sysaux01.dbf

/u01/app/oracle/oradata/orcl/users01.dbf

/u01/app/oracle/oradata/orcl/example01.dbf

/u01/app/oracle/oradata/orcl/Test.dbf

/u01/app/oracle/oradata/orcl/ORCL/datafile/o1_mf_s_5vrl1t7h_.dbf

/*查看物理文件,缺省为MB*/

SQL> ho ls -lh /u01/app/oracle/oradata/orcl/ORCL/datafile/o1_mf_s_5vrl1t7h_.dbf

-rw------- 1 oracle oinstall 101M Apr  7 16:54 /u01/app/oracle/oradata/orcl/ORCL/datafile/o1_mf_s_5vrl1t7h_.dbf

SQL> CREATE TABLESPACE t DATAFILE SIZE 10m;  /*也可指定数据文件的大小为MB*/

Tablespace created.

SQL> SELECT NAME FROM v$datafile;

NAME

--------------------------------------------------------------------------------

/u01/app/oracle/oradata/orcl/system01.dbf

/u01/app/oracle/oradata/orcl/undotbs01.dbf

/u01/app/oracle/oradata/orcl/sysaux01.dbf

/u01/app/oracle/oradata/orcl/users01.dbf

/u01/app/oracle/oradata/orcl/example01.dbf

/u01/app/oracle/oradata/orcl/Test.dbf

/u01/app/oracle/oradata/orcl/ORCL/datafile/o1_mf_s_5vrl1t7h_.dbf

/u01/app/oracle/oradata/orcl/ORCL/datafile/o1_mf_t_5vrlgqtl_.dbf

SQL> ho ls -lh /u01/app/oracle/oradata/orcl/ORCL/datafile/o1_mf_t_5vrlgqtl_.dbf

-rw------- 1 oracle oinstall 11M Apr  7 17:01 /u01/app/oracle/oradata/orcl/ORCL/datafile/o1_mf_t_5vrlgqtl_.dbf

--删除表空间时,对于使用了OMF生成的数据文件将随着表空间的删除一起被删除

SQL> DROP TABLESPACE t;

Tablespace dropped.

--查看物理文件,已经不存在

SQL> ho ls -lh /u01/app/oracle/oradata/orcl/ORCL/datafile/o1_mf_t_5vrlgqtl_.dbf

ls: /u01/app/oracle/oradata/orcl/ORCL/datafile/o1_mf_t_5vrlgqtl_.dbf: No such file or directory

--对于未采用OMF来创建的表空间,在删除表空间之后,其数据文件并没有删除,v$datafile视图中被删除

--下面是未使用OMF创建的x表空间及数据文件

SQL> CREATE TABLESPACE x DATAFILE '/u01/app/oracle/oradata/orcl/x.dbf' SIZE 10m;

Tablespace created.

SQL> SELECT NAME FROM v$datafile;

NAME

--------------------------------------------------------------------------------

/u01/app/oracle/oradata/orcl/system01.dbf

/u01/app/oracle/oradata/orcl/undotbs01.dbf

/u01/app/oracle/oradata/orcl/sysaux01.dbf

/u01/app/oracle/oradata/orcl/users01.dbf

/u01/app/oracle/oradata/orcl/example01.dbf

/u01/app/oracle/oradata/orcl/Test.dbf

/u01/app/oracle/oradata/orcl/ORCL/datafile/o1_mf_s_5vrl1t7h_.dbf

/u01/app/oracle/oradata/orcl/x.dbf

SQL> DROP TABLESPACE x;

Tablespace dropped.

SQL> SELECT NAME FROM v$datafile; /*视图中已不存在x.dbf的数据文件*/

NAME

--------------------------------------------------------------------------------

/u01/app/oracle/oradata/orcl/system01.dbf

/u01/app/oracle/oradata/orcl/undotbs01.dbf

/u01/app/oracle/oradata/orcl/sysaux01.dbf

/u01/app/oracle/oradata/orcl/users01.dbf

/u01/app/oracle/oradata/orcl/example01.dbf

/u01/app/oracle/oradata/orcl/Test.dbf

/u01/app/oracle/oradata/orcl/ORCL/datafile/o1_mf_s_5vrl1t7h_.dbf

SQL> ho ls /u01/app/oracle/oradata/orcl/x.dbf   /*操作系统中依然存在*/

/u01/app/oracle/oradata/orcl/x.dbf

--注意:使用OMF的时候会将物理文件删除,应特别注意使用

--使用下面的方法重建x表空间,然后使用including contents and datafiles 彻底删除表空间及物理文件

SQL> CREATE TABLESPACE X DATAFILE '/u01/app/oracle/oradata/orcl/x.dbf' REUSE;

Tablespace created.

SQL> DROP TABLESPACE x INCLUDING CONTENTS AND DATAFILES;

Tablespace dropped.

SQL> ho ls /u01/app/oracle/oradata/orcl/x.dbf

ls: /u01/app/oracle/oradata/orcl/x.dbf: No such file or directory

总结:使用OMF管理文件的方法

1.使用ALTER SYSTEM SET db_create_file_dest = '<path>'设置路径

2.查看刚刚的设置SHOW PARAMETER db_create_file_dest;

3.创建表空间及数据文件CREATE TABLESPACE tablespace_name

4.单独创建表空间CREATE TABLESPACE <> DATAFILE '<path>' SIZE <>;

5.也可以创建undo和temporary tablespace 。CREATE UNDO TABLESPACE tablespace_name ;CREATE TEMPORARY TABLESPACE tablespace_name;

6.删除表空间DROP TABLESPACE tablespace_name ;OMF情况下则删除物理文件,等效于未使用OMF创建,使用INCLUDING CONTENTS ANDDATAFILES 删除方式

二.日志文件的OMF管理

日志文件管理参数:db_create_online_log_dest_n

db_create_online_log_dest_n:Oracle创建联机日志文件和控制文件时,在未明确指定路径的情况下的缺省路径

--查看日志文件的参数,下面是未作设置的db_create_online参数

SQL> SHOW PARAMETER db_create_online

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

db_create_online_log_dest_1          string

db_create_online_log_dest_2          string

db_create_online_log_dest_3          string

db_create_online_log_dest_4          string

db_create_online_log_dest_5          string

--从上面可以看出系统预留了一个日志组个成员来形成OMF,一般情况下我们仅仅需要个成员即可。因为在此设定个参数文件

--下面是未设定的情况下创建日志文件,则默认为在数据文件路径及闪回区各放一个文件,因为上述两个路径都是OMF路径,如下:

SQL> SELECT MEMBER FROM v$logfile;

MEMBER

--------------------------------------------------------------------------------

/u01/app/oracle/oradata/orcl/redo03.log

/u01/app/oracle/oradata/orcl/redo02.log

/u01/app/oracle/oradata/orcl/redo01.log

/u01/app/oracle/oradata/orcl/ORCL/onlinelog/o1_mf_4_5vtgzjyz_.log

/u01/app/oracle/flash_recovery_area/ORCL/onlinelog/o1_mf_4_5vtgzlhb_.log

SQL> SHOW PARAMETER db_create_file_dest

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

db_create_file_dest                  string      /u01/app/oracle/oradata/orcl

SQL> show parameter db_recovery_file_dest

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

db_recovery_file_dest                string      /u01/app/oracle/flash_recovery

_area

db_recovery_file_dest_size           big integer 2G

--将日志文件存放到指定的disk1,disk2下面

SQL> ho mkdir /u01/app/oracle/disk1

SQL> ho mkdir /u01/app/oracle/disk2

SQL> ALTER SYSTEM SET db_create_online_log_dest_1 = '/u01/app/oracle/disk1';

System altered.

SQL> ALTER SYSTEM SET db_create_online_log_dest_2 = '/u01/app/oracle/disk2';

System altered.

SQL> ALTER DATABASE ADD logfile;

Database altered.

SQL> SELECT * FROM v$logfile; /*可以看到新的日志文件放到disk1,disk2下面*/

GROUP# STATUS  TYPE    MEMBER                                   IS_

---------- ------- ------- ---------------------------------------- ---

3         ONLINE  /u01/app/oracle/oradata/orcl/redo03.log  NO

2         ONLINE  /u01/app/oracle/oradata/orcl/redo02.log  NO

1         ONLINE  /u01/app/oracle/oradata/orcl/redo01.log  NO

4         ONLINE  /u01/app/oracle/oradata/orcl/ORCL/online NO

log/o1_mf_4_5vtgzjyz_.log

4         ONLINE  /u01/app/oracle/flash_recovery_area/ORCL YES

/onlinelog/o1_mf_4_5vtgzlhb_.log

5         ONLINE  /u01/app/oracle/disk1/ORCL/onlinelog/o1_ NO

mf_5_5vtlpxo0_.log

GROUP# STATUS  TYPE    MEMBER                                   IS_

---------- ------- ------- ---------------------------------------- ---

5         ONLINE  /u01/app/oracle/disk2/ORCL/onlinelog/o1_ NO

mf_5_5vtlpz4d_.log

SQL> alter database drop logfile group 5;

Database altered.

/*删除日志文件组*/

SQL> ALTER DATABASE DROP logfile GROUP 4;

Database altered.

SQL> SELECT group#,member FROM v$logfile;

GROUP# MEMBER

---------- ----------------------------------------

3 /u01/app/oracle/oradata/orcl/redo03.log

2 /u01/app/oracle/oradata/orcl/redo02.log

1 /u01/app/oracle/oradata/orcl/redo01.log

SQL> ho ls /u01/app/oracle/disk1/ORCL/onlinelog/o1_mf_5_5vtlpxo0_.log;

ls: /u01/app/oracle/disk1/ORCL/onlinelog/o1_mf_5_5vtlpxo0_.log: No such file or directory

总结:

1.当定义了db_recovery_file_dest 和db_create_file_dest路径,且没有定义db_create_online_log_dest_n的时候,

则OMF将日志文件存放在db_recovery_file_dest和db_create_file_dest路径下,而且日志组下为个成员

2.当定义了db_create_online_log_dest_1则将日志文件存放到db_create_online_log_dest_1

和db_create_file_dest路径下,且日志组下为个成员

3.当定义了db_create_online_log_dest_1和db_create_online_log_dest_2则存放到

db_create_online_log_dest_1和db_create_online_log_dest_2下

4.当定义了多个db_create_online_log_dest_n,则为每个组n个日志成员,且多路复用

5.增加日志文件的方法;

alter database add logfile;

alter database add logfile [group n];

alter database add logfile member '<dir>' to group [n]

/*add logfile member这个方法仅使用未使用OMF的日志文件,对于已经运用了OMF的日志组,无法使用该功能添加日志文件*/

6.删除日志文件组时,对于OMF的日志文件组,其对应的物理文件同时被删除

alter database drop logfile group [n]

三.使用OMF管理控制文件

使用OMF管理控制文件同管理日志文件类似,主要涉及到的也是db_create_online_log_dest_n参数

即控制文件默认存放在db_create_online_log_dest_n下,当定义了一个db_create_online_log_dest_n

则生成一个控制文件,当定义了多了则生成多个控制文件。

前提条件:去掉control_files参数

alter system reset control_files scope = spfile sid = '*';

以下是预留的OMF路径:

SQL> SHOW PARAMETER db_create

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

db_create_file_dest                  string      /u01/app/oracle/oradata/orcl

db_create_online_log_dest_1          string      /u01/app/oracle/disk1

db_create_online_log_dest_2          string      /u01/app/oracle/disk2

db_create_online_log_dest_3          string

db_create_online_log_dest_4          string

db_create_online_log_dest_5          string

SQL> show parameter db_recovery_file

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

db_recovery_file_dest                string      /u01/app/oracle/flash_recovery

_area

db_recovery_file_dest_size           big integer 2G

总结

参数                                         适用范围

db_create_file_dest_size          datafile,create tablespace<>

db_create_online_log_dest_n       logfile ,controlfile

db_recovery_file_dest             rman, archivelog,onlinelog

转载:http://blog.csdn.net/leshami/article/details/5478323

Oralce OMF 功能详解的更多相关文章

  1. iOS之UI--使用SWRevealViewController实现侧边菜单功能详解实例

    使用SWRevealViewController实现侧边菜单功能详解 下面通过两种方法详解SWRevealViewController实现侧边菜单功能: 1.使用StoryBoard实现   2.纯代 ...

  2. SVN功能详解

    SVN功能详解   TortoiseSVN是windows下其中一个非常优秀的SVN客户端工具.通过使用它,我们可以可视化的管理我们的版本库.不过由于它只是一个客户端,所以它不能对版本库进行权限管理. ...

  3. 转载]IOS LBS功能详解[0](获取经纬度)[1](获取当前地理位置文本 )

    原文地址:IOS LBS功能详解[0](获取经纬度)[1](获取当前地理位置文本作者:佐佐木小次郎 因为最近项目上要用有关LBS的功能.于是我便做一下预研. 一般说来LBS功能一般分为两块:一块是地理 ...

  4. UIViewController中各方法调用顺序及功能详解

    UIViewController中各方法调用顺序及功能详解 UIViewController中loadView, viewDidLoad, viewWillUnload, viewDidUnload, ...

  5. MySQL的用户密码过期功能详解

    MySQL的用户密码过期功能详解 作者:chszs,未经博主允许不得转载.经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs 先说明两个术语. Payment Ca ...

  6. 【转】 /etc/fstab功能详解

    [转] /etc/fstab功能详解 最近去客户现场时,遇到 了一个关于挂载文件/etc/fstab文件的问题,就写了一下/etc/fstab文件的作用一个文件中各个参数的含义.供大家参考有不正确的地 ...

  7. 在ASP.NET 5应用程序中的跨域请求功能详解

    在ASP.NET 5应用程序中的跨域请求功能详解 浏览器安全阻止了一个网页中向另外一个域提交请求,这个限制叫做同域策咯(same-origin policy),这组织了一个恶意网站从另外一个网站读取敏 ...

  8. .NET ORM框架 SqlSuagr4.0 功能详解与实践【开源】

    SqlSugar 4.0 ORM框架的优势 为了未来能够更好的支持多库分布式的存储,并行计算等功能,将SqlSugar3.x全部重写,现有的架构可以轻松扩展多库. 源码下载: https://gith ...

  9. SNS社交系统“ThinkSNS V4.6”活动应用功能详解及应用场景举例

    sns社交系统ThinkSNS目前拥有功能:朋友圈(微博).微吧(论坛).频道.积分商城.IM即时聊天.直播.问答.活动.资讯(CMS).商城.广场.找人.搜索.评论.点赞.转发.分享.话题.积分.充 ...

随机推荐

  1. 编写configure.ac

    configure.ac由一些宏组成(如果已经有源代码,你可以运行autoscan来产生一个configure.scan文件,在此基础修改成configure.ac将更加方便) 最基本的组成可以是下面 ...

  2. 2.JSR简介 - JavaEE基础系列

    JSR, Java Specification Request, Java规范请求; 也有的地方翻译为Java规范提案. 在前面的文章 1. Java EE简介 - JavaEE基础系列中, 简要介绍 ...

  3. php自动添加相关文章

    {pc:content action="relation" relation="$relation" id="$id" catid=&quo ...

  4. 正确设置Firefox下载文件文件名的方法

    不同的浏览器需要特殊设置,主要是火狐比较特殊,火狐可能给文件名加上“%0d%0a"这样的编码字符(换行的意思).不得不佩服网上的高手,这也能解决. [HttpGet] public File ...

  5. Jmeter-ForEach控制器

    ForEach Controller需要配合‘用户定义的变量’来使用,作用是参数化 名称:字面意思,ForEach Controller的名称 注释:字面意思 输入变量前缀:变量的前缀:如要使用的变量 ...

  6. 新Eclipse安装与配置 【来源网络根据实际情况自己补充】

    [第一次更新:20161108:http://blog.csdn.net/vvanity/article/details/51036678] Eclipse的官网地址:http://www.eclip ...

  7. a链接嵌套无效,嵌套链接最优解决办法

    <a>不支持嵌套.例如: <a href="#1">11111111111<a href="#2">22222222222& ...

  8. BZOJ AC倒序总结

    https://fcw.moe/?p=177

  9. 关于python中的循环

    参考下面这一篇: http://www.cnblogs.com/vamei/archive/2012/05/30/2526357.html 其中用range的方式最好!

  10. ballerina 学习四 如何进行项目结构规划

    备注: *   ballerina 程序员可以将代码放到一个文件或者一个项目目录 *   一个ballerina program是一个已经编译以及链接的二进制文件 *   package是一个包含ba ...