|
数据库维护方案-Oracle DataGuard手动切换步骤 二维码
68
数据库维护背景: DataGuard一般切换分两种:一种是数据库正常的情况下的切换,这种方式为:switchovery,一般用于主机维护或灾备测试,属于无损切换,不会丢失数据;另外一种方式属于数据库服务器灾难情况下的切换,这种情况下一般主库已经启动不起来了,为failover,有可能会丢失数据,并且切换后原primary数据库也不再是该dataguard配置的一部分了。 对于整个dataguard的搭建,请参考实战Oracle DataGuard不停机的配置,只要按照该文档操作,保证没有问题; DG环境信息:
切换步骤: 一、主库的操作 1、主数据库的状态检查 脚本:SQL> select switchover_status from v$database;
说明:如果该列值为"TO STANDBY"则表示primary 数据库支持转换为standby 角色,否则的话你就需要重新检查一下Data Guard 配置,比如看看LOG_ARCHIVE_DEST_n 之类参数值是否正确有效等等。 2、首先将primary 转换为standby 的角色 SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN; 确认状态: select switchover_status from v$database;
说明:PRIMARY进行转换完毕后,查看状态会变成RECOVERY NEEDED; 3、重启动到mount --原primary 数据库操作 SQL> shutdown immediate ORA-01507: 未装载数据库 ORACLE 例程已经关闭。 SQL> startup mount ORACLE 例程已经启动 二、备库切换成主库的操作 完成以上操作后,就可以进行以下备库的操作 1、检查备库的状态 SQL> select switchover_status from v$database;
2、确认没有问题后,可以进行切换转换standby 到primary 角色 SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN; 3、完成转换,打开新的primary 数据库 SQL> alter database open;
4、查看当前系统的状态 脚本:select name,open_mode,database_role,protection_mode,SWITCHOVER_STATUS
三、原主库切换成备库 当前的备库是mount状态了,运行以下语句 1、执行日志的运用 SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION; 2、取消日志的运用 SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL; 3、打开数据库 SQL> ALTER DATABASE OPEN; 4、在open状态下执行日志的即时运用 SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION; 顺带说说failover切换: 旧备库操作: ALTER DATABASE RECOVER managed standby database finish; 新主库操作: ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN; alter database open; |