2024年6月12日发(作者:)
Oracle 11G
数据库
DataGuard
灾备切换方案
、检查
1
、确定
MRP
进程在正常运行
备库执行如下
SQL
确定
MRP
进程正常:
SELECT PROCESS FROM V$MANAGED_STANDBY WHERE PROCESS LIKE 'MRP%';
主库执行如下
SQL
,确定备库是
“REAL TIME
八「「
1
丫”
状态
SQL> SELECT RECOVERY_MODE FROM V$ARCHIVE_DEST_STATUS WHERE DEST_ID=2;
RECOVERYMODE
MANAGED REAL TIME APPLY
如果备库没有启用
real-time apply
,则需要重新将备库启动至
real-time apply
:
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;
2
、确定有足够的归档进程
在所有的主备库实例上查询参数
LOG_ARCHIVE_MAX_PROCESSES,
确定其值大于等于
4
, 但
不会太大
3
、确定目标备库的
REDO
为
clear
状态
虽然在发起
SWITCHOVER TO PRIMARY命令时,备库的REDO会自动转换为CLEAR
状态,但依然建议在SWITCHOVER前REDO为CLEAR状态。
确保正确设置了 LOG_FILE_NAME_CONVERT参数。
使用如下SQL在目标备库上查看REDO状态:
SQL> SELECT DISTINCT # FROM V$LOG L, V$LOGFILE LF
WHERE # = #
AND NOT IN (UNUSED’,
、
CLEARING’,’CLEARING_CURRENT’);
如果如上的查询有结果,
则需要停止备库的
REDOAPPLY
,并通过如下的
SQL
来对其进 行
CLEAR
SQL> ALTER DATABASE CLEAR LOGFILE GROUP
4
、确定没有大量的
GAP
主库执行如下
SQL
查看主库当前的
REDO SEQUENCE
SQL
〉
SELECT THREAD#, SEQUENCE# FROM V$THREAD;
在备库上执行如下查询,确定查询出来的结果与上面的结果相比较只差
1-2
个数值
SELECT THREAD#, MAX(SEQUENCE#) FROM V$ARCHIVED_LOG
WHERE APPLIED = 'YES'
AND RESETLOGS_CHANGE# = (SELECT RESETLOGS_CHANGE#
FROM V$DATABASEINCARNATION WHERE STATUS = yCURRENT’)
GROUP BY THREAD#;
5
、确定主库以及目标备库的所有文件都为
ONLINE
主备库分别执行如下
SQL
,查看
tempfile
是否正常,如果备库上缺失文件则需要进行 处
理:
SELECT FILENAME, BYTES, TABLESPACE
FROM V$TEMPFILE TMP, V$TABLESPACE TS WHERE #=#;
在主备库分别执行如下
SQL
,查看数据文件状态,结果应该一致
SELECT NAME FROM V$DATAFILE WHERE STATUS=’OFFLINE’;
如果备库上有比主库多出的
OFFLINE
状态的数据文件,则将其
ONLINE
:
ALTER DATABASE DATAFILE &FILEID ONLINE;
、切换
1
、检查主库是否可切换至
STANDBY
主库执行如下
SQL
执行检查
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
SWITCHOVERSTATUS
TO STANDBY
如上的
SQL
查询结果如果为
〃
TO STANDBY
”
或者
〃
SESSIONS ACTIVE
〃
表示主库可切
换至
STANDBY
,如果不为这两个值,则说明
REDO
传输存在问题。
2
、停止主库第一个节点以外的所有实例(
RAC
)
最好使用
shutdown normal
或者
shutdown immediate
方式停止数据库。如果使用了
shutdown
abort
将其他节点进行了关闭,则需等待
RAC reconfig
完成,且第一个节点 将其余
REDO
正
常前滚或回滚
3
、切换主库至
STANDBY
角色
将主库切换至
STANDBY
ALTER DATABASE COMMIT TO SWITCHOVER TO STANDBY WITH SESSION SHUTDOWN;
如果遇到
ORA-16139报错,且V$DATABASE视图中DATABASE_ROLE字段的值 已
为“ PHYSICAL STANDBY”,则可继续(这种问题的出现其中一个可能是 数据
库有大量的数据文件)。
4
、确定
STANDBY
收至
1
」
EOR
在主库的
ALERT
日志中可以看到类似如下的信息:
Switchover: Primary controlfile converted to standby controlfile
succesfully.
Tue Mar 15 16:12:15 2011
发布评论