在进行DATA GUARD的物理备库切换前需要注意:
1,确认主库和从库间网络连接通畅;
2,确认没有活动的会话连接在数据库中;
3,PRIMARY数据库处于打开的状态,STANDBY数据库处于MOUNT状态;
4,确保STANDBY数据库处于ARCHIVELOG模式;
5,如果设置了REDO应用的延迟,那么将这个设置去掉;
6,检查主备库初始化参数是否正确
本次测试实验参数如下:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Prod
备库node2的参数
db_unique_name=node2
log_archive_config='dg_config=(node1,node2)'
*.log_archive_dest_1='location=g:\database\oradata\node2\arch
valid_for=(all_logfiles,all_roles)
db_unique_name=node2'
log_archive_dest_2='service=node1 lgwr async
valid_for=(online_logfiles,primary_role)
db_unique_name=node1'
log_archive_dest_state_1=enable
log_archive_dest_state_2=enable
fal_server=node1
fal_client=node2
db_file_name_convert='g:\database\oradata\node1','g:\database\oradata\node2'
log_file_name_convert='g:\database\oradata\node1','g:\database\oradata\node2'
主库node1的参数
*.db_unique_name='NODE1'
*.fal_client='NODE1'
*.fal_server='NODE2'
*.log_archive_config='dg_config=(node1,node2)'
*.log_archive_dest_1='location=g:\database\oradata\node1\arch valid_for=(all_logfiles,all_roles) db_unique_name=node1'
*.log_archive_dest_2='service=node2 lgwr sync valid_for=(online_logfiles,primary_role) db_unique_name=node2'
*.log_file_name_convert='g:\database\oradata\node2','g:\database\oradata\node1'
-------------------------------------------------------------------------
登陆PRIMARY数据库:
[oracle@zhong ~]$ sqlplus "/ as sysdba"
SQL> SET SQLP 'NODE1> '
NODE1> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
SWITCHOVER_STATUS
SESSIONS ACTIVE
NODE1> SELECT COUNT(*) FROM V$SESSION WHERE USERNAME IS NOT NULL;
1
虽然当前数据库的状态是SESSIONS ACTIVE而不是TO STANDBY,但是查询V$SESSION会话,确认除了当前会话外,其他都是系统会话,那么就可以在主库进行SWITCHOVER切换了:
Node1:>alter database commit to switchover to physical standby;
Node1:>shutdown immediate;
ORA-01507: database not mounted
ORACLE instance shut down.
node1:>startup mount
重启数据库,启动到MOUNT状态,注意,9i及以前版本需要START NOMOUNT,然后ALTER DATABASE MOUNT STANDBY DATABASE。
下面登陆STANDBY数据库:
[oracle@zhong ~]$ sqlplus "/ as sysdba"
SQL> SET SQLP 'NODE2> '
Node2:>select switchover_status,database_role from v$database;
SWITCHOVER_STATUS DATABASE_ROLE
TO PRIMARY PHYSICAL STANDBY
下面就可以将STANDBY数据库切换到PRIMARY数据库:
NODE2> alter database commit to switchover to primary;
node2:>select instance_name,status from v$instance;
INSTANCE_NAME STATUS
node2 STARTED
node2:>shutdown immediate
ORA-01507: database not mounted
ORACLE instance shut down.
node2:>startup
至此SWITCHOVER切换完成
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23073818/viewspace-716318/,如需转载,请注明出处,否则将追究法律责任。