从参数取值看Oracle OMF特性(3)

此时,我们测试创建数据文件和在线日志。

SQL> alter tablespace test add datafile size 10m autoextend off;

alter tablespace test add datafile size 10m autoextend off

ORA-02236: 文件名无效

SQL> alter database drop logfile group 4;

Database altered

SQL> alter database add logfile group 4 size 50m;

Database altered

数据文件创建失效,但是online redo log创建成功。

SQL> select group#, member from v$logfile;

GROUP# MEMBER

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

4 /u01/app/fast_recovery_area/ORA11G/onlinelog/o1_mf_4_9ppmd9f8_.log

7 rows selected

注意:两遍都清空的时候。数据文件OMF被关闭,但是online redo log创建还会在recovery area中有涉及动作。有一点需要想到,recovery area的配置是和另一个参数db_recovery_area_dest相关的,如果这个参数同时设置为空,那么还能成功吗?

SQL> alter system set db_create_file_dest='';

System altered

SQL> alter database add logfile group 5;

alter database add logfile group 5

ORA-02236: 文件名无效

上面实验说明了,在不配置db_create_log_dest_n系列参数情况下,db_create_file_dest负责了数据文件、在线日志的目录结构。同时,如果recovery area配置有效,online redo log都会维持在recovery area中有一个成员镜像文件。

4、针对db_create_log_dest_n实验

下面我们恢复现场,进行对db_create_log_dest的参数测试。同时恢复recovery_area_dest配置。

SQL> show parameter db_create;

NAME TYPE VALUE

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

db_create_file_dest string /u01/app/oradata

db_create_online_log_dest_1 string

db_create_online_log_dest_2 string

我们首先创建目录。

[Oracle@SimpleLinux app]$ mkdir -p /u01/app/oradata/ORA11GY/onlinelog

[oracle@SimpleLinux app]$ mkdir -p /u01/app/oradata/onlinelog

配置一个db_create_log参数。

SQL> alter system set db_create_online_log_dest_1='/u01/app/oradata/ORA11GY/onlinelog';

System altered

SQL> show parameter db_create;

NAME TYPE VALUE

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

db_create_file_dest string /u01/app/oradata

db_create_online_log_dest_1 string /u01/app/oradata/ORA11GY/onlinelog

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> alter database add logfile group 4 size 50m;

Database altered

SQL> select group#, member from v$logfile;

GROUP# MEMBER

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

(篇幅原因,有省略……)

4 /u01/app/oradata/ORA11GY/onlinelog/ORA11G/onlinelog/o1_mf_4_9ppmwmk6_.log

7 rows selected

我们看到了不同,虽然db_create_file参数设置为/u01/app/oradata,但是作为个性化的配置,新日志组成员还是使用了db_create_log_dest_1作为基准目录。同时在这个基准目录上进行OFA结构设置。另一个不同点是:当前recovery area中自动镜像消失了,没有自动创建!

再添加一个新的目录位置,查看效果。

SQL> alter system set db_create_online_log_dest_2='/u01/app/oradata/onlinelog';

System altered

SQL> show parameter db_create;

NAME TYPE VALUE

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

db_create_file_dest string /u01/app/oradata

db_create_online_log_dest_1 string /u01/app/oradata/ORA11GY/onlinelog

db_create_online_log_dest_2 string /u01/app/oradata/onlinelog

db_create_online_log_dest_3 string

尝试创建新的日志组:

SQL> alter database add logfile group 5 size 50m;

Database altered

SQL> select group#, member from v$logfile;

GROUP# MEMBER

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

(篇幅原因,有省略……)

5 /u01/app/oradata/ORA11GY/onlinelog/ORA11G/onlinelog/o1_mf_5_9ppn1178_.log

5 /u01/app/oradata/onlinelog/ORA11G/onlinelog/o1_mf_5_9ppn119j_.log

9 rows selected

当设置了db_create_log_dest_n系列参数之后,原有的recovery area镜像组成员不会出现了。_n设置的个数就是新日志组中成员的数目。

5、结论

从上面实验,我们可以看到OMF系列参数的设置规则。参数db_create_file_dest、db_create_log_dest_n和recovery area三者是相关的。

当db_create_file_dest设置,recovery area启用,但是log_dest没有设置的时候,数据文件和online redo log的OMF特性是开启的,而且在recovery area中会有自动的镜像成员文件创建。

当db_create_file_dest设置,recovery area不启用,log_dest也没有启用的时候,数据文件和日志的OMF开启,但是不会再recovery area中创建自动成员。

一旦db_create_file_dest被关闭,数据文件的OMF特性关闭。如果同时recovery area和log_dest也没有设置,日志文件OMF特性失效。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/623a29f8cc1f8efc0c87fa46be8658ea.html