基于单机的DataGuard切换文档

 

环境描述

1.1     硬件环境

以下环境根据各自环境自行填写,DG 搭建更多的是数据库级别的参数设置,所以并不存在AIX LINUX 等操作系统版本之分。

 

生产主机规划:

主机名

型号

操作系统版本


X86

Centos6.8

 

备库主机规划:

主机名

型号

操作系统版本


X86

Centos6.8

 

1.2 IP 规划

目前生产主机IP 规划:

IP

Alias

备注



本地物理IP( 内网)

 

目前备库主机IP 规划:

IP

Alias

备注



本地物理IP( 内网)

 


 

DataGuard Switchover 计划性切换

2.1 主备切换测试之switchover

一般 SWITCHOVER 切换都是计划中的切换 特点是在切换后 不会丢失任何的数据 而且这个过程是可逆的 整个 DATA GUARD 环境不会被破坏 原来 DATA GUARD 环境中的所有 STANDBY 都可以继续工作。

  在进行DATA GUARD的物理STANDBY切换前需要注意:

1)确认主库和备库间网络连接通畅;

2)确认没有活动的会话连接在数据库中;

3)PRIMARY数据库处于打开的状态,STANDBY数据库处于MOUNT/READ ONLY状态

 

2.2 主库切备库

以下操作均在生产机进行

查看切换状态

SQL> SELECT   DATABASE_ROLE,SWITCHOVER_STATUS FROM V$DATABASE;

DATABASE_ROLE    SWITCHOVER_STATUS

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

PRIMARY          TO STANDBY

 

备注代码

:   A:switchover_status 出现 session active/not   allowed

当出现 session active 的时候表示还有活动的 session, 则运行 下面代码:

 Alter database commit to switchover to   physical standby with session shutdown;

 

当出现not allowed时,在官方文档说转换会不成功尝试运行一下代码

B.ORA-01153: an   incompatible media recovery is active 运行下面代码:

Alter database   recover managed standby database finish;

或者 Alter database   recover managed standby database finish force;

 

切换成备库

SQL>Alter   database commit to switchover to physical standby with session shutdown;

或者

SQL> ALTER   DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY;

Database altered.

 

重启数据库

SQL> SHUTDOWN   IMMEDIATE

SQL> startup   mount;

SQL> ALTER DATABASE   RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

 

 

2.3 备库切主库

以下操作均在备机进行

查看switchover状态

SQL> SELECT   DATABASE_ROLE,SWITCHOVER_STATUS FROM V$DATABASE;

DATABASE_ROLE    SWITCHOVER_STATUS

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

STANDBY          TO PRIMARY

 

备注代码:

若不是用此语句切换 :ALTER DATABASE COMMIT TO SWITCHOVER   TO PRIMARY with session shutdown

补充 若出现 :ORA-16139: media recovery required

是因为没有执行:alter   database recover managed standby database disconnect from session;

 

2. 切换成主库

SQL> ALTER DATABASE   COMMIT TO SWITCHOVER TO PRIMARY;

Database altered.

SQL> shutdown   immediate;

SQL> startup;

SQL> alter   system switch logfile;

 

2.4 验证同步

验证切换成功,在原先的备机上(即现在的生产机上)切换归档:

su - oracle

sqlplus "/ as sysdba"

SQL>alter system switch logfile;

SQL>alter system switch logfile;

 

在原生产机,检查原先的生产库告警日志,观察是否有新的归档传输过来

$ tail -f   /oracle/app/diag/rdbms/kinton/kinton/trace/alert_kinton.log

 


 

DataGuard failover 故障切换

3.1 主备切换之Failover

FAILOVER 切换一般是 PRIMARY 数据库发生故障后的切换 这种情况下 STANDBY 数据库发挥其作用。这种切换发生后,可能会造成数据的丢失。而且这个过程不是可逆的,DATA GUARD环境会被破坏。

由于PRIMARY数据库已经无法启动,所以FAILOVER切换所需的条件并不多,只要检查STANDBY是否运行在最大保护模式下,如果是的话,需要将其置为最大性能模式,否则切换到PRIMARY角色也无法启动。

 

3.2 生产库停止归档传输服务

该操作均在生产库执行

$export ORACLE_SID=kinton

$sqlplus / as sysdba

确认传输服务设在log_archive_dest_state_2 参数上

SQL> alter system set log_archive_dest_state_2=defer   scope=both sid='*';

 

3.3 备库强制Failover 打开

以下操作均在备库执行

停止应用归档:

   SQL> ALTER   DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

  Database   altered.

 

备库停止应用归档 ­

   SQL> ALTER   DATABASE RECOVER MANAGED STANDBY DATABASE FINISH;

SQL> ALTER   DATABASE RECOVER MANAGED STANDBY DATABASE FINISH FORCE;

Database altered.

 

确认数据库角色为STANDBY

确认数据库保护模式为最大性能模式

   SQL> select   DATABASE_ROLE,PROTECTION_MODE,SWITCHOVER_STATUS from v$database;

   DATABASE_ROLE

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

PHYSICAL STANDBY

若数据库非最大性能模式,则手动切换成最大性能模式,若是则跳过此步

SQL> alter   database set standby database to maximize performance;

 

执行Failover切换

   SQL> ALTER   DATABASE COMMIT TO SWITCHOVER TO PRIMARY;

Database altered.

 

切换完成之后重启数据库

    SQL> shutdown immediate

      SQL> startup

 


请使用浏览器的分享功能分享到微信等