基于单机的DataGuard切换文档

来源:这里教程网 时间:2026-03-03 16:38:49 作者:

 

环境描述

1.1     硬件环境

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

主机名

型号

操作系统版本

X86

Centos6.8

  备库主机规划:

主机名

型号

操作系统版本

X86

Centos6.8

 

规划

目前生产主机IP 规划:

IP

Alias

备注

本地物理IP( 内网)

  目前备库主机IP 规划:

IP

Alias

备注

本地物理IP( 内网)

   

DataGuard Switchover 计划性切换

主备切换测试之switchover

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

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

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

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

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

 

主库切备库

以下操作均在生产机进行

查看切换状态

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;

  

备库切主库

以下操作均在备机进行

查看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;

 

验证同步

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

su - oraclesqlplus "/ 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 故障切换

主备切换之Failover

FAILOVER 切换一般是 PRIMARY 数据库发生故障后的切换 这种情况下 STANDBY 数据库发挥其作用。这种切换发生后,可能会造成数据的丢失。而且这个过程不是可逆的,DATA GUARD环境会被破坏。 由于PRIMARY数据库已经无法启动,所以FAILOVER切换所需的条件并不多,只要检查STANDBY是否运行在最大保护模式下,如果是的话,需要将其置为最大性能模式,否则切换到PRIMARY角色也无法启动。 

生产库停止归档传输服务

该操作均在生产库执行

$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='*';

 

备库强制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

 

相关推荐