单节点DG的switchover切换介绍

本章主要介绍DG的switchover切换,当用方法论来统筹知识和经验的时候,操作笔记的价值并不大,不过新手可以借鉴
PRIMARY:
主库是处于open状态,有业务访问,v$database视图中的switchover_status字段为sessions active
由primary切换到standby需要数据库为open状态,若v$database视图中的switchover_status字段为sessions active,执行切换命令时,带上with session shutdown选项即可

SQL> select database_role,switchover_status from v$database;
SQL> alter database commit to switchover to physical standby with session shutdown;
SQL> shutdown abort;
SQL> startup mount;
SQL> alter database recover managed standby database disconnect from session/using current logfile disconnect from session;
SQL> select database_role,switchover_status from v$database;

PHYSICAL STANDBY:
确认是否可以切换为主库,如果switchover_status为recovery needed或switchover latent,需要apply完所有归档日志才能切换
如果是sessions active则带上with session shutdown选项。apply完所有日志后,即可切换为primary,然后打开数据库
查看alert.log可以看到备库做了哪些动作:接收主库日志,接收到主库End-Of-REDO的信号,apply完所有日志,清空online redo log以便打开数据库,切换为primary,打开数据库

SQL> select database_role,switchover_status from v$database;
SQL> alter database recover managed standby database disconnect from session; #结束备库归档apply
SQL> alter database commit to switchover to primary with session shutdown;
SQL> alter database open;
SQL> select database_role,switchover_status from v$database;
------------------------------------------------------------------------------------------------------------------------------------------
以上过过程中,由于主库断开所有session并归档,传输日志到备库,发给备库End-Of-REDO的信号,因此正常switchover时,是不会丢失数据的。
切换完成后可以在主库归档,验证一下是否切换成功,备库是否能正常接收日志。
------------------------------------------------------------------------------------------------------------------------------------------
switchover 主备切换演练,操作笔记

PRIMARY:
SQL> show user
USER is "SYS"
SQL> alter system switch logfile;

System altered.

SQL> /

System altered.

SQL> /

System altered.

SQL> /

System altered.

SQL>

PHYSICAL STANDBY:
SQL> alter database recover managed standby database disconnect from session;

Database altered.

SQL> select sequence#,applied from v$archived_log;

 SEQUENCE# APPLIED
---------- ---------
        40 YES
        41 YES
        42 YES
        44 YES
        45 YES
        43 YES
        46 YES
        47 YES
        48 YES
        49 IN-MEMORY

SQL> alter database recover managed standby database cancel;

Database altered.
此时,DG运行正常,接下来进行switchover切换
-------------------------------------------------------------------------------

PRIMARY:
SQL> select database_role,switchover_status from v$database;

DATABASE_ROLE    SWITCHOVER_STATUS
---------------- --------------------
PRIMARY          TO STANDBY

SQL> alter database commit to switchover to physical standby;

Database altered.
注:若这边发现switchover_status状态为sessions active,则切换到physical standby时需要加上with session shutdown
执行完切换命令后,关闭数据库,重新启动数据库到mount状态,接受日志传输,开启日志应用
SQL> shutdown immediate
SQL> startup mount;
ORACLE instance started.

Total System Global Area  409194496 bytes
Fixed Size                  2228864 bytes
Variable Size             339742080 bytes
Database Buffers           62914560 bytes
Redo Buffers                4308992 bytes
Database mounted.
SQL> select database_role,switchover_status from v$database;

DATABASE_ROLE    SWITCHOVER_STATUS
---------------- --------------------
PHYSICAL STANDBY RECOVERY NEEDED

SQL> alter database recover managed standby database disconnect from session;

Database altered.

SQL> select database_role,switchover_status from v$database;

DATABASE_ROLE    SWITCHOVER_STATUS
---------------- --------------------
PHYSICAL STANDBY NOT ALLOWED

SQL>
-------------------------------------------------------------------------------

PHYSICAL STANDBY:

当主库已经将database_role从PRIMARY切换至PHYSICAL STANDBY,此时查看备库的database_role和switchover_status
SQL> alter database recover managed standby database disconnect from session;

Database altered.

SQL>  select database_role,switchover_status from v$database;

DATABASE_ROLE    SWITCHOVER_STATUS
---------------- --------------------
PHYSICAL STANDBY TO PRIMARY

SQL> alter database commit to switchover to primary;

Database altered.

SQL> alter database open;

Database altered.

SQL> select database_role,switchover_status from v$database;

DATABASE_ROLE    SWITCHOVER_STATUS
---------------- --------------------
PRIMARY          TO STANDBY

-------------------------------------------------------------------------------
验证笔记
原备库:
SQL> select instance_name,status from v$instance;

INSTANCE_NAME    STATUS
---------------- ------------
beiku            OPEN

SQL>
SQL>
SQL>
SQL> alter system switch logfile;

System altered.

SQL> /

System altered.

SQL> /
 
System altered.

SQL> /

System altered.

SQL> /

System altered.

原主库
SQL> select instance_name,status from v$instance;

INSTANCE_NAME    STATUS
---------------- ------------
zhuku            MOUNTED

SQL> select sequence#,applied from v$archived_log;

 SEQUENCE# APPLIED
        57 YES
        56 YES
        58 YES
        59 YES
        60 YES
        61 YES
        62 YES
        63 YES
DG已经运行正常
至此,单节点DG的switchover切换已经完成,failover切换可能在后续的章节中介绍

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30310891/viewspace-1729973/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/30310891/viewspace-1729973/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值