背景:应对发生灾难、故障和其他割接场合进行的灾备演练,包括主备切换和主机意外宕机。
一、主备切换(
switch over
)
#################
# primary
操作
#################
1
)确认主机打开方式
SQL> select DATABASE_ROLE,PROTECTION_MODE,open_mode from v$database;
2
)切换到备机模式
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY;
###############
# standby
操作
###############
1
)取消备机日志应用
SQL> alter database recover managed standby database cancel;
2
)切换到主机模式
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
3
)重启备库
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;
###############
# primary
操作
###############
1
)重启主库
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
2
)调整为“
READ ONLY
”状态
SQL> alter database open;
3
)应用日志
SQL> alter database recover managed standby database using current logfile disconnect;
4
)确认
open_mode
为“
READ ONLY WITH APPLY
”
SQL> select open_mode from v$database;
#############
# test
测试
#############
在原备机上插入数据,测试原主机是否收到。
二、主库宕机(
failover
)
###############
# primary
操作
###############
$ ps –ef | grep pmon
$ kill -9 {pid_pmon}
###############
# standby
操作
###############
取消
standby
日志应用
standby SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
standby SQL> alter database recover managed standby database finish;
※如果没有应用standby redolog,此处使用下面的命令:
standby SQL> alter database recover managed standby database finish skip standby logfile;
2
)重启
db
到
mount
状态
standby SQL> shutdown immediate;
standby SQL> startup mount;
3
)切换到主机模式
standby SQL> alter database commit to switchover to primary;
standby SQL> alter database open;
#############
# test
测试
#############
测试原备机是否可以连接使用,并统计丢失数据。
如果是Oracle rac,在进行切换操作时,需要关闭一个节点即可,方法是一样的