zoukankan      html  css  js  c++  java
  • 实战dataguard主从切换

    前言:

           众所周知DataGuard一般的切换分成两种,一种是系统正常的情况下的切换这种方式为:switchover是无损切换,不会丢失数据;另外一种方式属于灾难情况下的切换,这种情况下一般主库已经启动不起来了,为failover,有可能会丢失数据,并且切换后原primary 数据库也不再是该data guard 配置的一部分了。

           本文先简单的介绍在正常情况下运行的系统切换测试; 

    整个dataguard的搭建,请参考实战ORACLE DataGuard不停机的配置,只要按照该文档操作,保证没有问题;

    环境信息:

    hostname

    db_name

    db_unique_name

    role

    dg2

    orcl

    orcldg2

    PRIMARY

    dg1

    orcl

    orcldg1

    STANDBY

    切换步骤:

    一、主库的操作

    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;

    说明: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;

    3、完成转换,打开新的primary 数据库

    SQL> alter database open;

    4、查看当前系统的状态

    脚本:select name,open_mode,database_role,protection_mode,SWITCHOVER_STATUS  From v$database;

    三、原主库切换成备库

    当前的备库是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;

    四、测试

    1、在dg1上面插入一个表test,并插入数值1

    2、在dg2上面检查

    大功告成了,数据马上传送到dg2了;

  • 相关阅读:
    初级安全入门——安全漏洞的检测与利用
    Gazebo11的安装与启动
    ROS入门(四)——Gazebo的基本使用
    ROS入门(二)——服务和全局参数
    ROS入门(一)——基本概念和话题
    数据结构与算法(三+)——列表的Java实现
    Java EE入门(二十)——Maven基础
    Java EE入门(十九)——Redis基础
    Java EE入门(十八)——Ajax&JSON基础
    npm中如何更新自己已经发布的1.0.0的模块包?
  • 原文地址:https://www.cnblogs.com/iyoume2008/p/7735797.html
Copyright © 2011-2022 走看看