8. 对新主库作添加实例前准备
新集群主库改log_ahcive_dest_1='', log_archive_dest_2='' (如果不修改,dbca时一定报错,应该是字符窜处理上的bug)。
9. 对新主库使用dbca敏捷添加instance
添加时新实例挑thread线索2 ,日志组挑3,4。undo挑undotablespace2 。
(默认值是thread线索3,日志组是5,6,undo是undotablespace3,这是机器顺延数值的结果。把它们改回来,忽略所有“已存在”报错,确认进度条走到底)。
10. 对新集群主库作dbca后续网络配置
检查新双实例集群主库的TNS和监听(保持对称配置), 特别还要检查新双实例集群主库所有实例上的local_listener应该='' ,取消注册多出来不对的监听器, 去掉所有实例上的remote_listener=''参数。
11. Grid界面重发现,敏捷生成Physical Standby的Broker的构造
加回dataguard(Manage existing standby database链接)。新双实例集群主库: Standby Archive Location 属性edit : 选盘阵路径'+FRA/库名/stdbyarch';应用实例选择第一个实例。 verify整个构造。
罕见故障处理:
如果出现日志partially apply的问题,说明日志被broker弄到/u01/app/Oracle/product/10.2.0/db_1/dbs下面。需要用rman拷到'+FRA/库名/stdbyarch': backup as copy archivelog sequence XXX thread XXX format '+FRA/库名/stdbyarch/1_XXX_123456.dbf' delete input ;
12. 手工切换准备(两边都是RAC环境使用GC切换一定会报错)
新双实例集群主库:alter system set dg_broker_start=false;原主库不要做。
13. 手工切换
确认主库和从库间网络连接通畅;
确认没有活动的会话连接在数据库中;
PRIMARY数据库处于打开的状态,STANDBY数据库处于MOUNT状态;确保STANDBY数据库处于ARCHIVELOG模式;
如果设置了REDO应用的延迟,那么将这个设置去掉;
确保配置了主库和从库的初始化参数,使得切换完成后,DATA GUARD机制可以顺利的运行。
如果是最大保护模式,先变成最大性能模式。
切换的顺序:先从主库到备用,再从备库到主库, 主备库都要停第二个实例(不作log apply的实例)。
srvctl stop instance xxx2 -d xxx
在第一个实例上主切备:
SQL> select DATABASE_ROLE from v$database;
DATABASE_ROLE
----------------
PRIMARY
SQL> select OPEN_MODE,PROTECTION_MODE,PROTECTION_LEVEL,SWITCHOVER_STATUS from v$database;
OPEN_MODE PROTECTION_MODE PROTECTION_LEVEL SWITCHOVER_STATUS
---------- -------------------- -------------------- ------------------
READ WRITE MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE TO STANDBY
SQL> alter database commit to switchover to physical standby with session shutdown ;
Database altered.
SQL> shutdown immediate;
ORA-01507: database not mounted
ORACLE instance shut down.
srvctl start database -d xxx -o mount
SQL> select DATABASE_ROLE from v$database;
DATABASE_ROLE
----------------
PHYSICAL STANDBY
SQL> select OPEN_MODE,PROTECTION_MODE,PROTECTION_LEVEL,SWITCHOVER_STATUS from v$database;
OPEN_MODE PROTECTION_MODE PROTECTION_LEVEL SWITCHOVER_STATUS
---------- -------------------- -------------------- ------------------
MOUNTED MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE TO PRIMARY
备切主:
srvctl stop instance xxx2 -d xxx
在第一个实例上:
SQL> select DATABASE_ROLE from v$database;
DATABASE_ROLE
----------------
PHYSICAL STANDBY
SQL> select OPEN_MODE,PROTECTION_MODE,PROTECTION_LEVEL,SWITCHOVER_STATUS from v$database;
OPEN_MODE PROTECTION_MODE PROTECTION_LEVEL SWITCHOVER_STATUS
---------- -------------------- -------------------- ------------------
MOUNTED MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE TO PRIMARY
SQL> alter database commit to switchover to primary [ with session shutdown ];
Database altered.
SQL> shutdown immediate;
ORA-01507: database not mounted
ORACLE instance shut down.
srvctl start database -d xxx
主库SESSIONS ACTIVE是正常primary状态下的结果。
alter system set dg_broker_start=false;