DataGuard物理standby配置 - 参数文件设置
在本次配置中:
主库 db_unique_name='dev01'
备库 db_unique_name='dev01dg'
以下只列出在配置DataGuard过程中需要注意和修改的启动参数。
备库可使用主库的pfile,按照以下流程修改即可。
1. db_name,数据库名字,需要保持同一个Data Guard中所有数据库db_name相同。
primary和standby相同
*.db_name='dev01'
# 静态参数,8个字符限制,大小写不敏感
2. db_unique_name,当db_name,DBID,db_domain都相同时(比如dataguard中的主备库),用来区分数据库的唯一名。
primary:
*.db_unique_name='dev01'
standby:
*.db_unique_name='dev01dg'
# 静态参数,30个字符限制,大小写不敏感
3. 以下参数需在备库端建立目录,并做相应修改
*.audit_file_dest='/u01/app/oracle/admin/dev01dg/adump'
*.background_dump_dest='/u01/app/oracle/admin/dev01dg/bdump'
*.control_files='/u01/oradata/dev01dg/control01.ctl','/u01/oradata/dev01dg/control02.ctl','/u01/oradata/dev01dg/control03.ctl'
*.core_dump_dest='/u01/app/oracle/admin/dev01dg/cdump'
*.db_recovery_file_dest='/u01/db_recovery_file'
*.user_dump_dest='/u01/app/oracle/admin/dev01dg/udump'
# 静态参数
4. remote_login_passwordfile,推荐设置参数值为exclusive,注意保证Data Guard中所有数据库的sys密码相同
primary:
*.remote_login_passwordfile='exclusive'
standby:
*.remote_login_passwordfile='exclusive'
# 静态参数
5. db_file_name_convert,主库和备库的数据文件路径转换。如果有多个,逐一指明对映关系。
primary:
*.db_file_name_convert='/u03/oradata/dev01','/u01/oradata/dev01dg'
standby:
*.db_file_name_convert='/u01/oradata/dev01dg','/u03/oradata/dev01'
# 静态参数
6. log_file_name_convert,主库和备库的online redo log文件路径转换。
primary:
*.log_file_name_convert='/u03/oradata/dev01','/u01/oradata/dev01dg'
standby:
*.log_file_name_convert='/u01/oradata/dev01dg','/u03/oradata/dev01'
# 静态参数
primary端和standby端相同
*.log_archive_format='arch_%d_%t_%r_%s.dbf'
# 静态参数
8. compatible,主数据库和备用数据库的oracle版本必须一致。
primary端:
*.compatible='10.2.0.4.0'
standby端:
*.compatible='10.2.0.4.0'
# 静态参数
9. log_archive_config,该参数通过DG_CONFIG设置同一个Data Guard中所有db_unique_name,以逗号分隔。
primary和standby相同
*.log_archive_config='DG_CONFIG=(dev01,dev01dg)'
# 动态参数
10. log_archive_dest_n与log_archive_dest_state_n,设置归档路径。
location即本地路径;service即tnsnames.ora中配置的远端服务,指向standby,此时的归档路径即为standby的归档路径。
这里的典型设置在搭建好dataguard以后为最大性能模式。
primary:
*.log_archive_dest_1='location=/u03/archive/dev01 valid_for=(all_logfiles,all_roles) db_unique_name=dev01'
*.log_archive_dest_2='service=dev01dg lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=dev01dg'
standby:
*.log_archive_dest_1='location=/u01/archive/dev01dg valid_for=(all_logfiles,all_roles) db_unique_name=dev01dg'
*.log_archive_dest_2='service=dev01 lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=dev01'
# 动态参数
log_archive_dest_state_n,参数默认值为enable,即激活定义的归档日志目录,允许日志传输服务传输redo log数据到指定的路径。
# 动态参数
11. fal_server和fal_client,FAL即Fetch Archive Log,其值为Oracle Net service name,即tnsnames.ora中的服务名。
设置这两个参数可以用来解决Archive Gaps。
一旦产生了gap,fal_client会自动向fal_server请求传输gap的archivelog。
设置了这2个参数,就不需要在产生gap时手动向standby注册归档日志了。
所需要做的就是确认主库有这些归档日志,并且主库的控制文件中有这些日志的注册信息。
fal_client设置为数据库自身的service name,fal_server设置为远端数据库的service name。
fal_server可以设置多个值,用逗号隔开。
primary:
*.fal_server='dev01dg'
*.fal_client='dev01'
standby:
*.fal_server='dev01'
*.fal_client='dev01dg'
# 动态参数
12. standby_file_management,如果primary 数据库数据文件发生修改(如新建,重命名等)则按照本参数的设置在standby中做相应修改。设为AUTO 表示自动管理。设为MANUAL表示需要手工管理。
primary:
*.standby_file_management='AUTO'
standby:
*.standby_file_management='AUTO'
# 动态参数
从Oracle 10gR2开始,lock_name_space和standby_archive_dest开始逐渐废弃,不需要在做设置。
由于有不少静态参数需要在主库设置,所以主库停机重启是不可避免的。
其中有些参数在主库和备库均有配置,是为了switchover切换。
listener.ora和tnsnames.ora的配置相对简单,保持主备库的tnsnames.ora一致,并且确认可以使用sysdba远程登录即可。
参数设置是配置DataGuard步骤中非常重要的一步,如果查看alert日志发现有错误或警告信息,首先就要再仔细检查一遍参数文件的配置是否正确。