oracle11g broker主库异常断电后的测试

来源:互联网 发布:js 高精度计算 编辑:程序博客网 时间:2024/06/12 22:51

测试了11g 物理dg情况下主库异常断电的测试。
发现主库在异常断电后,broker通过从库登录后,show configuration;等待很长时间返回:
Configuration Status:
ORA-16662: network timeout when contacting a database
DGM-17017: unable to determine configuration status

switchover to cronfun_pri;
Performing switchover NOW, please wait…
Error: ORA-12543: TNS:destination host unreachable
Error: ORA-16625: cannot reach database “cronfun_stdby2”

Failed.
Unable to switchover, primary database is still “cronfun_stdby2”
看来broker的switchover功能只能是在主库运行良好的情况下使用,如果想在主库异常断电能切换到从库,需要设置使用
Fast-Start Failover:
如果主库在遇到异常后,无法启动,switchover无法使用,并且fast-start failover没有配置的时候,需要进行手工的failover操作,使用dgmgrl可以进行完全的和马上的两种方式的failover
完全的failover在保护模式下会自动最大限度的恢复redo,也会避免禁用备库,可以使得备库作为新主库的备库。
如果转移的目标是物理备库或快照备库,原来的主库一定要reinstated或重建来成为新主库的备库。如果一些备库应用的redo比新主库应用的还要多,那么broker会禁用那些备库,被broker禁用的备库必须要reinstated或重建。
如果转移的目标是逻辑备库,那么原主库和所有物理,快照备库都会被禁用,如果主库的闪回启用了,可以进行reinstated,物理备库和快照备库必须重建。
如果原主库可以mount,那么可以使用alter system flush redo语句flush没有发送的redo到目标备库,如果这个操作成功了,那么可能没有数据丢失,即使主库不是在最大保护模式的级别。

马上的failvoer是一个快速的failover,一旦启用了没有额外的数据被应用就,另一个结果就是别的库都会被禁用,必须reinstated或重建,所以推荐是进行完整的failover。

failover步骤
1确定failover目标,推荐目标是物理备库,并且延时最小的,通过broker可以看到
2在broker中执行
DGMGRL> failover to db__name
这种的转移是完全的转移,会应用所有接受到的redo,如果执行的是failover to db_name immeidate那么执行的是immediate failover,这种情况下是不会应用接受到的redo的,如果主库能mount,可以flush redo到从库注册下,然后failover这样损失的数据会很少,甚至是0.
3如果原主库的flashback功能启用了,那么可以使用broker的reinstate命令重建。
下面是测试,原主库是cronfun_stdby2,断电关机后,进行failover到cronfun_pri,这个dgmgrl是连接到cronfun_pri执行的
DGMGRL> failover to cronfun_pri;
Performing failover NOW, please wait…
Failover succeeded, new primary is “cronfun_pri”
DGMGRL> show configuration;

Configuration - ProdBroker

Protection Mode: MaxPerformance
Databases:
cronfun_pri - Primary database
cronfun_stdby - Physical standby database
cronfun_stdby2 - Physical standby database (disabled)
ORA-16661: the standby database needs to be reinstated

Fast-Start Failover: DISABLED

Configuration Status:
SUCCESS
可以看到提示原主库是diabled状态需要reinstated
要reinstate一个库,需要做下面的操作:
1restart库到mount状态,需要保证flashback启用
2dgmgrl连接到新主库
3使用dgmgrl reinstate库
DGMGRL> REINSTATE DATABASE cronfun_stdby2;
我这个提示下面的错误
DGMGRL> REINSTATE DATABASE cronfun_stdby2;
Reinstating database “cronfun_stdby2”, please wait…
Error: ORA-16827: Flashback Database is disabled

Failed.
Reinstatement of database “cronfun_stdby2” failed
但是我的flashback database是打开了的,不去追究了,直接重新创建
重建步骤:
1创建rman,创建备库控制文件
2传输到备库,启动到nomount
3rman恢复
重建好后,需要在broker中启用database
enable database cronfun_stdby2;
我测试用的是11.0.2.0,在上面重建的步骤中,rman恢复后,在开启数据库的时候,总是提示备库需要恢复,一直在等待归档日志传输过来,卡到那里了,日志中也没有报错,重新shutdown再启动后就好了。能正常打开。

0 0
原创粉丝点击