下面我们可以观察一下默认OMF配置行为。首先是直接添加数据文件操作。
SQL> alter tablespace users add datafile size 100m autoextend off;
Tablespace altered
此时,新文件添加上,Oracle自动给予命名。
SQL> select file_name, file_id, tablespace_name from dba_data_files;
FILE_NAME FILE_ID TABLESPACE_NAME
------------------------------------------------------------- ---------- ------------------------------
/u01/app/oradata/ORA11G/datafile/o1_mf_users_9mnjs074_.dbf 4 USERS
/u01/app/oradata/ORA11G/datafile/o1_mf_users_9pplqldd_.dbf 6 USERS
(篇幅原因,有省略……)
6 rows selected
日志组添加,添加一个新的日志组。
SQL> alter database add logfile group 4 size 50m;
Database altered
SQL> select group#, member from v$logfile;
GROUP# MEMBER
---------- --------------------------------------------------------------------------------
(篇幅原因,有省略……)
4 /u01/app/oradata/ORA11G/onlinelog/o1_mf_4_9pplrks5_.log
4 /u01/app/fast_recovery_area/ORA11G/onlinelog/o1_mf_4_9pplrkwh_.log
8 rows selected
在默认情况下,db_create_log_dest是没有设置的。故采用延续的db_create_file_dest目录。并且会在recovery area中保留一个镜像备份,形成两份member成员的结构。
3、针对db_create_file_dest实验
下面我们尝试将db_create_file_dest参数指向一个新的位置。
[oracle@SimpleLinux app]$ pwd
/u01/app
[oracle@SimpleLinux app]$ mkdir -p /u01/app/oradata2
修改参数db_create_file_dest参数,该参数是支持动态修改的,修改之后不需要重新启动服务器。
SQL> alter system set db_create_file_dest='/u01/app/oradata2';
System altered
SQL> show parameter db_create_file_dest;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest string /u01/app/oradata2
创建数据文件和日志文件,查看效果。
SQL> create tablespace test datafile size 10m autoextend off extent management local uniform size 1m segment space management auto;
Tablespace created
SQL> select file_name, file_id, tablespace_name from dba_data_files;
FILE_NAME FILE_ID TABLESPACE_NAME
------------------------------------------------------------- ---------- ------------------------------
(篇幅原因,有省略……)
/u01/app/oradata2/ORA11G/datafile/o1_mf_test_9ppm1m8w_.dbf 7 TEST
7 rows selected
注意:OMF不是意味着对于OFA的背离。我们调整了参数取值之后,新文件创建只是在新的参数位置,使用OFA结构而已。原有的大写数据库名称,类型目录并没有改变。
在线日志测试:
SQL> alter database drop logfile group 4;
Database altered
SQL> alter database add logfile group 4 size 50m;
Database altered
新的日志位置:
SQL> select group#, member from v$logfile;
GROUP# MEMBER
---------- --------------------------------------------------------------------------------
(篇幅原因,有省略……)
4 /u01/app/oradata2/ORA11G/onlinelog/o1_mf_4_9ppm2y0x_.log
4 /u01/app/fast_recovery_area/ORA11G/onlinelog/o1_mf_4_9ppm2y3s_.log
8 rows selected
当更换db_create_file_dest之后,新的日志创建依然为两份,在新目录中一份,在recovery area中一份。
如果我们清空这个参数,将db_create参数都是空的话,是什么现象?
SQL> alter system set db_create_file_dest='';
System altered
SQL> show parameter db_create;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest string
db_create_online_log_dest_1 string