使用Broker实现DG切换

来源:这里教程网 时间:2026-03-03 18:18:42 作者:

使用Broker切换DG非常简单,单需要提前确认切换可行性。 使用如下方式验证数据库,包括主库和备库:以下是主库:

DGMGRL> validate database o19dg;
  Database Role:    Primary database
  Ready for Switchover:  Yes
  Managed by Clusterware:
    o19dg:  NO
    Validating static connect identifier for the primary database o19dg...
    The static connect identifier allows for a connection to database "o19dg".

以下是备库:

DGMGRL> validate database o19;
  Database Role:     Physical standby database
  Primary Database:  o19dg
  Ready for Switchover:  Yes
  Ready for Failover:    Yes (Primary Running)
  Managed by Clusterware:
    o19dg:  NO
    o19  :  NO
    Validating static connect identifier for the primary database o19dg...
    The static connect identifier allows for a connection to database "o19dg".
  Current Log File Groups Configuration:
    Thread #  Online Redo Log Groups  Standby Redo Log Groups Status
              (o19dg)                 (o19)
    1         3                       3                       Insufficient SRLs
  Future Log File Groups Configuration:
    Thread #  Online Redo Log Groups  Standby Redo Log Groups Status
              (o19)                   (o19dg)
    1         3                       3                       Insufficient SRLs

有可能会因为以下几个原因导致验证失败:

    检查备库的log_archive_dest_N配置

    检查主备库的db_file_name_convert和log_file_name_convert配置

    检查主备库的静态监听配置,listener.ora可参考以下

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = o19dg)
      (ORACLE_HOME = /u01/app/oracle/product/19.3.0/db_1)
      (GLOBAL_DBNAME = o19dg)
    )
    (SID_DESC =
      (SID_NAME = o19dg)
      (ORACLE_HOME = /u01/app/oracle/product/19.3.0/db_1)
      (GLOBAL_DBNAME = o19dg_DGMGRL)
      (SERVICE_NAME = o19dg_DGMGRL)
    )
  )

接下来,可执行切换,注意要显式地使用密码登录Broker,否则切换会不成功。

$ dgmgrl
DGMGRL for Linux: Release 19.0.0.0.0 - Production on Fri Jan 13 13:59:31 2023
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.
Welcome to DGMGRL, type "help" for information.
DGMGRL> connect sys/oracle@o19dg
Connected to "o19dg"
Connected as SYSDBA.
DGMGRL> SWITCHOVER TO o19;
Performing switchover NOW, please wait...
Operation requires a connection to database "o19"
Connecting ...
Connected to "o19"
Connected as SYSDBA.
New primary database "o19" is opening...
Operation requires start up of instance "o19dg" on database "o19dg"
Starting instance "o19dg"...
Connected to an idle instance.
ORACLE instance started.
Connected to "o19dg"
Database mounted.
Database opened.
Connected to "o19dg"
Switchover succeeded, new primary is "o19"

此时,切换已经完成。在新主库上确认:

DGMGRL> show configuration verbose;
Configuration - o19
  Protection Mode: MaxAvailability
  Members:
  o19   - Primary database
    o19dg - Physical standby database
  Properties:
    FastStartFailoverThreshold      = '30'
    OperationTimeout                = '30'
    TraceLevel                      = 'USER'
    FastStartFailoverLagLimit       = '0'
    CommunicationTimeout            = '180'
    ObserverReconnect               = '0'
    FastStartFailoverAutoReinstate  = 'TRUE'
    FastStartFailoverPmyShutdown    = 'TRUE'
    BystandersFollowRoleChange      = 'ALL'
    ObserverOverride                = 'FALSE'
    ExternalDestination1            = ''
    ExternalDestination2            = ''
    PrimaryLostWriteAction          = 'CONTINUE'
    ConfigurationWideServiceName    = 'o19_CFG'
Fast-Start Failover:  Disabled
Configuration Status:
SUCCESS

相关推荐