
本記事の目的
Data Guar Broker(dgmgrlコマンド)による基本管理コマンドのメモです。
検証環境
先日、Hybrid Data Guardの手順で構築したDBCS上の環境を利用。
Oracle Databaseバージョン:19c
ホスト名 | DB_UNIQUE_NAME | 最初のロール |
dg01 | db19c_nrt19d | Primary |
dg02 | db19c_nrt1gh | Standby |
基本管理コマンド
※dgmgrlはdg01(最初のロールがprimary)で実施。
CONNECT
DGMGRLのCONNECTコマンドを使用すると、Data Guard Broker構成のメンバーであるデータベースまたは遠隔同期インスタンスに接続できます。
[oracle@dg01 ~]$ dgmgrl DGMGRL for Linux: Release 19.0.0.0.0 - Production on Mon May 3 20:36:38 2021 Version 19.10.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 Password: Connected to "db19c_nrt19d" Connected as SYSDBA.
CREATE CONFIGURATION
CREATE CONFIGURATIONコマンドは、指定されたプライマリ・データベースを含む新しいブローカ構成を作成します。
・プライマリDBを登録
DGMGRL> CREATE CONFIGURATION dgconfig AS PRIMARY DATABASE IS db19c_nrt19d CONNECT IDENTIFIER IS db19c_nrt19d; Configuration "dgconfig" created with primary database "db19c_nrt19d"
ADD DATABASE
DGMGRLのADD DATABASEコマンドは、既存のブローカ構成にスタンバイ・データベースを追加します。
・スタンバイDBを登録
DGMGRL> ADD DATABASE db19c_nrt1gh AS CONNECT IDENTIFIER IS db19c_nrt1gh MAINTAINED AS PHYSICAL; Database "db19c_nrt1gh" added
ENABLE CONFIGURATION
ENABLE CONFIGURATIONコマンドは、すべてのデータベースを含むブローカ構成をブローカで管理できるようにします。
・有効化
DGMGRL> enable configuration; Enabled.
SHOW CONFIGURATION
SHOW CONFIGURATIONコマンドは、ブローカ構成のサマリーおよびステータスを表示します。
DGMGRL> show configuration Configuration - dgconfig Protection Mode: MaxPerformance Members: db19c_nrt19d - Primary database db19c_nrt1gh - Physical standby database Fast-Start Failover: Disabled Configuration Status: SUCCESS (status updated 30 seconds ago)
⇒プライマリDBはdb19c_nrt19d 、スタンバイはdb19c_nrt1gh、ステータスは正常であることが確認できる。
もし設定不備などがあれば、警告メッセージが表示されるのでチェック。
SHOW DATABASE
SHOW DATABASEコマンドは、指定したデータベースとそのインスタンスに関する情報、プロパティ値または初期化パラメータ値を表示します。
・プライマリDBを指定
DGMGRL> show database db19c_nrt19d Database - db19c_nrt19d Role: PRIMARY Intended State: TRANSPORT-ON Instance(s): db19c Database Status: SUCCESS
・スタンバイDBを指定
DGMGRL> show database db19c_nrt1gh Database - db19c_nrt1gh Role: PHYSICAL STANDBY Intended State: APPLY-ON Transport Lag: 0 seconds (computed 10 seconds ago) Apply Lag: 7 seconds (computed 10 seconds ago) Average Apply Rate: 131.00 KByte/s Real Time Query: OFF Instance(s): db19c Database Status: SUCCESS
⇒転送ラグ、適用ラグなども確認できる。
VERBOSEを付けると、より詳細な情報表示が可能。
DGMGRL> show database verbose "DB19C_NRT19D" Database - db19c_nrt19d Role: PRIMARY Intended State: TRANSPORT-ON Instance(s): db19c Properties: DGConnectIdentifier = 'db19c_nrt19d' ObserverConnectIdentifier = '' FastStartFailoverTarget = '' PreferredObserverHosts = '' LogShipping = 'ON' RedoRoutes = '' LogXptMode = 'ASYNC' DelayMins = '0' Binding = 'optional' MaxFailure = '0' ReopenSecs = '300' NetTimeout = '30' RedoCompression = 'DISABLE' PreferredApplyInstance = '' ApplyInstanceTimeout = '0' ApplyLagThreshold = '30' TransportLagThreshold = '30' TransportDisconnectedThreshold = '30' ApplyParallel = 'AUTO' ApplyInstances = '0' StandbyFileManagement = '' ArchiveLagTarget = '0' LogArchiveMaxProcesses = '0' LogArchiveMinSucceedDest = '0' DataGuardSyncLatency = '0' LogArchiveTrace = '0' LogArchiveFormat = '' DbFileNameConvert = '' LogFileNameConvert = '' ArchiveLocation = '' AlternateLocation = '' StandbyArchiveLocation = '' StandbyAlternateLocation = '' InconsistentProperties = '(monitor)' InconsistentLogXptProps = '(monitor)' LogXptStatus = '(monitor)' SendQEntries = '(monitor)' RecvQEntries = '(monitor)' HostName = 'dg01' StaticConnectIdentifier = '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=dg01)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=db19c_nrt19d_DGMGRL.subnetpub01.vcn01.oraclevcn.com)(INSTANCE_NAME=db19c)(SERVER=DEDICATED)))' TopWaitEvents = '(monitor)' SidName = '(monitor)' Log file locations: Alert log : /u01/app/oracle/diag/rdbms/db19c_nrt19d/db19c/trace/alert_db19c.log Data Guard Broker log : /u01/app/oracle/diag/rdbms/db19c_nrt19d/db19c/trace/drcdb19c.log Database Status: SUCCESS
SHOW INSTANCE
SHOW INSTANCEコマンドは、指定したインスタンスの情報またはプロパティ値を表示します。
・プライマリDBのインスタンスを指定した実行例
DGMGRL> show instance verbose db19c on database db19c_nrt19d Instance 'db19c' of database 'db19c_nrt19d' PFILE: Properties: HostName = 'dg01' StaticConnectIdentifier = '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=dg01)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=db19c_nrt19d_DGMGRL.subnetpub01.vcn01.oraclevcn.com)(INSTANCE_NAME=db19c)(SERVER=DEDICATED)))' TopWaitEvents = '(monitor)' SidName = '(monitor)' Log file locations: Alert log : /u01/app/oracle/diag/rdbms/db19c_nrt19d/db19c/trace/alert_db19c.log Data Guard Broker log : /u01/app/oracle/diag/rdbms/db19c_nrt19d/db19c/trace/drcdb19c.log Instance Status: SUCCESS
SWITCH OVER
SWITCHOVERコマンドを発行すると、現行のプライマリ・データベースがスタンバイ・データベースになり、指定したスタンバイ・データベースがプライマリ・データベースになります。
スタンバイロールのdb19c_nrt1ghにスイッチオーバーしてみる。
・まずはvalidate
DGMGRL> validate database db19c_nrt1gh Database Role: Physical standby database Primary Database: db19c_nrt19d Ready for Switchover: Yes Ready for Failover: Yes (Primary Running) Managed by Clusterware: db19c_nrt19d: YES db19c_nrt1gh: YES
⇒Ready YESなので準備はOK
・スイッチオーバー実行
DGMGRL> switchover to db19c_nrt1gh Performing switchover NOW, please wait... Operation requires a connection to database "db19c_nrt1gh" Connecting ... Connected to "db19c_nrt1gh" Connected as SYSDBA. New primary database "db19c_nrt1gh" is opening... Oracle Clusterware is restarting database "db19c_nrt19d" ... Connected to "db19c_nrt19d" Connected to "db19c_nrt19d" Switchover succeeded, new primary is "db19c_nrt1gh"
・設定&状態確認
DGMGRL> show configuration Configuration - dgconfig Protection Mode: MaxPerformance Members: db19c_nrt1gh - Primary database★ db19c_nrt19d - Physical standby database★ Fast-Start Failover: Disabled Configuration Status: SUCCESS (status updated 3 seconds ago)
⇒プライマリとスタンバイが入れ替わってることを確認。
FAILOVER
FAILOVERコマンドは、指定したターゲットのスタンバイ・データベースをプライマリ・データベースのロールに遷移するフェイルオーバーを開始します。
db19c_nrt19dを指定してフェイルオーバーすることで、最初の状態に戻す。
(フェイルオーバーが必要な前提。実行可能ならスイッチオーバーでもちろん良い)
・まずはvalidate
DGMGRL> validate database db19c_nrt19d Database Role: Physical standby database Primary Database: db19c_nrt1gh Ready for Switchover: Yes Ready for Failover: Yes (Primary Running) Managed by Clusterware: db19c_nrt1gh: YES db19c_nrt19d: YES Standby Apply-Related Information: Apply State: Running Apply Lag: 10 seconds (computed 0 seconds ago) Apply Delay: 0 minutes
・フェイルオーバー実行
DGMGRL> failover to db19c_nrt19d Performing failover NOW, please wait... Failover succeeded, new primary is "db19c_nrt19d"
⇒成功
・基本設定&状態確認
DGMGRL> show configuration Configuration - dgconfig Protection Mode: MaxPerformance Members: db19c_nrt19d - Primary database db19c_nrt1gh - Physical standby database (disabled)★ ORA-16661: the standby database needs to be reinstated Fast-Start Failover: Disabled Configuration Status: SUCCESS (status updated 5 seconds ago)
⇒プライマリはdb19c_nrt19dに変更されて、db19c_nrt1ghはdisabled状態となる
REINSTATE DATABASE
REINSTATE DATABASEコマンドは、ブローカ構成内で、データベースを現在のプライマリ・データベースの新規スタンバイ・データベースとして回復します。
・まずは旧プライマリDBをmountしなおす。
[dg02] SQL> shutdown abort ORACLE instance shut down. [dg02] SQL> startup mount ORACLE instance started. Total System Global Area 6442449464 bytes Fixed Size 9148984 bytes Variable Size 1140850688 bytes Database Buffers 5268045824 bytes Redo Buffers 24403968 bytes Database mounted.
・そして、reinstate実行
DGMGRL> reinstate database db19c_nrt1gh Reinstating database "db19c_nrt1gh", please wait... Reinstatement of database "db19c_nrt1gh" succeeded
⇒成功!
・設定&状態確認
DGMGRL> show configuration Configuration - dgconfig Protection Mode: MaxPerformance Members: db19c_nrt19d - Primary database db19c_nrt1gh - Physical standby database★ Fast-Start Failover: Disabled Configuration Status: SUCCESS (status updated 48 seconds ago)
⇒復旧も成功。
おまけ
フェイルオーバー実行時のORA-16600エラー
DGMGRL> failover to db19c_nrt19d Performing failover NOW, please wait... Error: ORA-16600: not connected to target standby database for failover Failed. Unable to failover
⇒ターゲットDBに接続していないと怒られる。
以下のようにdgmgrlでサービス名を指定して接続しなおした後に実行したら成功。
DGMGRL> connect sys@db19c_nrt19d Password: Connected to "db19c_nrt19d" Connected as SYSDBA.
sqlplusを利用したDBロール確認
・dg01
[dg01] SQL> SELECT DB_UNIQUE_NAME,DATABASE_ROLE FROM V$DATABASE; DB_UNIQUE_NAME DATABASE_ROLE ------------------------------ ---------------- db19c_nrt19d PRIMARY
・dg02
[dg02] SQL> SELECT DB_UNIQUE_NAME,DATABASE_ROLE FROM V$DATABASE; DB_UNIQUE_NAME DATABASE_ROLE ------------------------------ ---------------- db19c_nrt1gh PHYSICAL STANDBY
sqlplusを利用した保護モード確認
[dg02] SQL> SELECT PROTECTION_MODE,PROTECTION_LEVEL FROM V$DATABASE; PROTECTION_MODE PROTECTION_LEVEL ------------------------------ ------------------------------ MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE
sqlplusを利用したラグ確認
col value for a20 SQL> select SOURCE_DB_UNIQUE_NAME, NAME, VALUE, TIME_COMPUTED, DATUM_TIME from v$dataguard_stats where name like '%lag'; SOURCE_DB_UNIQUE_NAME NAME VALUE TIME_COMPUTED DATUM_TIME -------------------------------- -------------------------------- -------------------- ------------------------------ ------------------------------ db19c_nrt19d transport lag +00 00:00:00 05/03/2021 20:42:54 05/03/2021 20:42:40 db19c_nrt19d apply lag +00 00:00:07 05/03/2021 20:42:54 05/03/2021 20:42:40
参考情報
・Data Guard 構成の監視 (Doc ID 2067047.1)
・マニュアル「Oracle® Data Guard Broker 19c」
Leave a Reply