Oracle DG Broker 进行 SwitchOver & Failover及Failover后恢复主从同步

前一篇 https://blog.csdn.net/Hehuyi_In/article/details/94384431 介绍了SwitchOver & Failover的概念、区别及利用sql操作的方法。可以看到利用sql来执行需要在主从库均进行操作,命令也多,较为复杂,本篇来看如何利用DG Broker来简化这些操作。

 

一、 DG Broker安装与配置

1. DG Broker安装

DG Broker其实就是dgmgrl工具,安装Oracle数据库软件或完整的客户端都包含该工具,本文略。

2. 监听修改

按下面修改监听配置,如果不修改监听利用原有的监听也可以,后面会介绍这种方法

主库

LISTENER =
  (DESCRIPTION_LIST=
    (DESCRIPTION =
      (ADDRESS =(PROTOCOL = TCP)(HOST = 192.168.180.43)(PORT = 1521))
      (ADDRESS =(PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

SID_LIST_LISTENER =
 (SID_LIST =
   (SID_DESC =
     (GLOBAL_DBNAME= ocrl)
     (ORACLE_HOME =/u01/app/oracle/product/12.1.0/db_1)
     (SID_NAME =ocrl)
   )
   (SID_DESC =
     (GLOBAL_DBNAME=ocrl_DGMGRL) # 新增部分
     (ORACLE_HOME =/u01/app/oracle/product/12.1.0/db_1)
     (SID_NAME =ocrl)
   )
 )

备库

LISTENER =
  (DESCRIPTION_LIST=
    (DESCRIPTION =
      (ADDRESS =(PROTOCOL = TCP)(HOST = 192.168.180.44)(PORT = 1521))
      (ADDRESS =(PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

SID_LIST_LISTENER =
 (SID_LIST =
   (SID_DESC =
     (GLOBAL_DBNAME= ocrls)
     (ORACLE_HOME =/u01/app/oracle/product/12.1.0/db_1)
     (SID_NAME =ocrls)
   )
   (SID_DESC =
     (GLOBAL_DBNAME=ocrls_DGMGRL)  #新增部分
     (ORACLE_HOME =/u01/app/oracle/product/12.1.0/db_1)
     (SID_NAME =ocrls)
   )
 )

记住要重启监听

lsnrctl stop
lsnrctl start

3. 配置DG Broker 

  • 修改dg_broker_config_file参数(主备库都执行)

这里就用默认的路径,也可以自己指定。如果是在RAC环境中,这个把这个文件把到共享的存储上面,如果有ASM可以放到ASM中。

show parameter dg_broker_config_file

  • 启用BROKER(主备库都执行)
alter system set dg_broker_start=true;

  • 创建BROKER配置

在主、备库或者其他安装了dgmgrl的机器(能连到主从库)操作都可以。这里选择在主库执行

ocrl:/home/oracle@oracle1>dgmgrl
DGMGRL>connect sys/oracle@ocrl

DGMGRL>help create
DGMGRL>create configuration dg as primary database is ocrl connect identifier is ocrl;

这里报错 ORA-16698,这个报错出现在12c上,11g不会报错。可以通过在Primary 和 Standby上取消log_archive_dest_n参数来解决,实际这一块的参数应当是交给DG broker 来管理了,不再需要人为介入设置。

主备库都执行

alter system set log_archive_dest_2='';

再次执行

create configuration dg as primarydatabase is ocrl connect identifier is ocrl;

启用配置文件

DGMGRL>enable configuration

增加备库到配置文件中

DGMGRL>help add
DGMGRL>add database ocrls as connect identifier is ocrls;

查看配置文件

DGMGRL>show configuration

查看数据库的配置信息

DGMGRL>show database verbose ocrl
DGMGRL>show database verbose ocrls

注意:broker里连接的service_name是<db_unique_name>_DGMGRL,所以最开始前面要修改监听文件。如果不想修改监听文件,也可以执行下面的命令来修改StaticConnectIdentifier(这就是前面所说的另一种方法)。

DGMGRL>edit database ocrl set property StaticConnectIdentifier='(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.168.43)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ocrl)(INSTANCE_NAME=ocrl)(SERVER=DEDICATED)))';

DGMGRL> edit database ocrls set property  StaticConnectIdentifier='(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.168.44)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ocrls)(INSTANCE_NAME=ocrls)(SERVER=DEDICATED)))';

二、 利用DG Broker 进行 SwitchOver

非常简单,就一条命令。

DGMGRL> switchover to ocrls;

再次查看配置文件

DGMGRL> show configuration

发现SwitchOver已经成功完成了

三、 利用DG Broker 进行 Failover

也非常简单,就一条命令

DGMGRL> FAILOVER TO database-name;
# 或者
DGMGRL> FAILOVER TO database-name IMMEDIATE;

分别对应两类Failover

  • Complete Failover(默认方法):尝试先将在主库所有重做日志应用到备库,最大程度地减少数据丢失。
  • Immediate Failover :不再对备库进行数据应用,立刻进行切换。

四、 Failover后恢复主从关系

Failover 后已禁用的数据库不会从代理配置中删除,但不再由代理管理。要重新启用这些数据库的代理管理,必须恢复或重建主从关系:

  • 如果可以恢复主从关系,则数据库将显示以下状态:
ORA-16661:需要恢复备用数据库
  • 如果必须从新主库重新创建备库,则将显示以下状态:
ORA-16795:需要重新创建备用数据库

为使REINSTATE命令成功执行,故障转移之前必须已在原主库(待恢复备库)上启用闪回,并且必须有足够的闪回日志。

1. 操作步骤

  • 将数据库重新启动到mount状态
  • 连接到新主库
  • 使用企业管理器或DGMGRL恢复数据库

代理将故障的原主库恢复为与原备库相同类型(物理或逻辑备库)。唯一的例外是故障转移到快照备库,此时发生故障的原主库将恢复为物理备库。

代理恢复在故障转移期间被禁用的旁观者备库,作为备库连到新主库。

2. 使用DGMGRL恢复

连接到代理配置中的任何数据库(要恢复的数据库除外)时,执行:

DGMGRL> REINSTATE DATABASE db_unique_name;

如果能完成,它将变为新主库的备库。如果失败,其状态将更改为 ORA-16795: the standby database needs to be re-created。那就没办法,只能重搭主从了。

参考

https://blog.csdn.net/shiyu1157758655/article/details/55504026

https://blog.csdn.net/Hehuyi_In/article/details/94384431

https://docs.oracle.com/cd/E11882_01/server.112/e40771/sofo.htm#DGBKR390

https://docs.oracle.com/cd/E11882_01/server.112/e40771/concepts.htm#DGBKR001

发布了295 篇原创文章 · 获赞 35 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/Hehuyi_In/article/details/105258110