使用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
