在Dataguard环境下,Primary和Standby之间是紧密关联的对象。很多单实例环境下常见的数据库管理动作,如表空间创建、数据文件添加、日志管理等都有很大的不同和差异。
本篇主要介绍在DG环境下,数据文件Data File和在线日志online redo log的管理操作。
1、环境介绍
笔者使用版本为Oracle 11.2.0.4,DG已经搭建完成。
SQL> select * from v$version;
BANNER
-----------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - Production
PL/SQL Release 11.2.0.4.0 - Production
CORE 11.2.0.4.0 Production
TNS for Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production
Primary端实例名称为ora11g,命名转换参数设置完成。数据文件如下:
ora11g
SQL> select file_name from dba_data_files;
FILE_NAME
-----------------------------------------------------------------
/u01/app/oradata/ORA11G/datafile/o1_mf_users_9mnjs074_.dbf
/u01/app/oradata/ORA11G/datafile/o1_mf_undotbs1_9mnjs068_.dbf
/u01/app/oradata/ORA11G/datafile/o1_mf_sysaux_9mnjs04h_.dbf
/u01/app/oradata/ORA11G/datafile/o1_mf_system_9mnjrzty_.dbf
SQL> show parameter convert;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert string ORA11G, ORA11GSY
log_file_name_convert string ORA11G, ORA11GSY
参数standby_file_management设置为AUTO,Oracle官方要求在DG环境下,取值为AUTO。
SQL> show parameter standby_file
NAME TYPE VALUE
------------------------------------ ----------- -------
standby_file_management string AUTO
Primary端日志情况如下:
SQL> select group#, type, member from v$logfile;
GROUP# TYPE MEMBER
---------- ------- --------------------------------------------------------------------------------
3 ONLINE /u01/app/oradata/ORA11G/onlinelog/o1_mf_3_9mnjx4n0_.log
3 ONLINE /u01/app/fast_recovery_area/ORA11G/onlinelog/o1_mf_3_9mnjx54c_.log
2 ONLINE /u01/app/oradata/ORA11G/onlinelog/o1_mf_2_9mnjwzpq_.log
2 ONLINE /u01/app/fast_recovery_area/ORA11G/onlinelog/o1_mf_2_9mnjx15f_.log
1 ONLINE /u01/app/oradata/ORA11G/onlinelog/o1_mf_1_9mnjwtj9_.log
1 ONLINE /u01/app/fast_recovery_area/ORA11G/onlinelog/o1_mf_1_9mnjwvdm_.log
4 STANDBY /u01/app/oradata/ORA11G/onlinelog/o1_mf_4_9nd01b56_.log
4 STANDBY /u01/app/fast_recovery_area/ORA11G/onlinelog/o1_mf_4_9nd01cpl_.log
5 STANDBY /u01/app/oradata/ORA11G/onlinelog/o1_mf_5_9nd04pps_.log
5 STANDBY /u01/app/fast_recovery_area/ORA11G/onlinelog/o1_mf_5_9nd04rpd_.log
6 STANDBY /u01/app/oradata/ORA11G/onlinelog/o1_mf_6_9nd04xjo_.log
6 STANDBY /u01/app/fast_recovery_area/ORA11G/onlinelog/o1_mf_6_9nd04yv7_.log
12 rows selected
Standby端名称为ora11gsy,对应参数配置和Primary端相同。数据文件和日志情况如下:
SQL> col file_name for a65
SQL> select file_name from dba_data_files;
FILE_NAME
---------------------------------------------------------
/u01/app/oradata/ORA11GSY/datafile/o1_mf_users_9mnjs074_.dbf
/u01/app/oradata/ORA11GSY/datafile/o1_mf_undotbs1_9mnjs068_.dbf
/u01/app/oradata/ORA11GSY/datafile/o1_mf_sysaux_9mnjs04h_.dbf
/u01/app/oradata/ORA11GSY/datafile/o1_mf_system_9mnjrzty_.dbf
SQL> select group#, type, member from v$logfile;
GROUP# TYPE MEMBER
---------- ------- --------------------------------------------------------------------------------
3 ONLINE /u01/app/oradata/ORA11GSY/onlinelog/o1_mf_3_9ndhov9r_.log
3 ONLINE /u01/app/fast_recovery_area/ORA11GSY/onlinelog/o1_mf_3_9ndhovov_.log
2 ONLINE /u01/app/oradata/ORA11GSY/onlinelog/o1_mf_2_9ndhoqbh_.log
(篇幅原因,有省略……)
6 STANDBY /u01/app/fast_recovery_area/ORA11GSY/onlinelog/o1_mf_6_9ndhpfvo_.log
12 rows selected
SQL> show parameter convert
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert string ORA11G, ORA11GSY
log_file_name_convert string ORA11G, ORA11GSY
我们首先进行数据文件创建过程实验。
2、数据文件管理实验
创建表空间,添加文件是我们经常进行的日常维护操作。搭建DG之后,是可以在Primary端直接创建文件,Oracle会在Standby端进行新文件创建动作。
注意:这个操作要满足两个前提。首先需要确认primary和standby端对应位置(convert过的目录)存在足够的存储空间。一旦由于空间问题引起standby端文件创建失败,额外处理比较麻烦。另一个确保standby_file_management参数取值auto,该参数的作用是将Primary和Standby文件创建动作绑定起来,进行自动同步操作。
--空间确认
[root@SimpleLinux ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 48G 15G 31G 33% /
tmpfs 2.0G 278M 1.8G 14% /dev/shm
在primary端创建表空间,使用OMF特性,由Oracle负责文件命名。
SQL> create tablespace dgtest datafile size 500m autoextend off
2 extent management local uniform size 1m
3 segment space management auto;
Tablespace created
文件确认。
SQL> select file_name from dba_data_files;
FILE_NAME
-----------------------------------------
/u01/app/oradata/ORA11G/datafile/o1_mf_users_9mnjs074_.dbf
/u01/app/oradata/ORA11G/datafile/o1_mf_undotbs1_9mnjs068_.dbf
/u01/app/oradata/ORA11G/datafile/o1_mf_sysaux_9mnjs04h_.dbf
/u01/app/oradata/ORA11G/datafile/o1_mf_system_9mnjrzty_.dbf
/u01/app/oradata/ORA11G/datafile/o1_mf_dgtest_9pck1kvs_.dbf
standby端文件创建:
SQL> select file_name from dba_data_files;
FILE_NAME
---------------------------------------------------
(篇幅原因,有省略……)
/u01/app/oradata/ORA11GSY/datafile/o1_mf_system_9mnjrzty_.dbf
/u01/app/oradata/ORA11GSY/datafile/o1_mf_dgtest_9pck215t_.dbf
注意一个细节:standby端创建了表空间dgtest的文件,但是和创建DG过程生成文件不同的是,文件名并不相同。说明:Oracle在这个过程,是自我应用OMF的。
standby端日志情况如下:
Sun May 04 12:37:55 2014
create tablespace dgtest datafile size 500m autoextend off
extent management local uniform size 1m
segment space management auto
ORA-604 signalled during: create tablespace dgtest datafile size 500m autoextend off
extent management local uniform size 1m
segment space management auto
...
Sun May 04 12:38:39 2014
Successfully added datafile 5 to media recovery
Datafile #5: '/u01/app/oradata/ORA11GSY/datafile/o1_mf_dgtest_9pck215t_.dbf'
上面实验的是Primary端应用OMF。如果是指定文件名称目录,效果如何呢?
SQL> create tablespace dgtest2 datafile '/u01/app/oradata/ORA11G/datafile/dgtest201.dbf' size 10m autoextend off
2 extent management local uniform size 1m
3 segment space management auto;
Tablespace created
SQL> select file_name from dba_data_files;
FILE_NAME
---------------------------------------
(篇幅原因,有省略……)
/u01/app/oradata/ORA11G/datafile/o1_mf_dgtest_9pck1kvs_.dbf
/u01/app/oradata/ORA11G/datafile/dgtest201.dbf
6 rows selected
注意,在Standby端,Oracle并没有进行文件转义,而是采用standby端的OMF策略创建文件。
SQL> select file_name, tablespace_name from dba_data_files;
FILE_NAME TABLESPACE_NAME
----------------------------------------------------------------- ------------------------------
(篇幅原因,有省略……)
/u01/app/oradata/ORA11GSY/datafile/o1_mf_dgtest_9pck215t_.dbf DGTEST
/u01/app/oradata/ORA11GSY/datafile/o1_mf_dgtest2_9pckjo3w_.dbf DGTEST2 (不同之处)
6 rows selected
日志信息:
Sun May 04 12:46:13 2014
Successfully added datafile 6 to media recovery
Datafile #6: '/u01/app/oradata/ORA11GSY/datafile/o1_mf_dgtest2_9pckjo3w_.dbf'
说明:我们虽然在Primary端创建文件采用直接文件指定的方法,但是对应到Standby端,还是会有OMF策略。
下面实验删除表空间:
--Primary端
SQL> drop tablespace dgtest2 including contents and datafiles;
Tablespace dropped
standby端对应的日志如下:
Sun May 04 12:53:20 2014
Recovery deleting file #6:'/u01/app/oradata/ORA11GSY/datafile/o1_mf_dgtest2_9pckjo3w_.dbf' from controlfile.
Deleted Oracle managed file /u01/app/oradata/ORA11GSY/datafile/o1_mf_dgtest2_9pckjo3w_.dbf
Recovery dropped tablespace 'DGTEST2'
删除文件会自动连带删除。注意:数据文件自动创建对于参数standby_file_management的依赖是强制性的。如果这个参数保持默认值manual,那么在创建过程中会出现错误。
下面我们讨论redo log的情况。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/628922/viewspace-1156189/ ,如需转载,请注明出处,否则将追究法律责任。