暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

ORACLE OMF

最帅dba工作笔记 2018-08-07
1454

我们今天说一说Oracle简化管理机制oracle managed files OMF

OMF是在oracle10G后出现的。

优点:不用指定数据文件路径大小,名字等。

          以上描述等可以根据系统自动分配。

可以实现数据文件,日志文件,控制文件的自动管理

1.数据文件

这里取决一个参数 

db_create_file_dest 文件路径在这里 默认大小为100M

在之前创建tablespace的时候为

create tablespace t datafile '/oracle/21321432432.dbf' size 100m;

现在采用的是

SQL> show parameter db_create_file_dest;

NAME                     TYPE     VALUE

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

db_create_file_dest             string

SQL> select name from v$datafile;

NAME

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

/oracle/app/oracle/oradata/dd/system01.dbf

/oracle/app/oracle/oradata/dd/sysaux01.dbf

/oracle/app/oracle/oradata/dd/undotbs01.dbf

/oracle/app/oracle/oradata/dd/users01.dbf

SQL> alter system set db_create_file_dest = '/oracle/app/oracle/oradata/dd';

System altered.

SQL> show parameter db_create_file_dest

NAME                     TYPE     VALUE

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

db_create_file_dest             string     oracle/app/oracle/oradata/dd

SQL>create tablespace t;

Tablespace created.

SQL> select name from v$datafile;

NAME

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

/oracle/app/oracle/oradata/dd/system01.dbf

/oracle/app/oracle/oradata/dd/sysaux01.dbf

/oracle/app/oracle/oradata/dd/undotbs01.dbf

/oracle/app/oracle/oradata/dd/users01.dbf

/oracle/app/oracle/oradata/dd/DD/datafile/o1_mf_t_f4rkxzz1_.dbf

这里发现创建表空间的时候没有那么复杂,创建的数据文件会自动创建目录和名字,大小默认为100M,且为自扩展,步长为100M,increment_by为12800个块。

创建一个可控大小的数据文件:

create tablespace t1 datafile 10M ;

路径不用描述;

现在如果drop tablespace t;

那么datafile也会跟着删除;

在不使用OMF的时候,删除tablespace:

drop tablespace t ; 只会删除其表空间,但是数据文件依旧还在。

drop tablespace t include contents and datafiles; 这样删除会将数据文件跟着一起删除。

如果没有删除数据文件,想要创建一个表空间重用该数据文件:

create tablespace t datafile ' /oracle/t.dbf' reuse;即可

2. 日志文件的简化管理:

show patameter  db_create_online 

SQL> show parameter db_create_online_log_dest

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

这里表示每个日志组下面存在五个成员。

一般情况下,一个组下有两个成员即可,现在启用前两个参数;

如果没有修改上面所提到的参数,直接添加日志组文件

alter database add logfile ;

这样直接添加的话会将日志文件直接添加到数据文件目录下,如果开启闪回区,也会在闪回区下创建一个文件。

因为show parameter db_recovery这也是一个OMF的路径。

SQL> show parameter db_recovery

NAME                     TYPE     VALUE

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

db_recovery_file_dest             string

db_recovery_file_dest_size         big integer 0

现在操作日志组

select * from v$logfile;

    GROUP# STATUS  TYPE    MEMBER                    IS_

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

     3       ONLINE  /oracle/app/oracle/oradata/dd/redo03.log NO

     2       ONLINE  /oracle/app/oracle/oradata/dd/redo02.log NO

     1       ONLINE  /oracle/app/oracle/oradata/dd/redo01.log NO

SQL> alter database add logfile;

Database altered.

SQL> select member from v$logfile;

MEMBER

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

/oracle/app/oracle/oradata/dd/redo03.log

/oracle/app/oracle/oradata/dd/redo02.log

/oracle/app/oracle/oradata/dd/redo01.log

/oracle/app/oracle/oradata/dd/DD/onlinelog/o1_mf_4_f4rwkcq6_.log    -----这里没有开启闪回区。

现在采用参数修改:

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

SQL>! mkdir /home/oracle/u01    

SQL>! mkdir /home/oracle/u02

SQL> alter system set db_create_online_log_dest_1 = '/home/oracle/u01';

System altered.

SQL> alter system set db_create_online_log_dest_2='/home/oracle/u02';

System altered.

 

SQL> show parameter db_create_online

NAME                     TYPE     VALUE

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

db_create_online_log_dest_1         string     /home/oracle/u01

db_create_online_log_dest_2         string     /home/oracle/u02

db_create_online_log_dest_3         string

db_create_online_log_dest_4         string

db_create_online_log_dest_5         string

SQL>

SQL> alter database add logfile;

Database altered.

SQL> select * from v$log;    

    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE      MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME

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

     1        1           4   52428800       512        1 NO  CURRENT              972490 03-JAN-18     2.8147E+14

     2        1           2   52428800       512        1 NO  INACTIVE              948090 02-JAN-18         960763 02-JAN-18

     3        1           3   52428800       512        1 NO  INACTIVE              960763 02-JAN-18         972490 03-JAN-18

     4        1           0  104857600       512        1 YES UNUSED               0              0

     5        1           0  104857600       512        2 YES UNUSED               0              0

SQL> select * from v$logfile;

   GROUP# STATUS  TYPE    MEMBER                                  IS_

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

     3       ONLINE  /oracle/app/oracle/oradata/dd/redo03.log                  NO

     2       ONLINE  /oracle/app/oracle/oradata/dd/redo02.log                  NO

     1       ONLINE  /oracle/app/oracle/oradata/dd/redo01.log                  NO

     4       ONLINE  /oracle/app/oracle/oradata/dd/DD/onlinelog/o1_mf_4_f4rwkcq6_.log      NO

     5       ONLINE  /home/oracle/u01/DD/onlinelog/o1_mf_5_f4rxo5xr_.log              NO

     5       ONLINE  /home/oracle/u02/DD/onlinelog/o1_mf_5_f4rxo9l2_.log              NO

6 rows selected.

每个日志组下具有两个成员。

也可以指定一个组:

alter database add logfile group 6; 这个只能创建一个新的组,一个不存在的组。

OMF不可以添加组的成员,但是可以添加组

之前不使用OMF的时候,可以添加组成员的语句是

alter database add logfile member '/oracle/app/oracle/oradata/dd/dd/redo04.log' to group 3;

删除日志文件

alter database drop logfile group 7;  物理文件也会被删除。

3.控制文件的OMF

这里想要使用OMF的时候需要将parameter当中的control_file的参数reset 掉,否则没有办法使用OMF

alter system reset control_files scope=spfile sid=dd;

这里的参数

使用的和日志文件一样

db_create_online_log_dest的路径,指定几个路径,在创建控制文件的时候也会创建几个。在手工建库的时候会有此种情况



本文分享自微信公众号 - 最帅dba工作笔记,如有侵权,请联系 service001@enmotech.com 删除。
最后修改时间:2019-12-18 15:36:14
文章转载自最帅dba工作笔记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论