【DG】Data Guard主备库Switchover切换

一、  切换前检查

1.  备库检查manager recovery 处于运行状态

sql> SELECT PROCESS FROM V$MANAGED_STANDBY WHERE PROCESS LIKE 'MRP%';

2.  主库检查database 处于实时应用状态

sql> SELECT RECOVERY_MODE FROM V$ARCHIVE_DEST_STATUS WHERE DEST_ID=2;

RECOVERY_MODE

-----------------------

MANAGED REAL TIME APPLY

如果备库没有处于实时应用状态,就需要重启实时应用

sql>   ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

sql> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE disCONNECT;

3.  确保主库和备库临时文件匹配

对于临时文件,确保主库存在的临时文件备库也应存在。在初始备库创建后,主库新创建的临时文件不会传到备库。主备库执行以下sql

sql> SELECT TMP.NAME FILENAME, BYTES, TS.NAME TABLESPACE

FROM V$TEMPFILE TMP, V$TABLESPACE TS WHERE TMP.TS#=TS.TS#;

如果查询不匹配,需要立即修正不匹配内容

4.  确保所有数据文件均为online 状态

sql> SELECT NAME FROM V$DATAFILE WHERE STATUS='OFFLINE';

如果有数据文件处于offline 状态,在 switchover 之前需要将数据文件 offline 。

5.  确保备库不存在GAP

备库执行

sql> SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;

THREAD#      LOW_SEQUENCE# HIGH_SEQUENCE#

---------- ------------- --------------

1            8 0              82  

如果没有返回结果,则说明不存在GAP (断档);如果存在结果,则说明存在 GAP 。上述结果说明, GAP 内容包含归档日志 sequence80,81,82 。需要主库复制上述归档日志,传输到备库,并且注册在备库,如下

sql> ALTER DATABASE REGISTER PHYSICAL LOGFILE 'filespec1';

二、  思路清晰

step1: 清理参数和 jobs

step2: 确保主库切换状态正常

step3: 主库执行 switchover

step4: 检查备库切换状态正常

step5: 备库执行 switchover

step6: 打开新主库和备库

step7: 新备库实时应用日志

step8: 检查主备库状态

三、  switchover 切换

1.  清理可能阻塞切换的parameters and jobs

1)  查看当前执行的JOBS

sql> SELECT * FROM DBA_JOBS_RUNNING;

sql> SELECT OWNER, JOB_NAME, START_DATE, END_DATE, ENABLED FROM DBA_SCHEDULER_JOBS WHERE ENABLED='TRUE' AND OWNER <> 'SYS' ;

如果有正在运行的job, 如果有必要就终止这些 job 。

2)  终止当前的job

sql> EXECUTE DBMS_SCHEDULER.disABLE(job_name);

2.  确保主库switchover_status 正常

sql> select switchover_status from v$database;

SWITCHOVER_STATUS

--------------------

SESSIONS ACTIVE

注:主库的状态应为to primary 或 session active 。如果主库状态为 session active ,那么在切换时需要追加 with session shutdown 选项。如果主库是 RAC ,那么在切换前停止第二个节点。

3.  主库执行switchover 到备库

sql> ALTER DATABASE COMMIT TO SWITCHOVER TO STANDBY WITH SESSION SHUTDOWN;

4.  检查备库switchover_status 正常

sql> select switchover_status from v$database;

SWITCHOVER_STATUS

--------------------

to primary

5.  备库switchover 为主库

sql> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;

此时,新主库处于Mount 状态,新备库处于 shutdown 状态

6.  打开新主库

sql> alter database open;

7.  打开新备库

sql> startup;

此时新备库模式为read only ;

8.  新备库实时应用日志

sql> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE disCONNECT;

9.  检查主备库状态

sql> select db_unique_name,open_mode,database_role,switchover_status from v$database;

---- end ----

相关文章

这篇文章主要介绍“hive和mysql的区别是什么”,在日常操作中...
这篇“MySQL数据库如何改名”文章的知识点大部分人都不太理解...
这篇文章主要介绍“mysql版本查询命令是什么”的相关知识,小...
本篇内容介绍了“mysql怎么修改字段的内容”的有关知识,在实...
这篇文章主要讲解了“mysql怎么删除unique约束”,文中的讲解...
今天小编给大家分享一下mysql怎么查询不为空的字段的相关知识...