ITPub博客

首页 > 数据库 > Oracle > Data guard主备角色switch

Data guard主备角色switch

原创 Oracle 作者:Rman2017 时间:2017-05-19 12:03:44 0 删除 编辑

理论知识:
Switchover 切换允许primary 和一个备库进行切换,并且这种切换没有数据丢失。 

前提条件:

1) 主备库相关参数 fal_client、fal_server 、standby_file_management 、 db_file_name_convert 、
log_file_name_convert 都已经配置。  standby logfile 日志组已创建。
(验证主备库的配置信息,包括初始化参数,归档模式,standby redo logs 和online redo log。 )


2)在主库查询V$ARCHIVE_DEST_STATUS 视图,验证备库没有redo 传输错误 或者redo gap。
SQL> SELECT STATUS, GAP_STATUS FROM V$ARCHIVE_DEST_STATUS WHERE DEST_ID = 2;


STATUS    GAP_STATUS
--------- ------------------------
VALID     NO GAP
只有这里状态是VALID 和NOGAP的情况下,才可以进行角色切换操作。


3) 确保主备库Temp 表空间一致。


4) 移除standby 上任何delay apply redo 的设置。


5) 如果是将RAC 主库切换到物理备库,RAC 主库只能保留一个节点,其他节点要关闭,在switchover 完成以后在启动关闭的节点即可。


6) 如果备库是real-time apply 的物理standby,并且是read only 模式,在切换之前,建议先将备库启动到mount状态,而不是open状态,这样可以实现最快速的角色切换,而不需要在切换之前清除用户的session连接。


7)如果有多个standby,在Role Transition 时如何选择 。 考虑位置,性能,数据库类型


主库参数检查:
SQL> show parameter fal_client


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
fal_client                           string      devdb1
SQL> show parameter fal_server


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
fal_server                           string      phydb
SQL> show parameter standby_file_management


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
standby_file_management              string      MANUAL
SQL> show parameter db_file_name_convert


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert                 string      +DATA/phydb/, +DATA/devdb/
SQL> show parameter log_file_name_convert


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_file_name_convert                string      +DATA/phydb/, +DATA/devdb/
SQL> select group# from v$standby_log;


    GROUP#
----------
         4
         5
         6
         7


备库参数检查:
SQL> show parameter fal_client


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
fal_client                           string      phydb
SQL> show parameter fal_server


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
fal_server                           string      devdb1
SQL> show parameter standby_file_management


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
standby_file_management              string      AUTO
SQL> show parameter db_file_name_convert


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert                 string      +DATA/devdb/, +DATA/phydb/
SQL> show parameter log_file_name_convert


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_file_name_convert                string      +DATA/devdb/, +DATA/phydb/
SQL> select group# from v$standby_log;


    GROUP#
----------
         4
         5
         6

         7

 

 

特别提醒: 作者环境为一个节点的rac+单节点dg  。 不同于两个节点的rac+dg,操作上有细微区别。如两个节点的rac,一个节点需shutdown,一个节点操作。



切换模式  :一个节点的rac主库切换备库,单节点备库切换成主库 。


1. 将主库切换成standby role:
SQL> alter database commit to switchover to physical standby with session shutdown;


Database altered.


2. 将原备库切换成主库 , 并 open 。
SQL> alter database commit to switchover to primary with session shutdown;


Database altered.


SQL> ALTER DATABASE OPEN;


Database altered.


3. 原主库并启动到open状态,启动 mgr 进程。
SQL> startup;
ORACLE instance started.


Total System Global Area  839282688 bytes
Fixed Size    2257880 bytes
Variable Size  603982888 bytes
Database Buffers  230686720 bytes
Redo Buffers    2355200 bytes
Database mounted.
Database opened.


SQL> alter database recover managed standby database using current logfile disconnect from session;


Database altered.


4. 验证
SQL> SELECT DEST_ID, STATUS,APPLIED_SCN FROM V$ARCHIVE_DEST WHERE TARGET='STANDBY';


   DEST_ID STATUS    APPLIED_SCN
---------- --------- -----------
         2 VALID               0






切换模式:  单节点主库切换成备库,一个节点rac备库切换成主库。


1. 确认主库,新主库切换成备库
SQL> select name,database_role,switchover_status from v$database;


NAME      DATABASE_ROLE    SWITCHOVER_STATUS
--------- ---------------- --------------------
DEVDB     PRIMARY          TO STANDBY
SQL> alter database commit to switchover to physical standby with session shutdown;


Database altered.
2. 新备库切换成主库 , 并 open 。
SQL> alter database commit to switchover to primary with session shutdown;


Database altered.


SQL> alter database open;


Database altered.


3. 现备库open ,并启动 mgr 进程。 
SQL> startup;
ORACLE instance started.


Total System Global Area  839282688 bytes
Fixed Size    2257880 bytes
Variable Size  603982888 bytes
Database Buffers  230686720 bytes
Redo Buffers    2355200 bytes
Database mounted.
Database opened.
SQL> alter database recover managed standby database using current logfile disconnect from session;   


Database altered.


4. 主库执行检查
SQL> SELECT DEST_ID, STATUS,APPLIED_SCN FROM V$ARCHIVE_DEST WHERE TARGET='STANDBY';


   DEST_ID STATUS    APPLIED_SCN
---------- --------- -----------
         2 VALID         1879072

 

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

请登录后发表评论 登录
全部评论

注册时间:2017-03-30

  • 博文量
    352
  • 访问量
    132800