0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Data Guard Broker 環境の構築 (Oracle Database 19c)

Last updated at Posted at 2025-04-21

Oracle Data Guard Broker とは

 Data Guard Broker とは Oracle Database Enterprise Edition の機能で、Data Guard の構成、管理、監視を自動化することができます。DMON バックグラウンド・プロセスが Data Guard の状態を監視し、必要な操作を自動的に行うことができます。
 本記事では Data Guard Broker の初期設定と、状態を確認するところまでを記載しています。

環境

以下の環境を使って Data Guard Broker を構成します。

比較 プライマリ スタンバイ
OS Red Hat Enterprise Linux 8 Red Hat Enterprise Linux 8
ホスト名 rel8-3 rel8-4
データベース名(db_name) O19A O19A
データベース一意名(db_unique_name) O19A O19S
ドメイン名(db_domain) '' ''
SID O19A O19S
TNS接続名 O19A O19S
Oracle Home /opt/oracle/product/19.0.0/dbhome_1 /opt/oracle/product/19.0.0/dbhome_1

プライマリ環境の構築

 Data Guard Broker を設定する前にプライマリとして利用するデータベースを構築します。Data Guard 環境を構築するために以下のような最低限の設定が必要です。

  • ARCHIVELOG モード
  • アーカイブログ出力先(log_archive_dest_1 初期化パラメーター)
  • データベースの FORCE LOGGING 設定
  • FLASHBACK ログの設定(オプション)

初期化パラメーター dg_broker_config_file1, dg_broker_config_file2 に Data Guard Broker 設定ファイルのパスを設定します。デフォルト値では $ORACLE_HOME/dbs/dr#{DB_NAME}.dat が設定されています。このままでも良いのですが、Oracle Real Application Clusters のように複数ノードで稼働する環境の場合は共有ストレージに配置する必要があります。スタンバイ・データベースへ REDO 転送を行うための初期化パラメーター log_archive_dest_N の設定は現状では不要です(設定している場合は解除します)。

初期化パラメーター設定の確認
SQL> SHOW PARAMETER dg_broker_config_file

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
dg_broker_config_file1               string      /opt/oracle/product/19.0.0/dbhome_1/dbs/dr1O19A.dat
dg_broker_config_file2               string      /opt/oracle/product/19.0.0/dbhome_1/dbs/dr2O19A.dat

スタンバイ環境の構築

Data Guard (Physical Standby) は制御ファイルはスタンバイ・データベースではスタンバイ用の制御ファイルを使用しますが、プライマリとスタンバイで同一のデータファイルを使用します。

プライマリ・データファイルのコピー

 スタンバイ・データベースを構築する方法はいくつかありますが、RMAN の DUPLICATE コマンドを用いる方法が簡単です。

スタンバイ環境の構築
RMAN> DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE NOFILENAMECHECK;

Duplicate Db25-04-18で開始しています
リカバリ・カタログのかわりにターゲット・データベース制御ファイルを使用しています
チャネル: ORA_AUX_DISK_1が割り当てられました
チャネルORA_AUX_DISK_1: SID=391 デバイス・タイプ=DISK

メモリー・スクリプトの内容:
{
   backup as copy reuse
   passwordfile auxiliary format  '/opt/oracle/product/19.0.0/dbhome_1/dbs/orapwO19S'   ;
}
メモリー・スクリプトを実行しています

backup25-04-18で開始しています
チャネル: ORA_DISK_1が割り当てられました
チャネルORA_DISK_1: SID=404 デバイス・タイプ=DISK
backup25-04-18で終了しました

メモリー・スクリプトの内容:
{
   sql clone "create spfile from memory";
   shutdown clone immediate;
   startup clone nomount;
   restore clone from service  'O19A' standby controlfile;
}
メモリー・スクリプトを実行しています

<< 途中省略>>

データファイル1はデータファイル・コピーに切り替えられました
入力データファイル・コピー レコードID=7 スタンプ=1198765912 ファイル名=+DATA/O19S/DATAFILE/system.258.1198765851
データファイル2はデータファイル・コピーに切り替えられました
入力データファイル・コピー レコードID=8 スタンプ=1198765912 ファイル名=+DATA/O19S/DATAFILE/sysaux.257.1198765855
データファイル3はデータファイル・コピーに切り替えられました
入力データファイル・コピー レコードID=9 スタンプ=1198765912 ファイル名=+DATA/O19S/DATAFILE/undotbs1.259.1198765869
データファイル4はデータファイル・コピーに切り替えられました
入力データファイル・コピー レコードID=10 スタンプ=1198765912 ファイル名=+DATA/O19S/DATAFILE/users.269.1198765895
データファイル5はデータファイル・コピーに切り替えられました
入力データファイル・コピー レコードID=11 スタンプ=1198765912 ファイル名=+DATA/O19S/DATAFILE/users_auto1.270.1198765909
データファイル6はデータファイル・コピーに切り替えられました
入力データファイル・コピー レコードID=12 スタンプ=1198765912 ファイル名=+DATA/O19S/DATAFILE/users_uni1.271.1198765911
Duplicate Db25-04-18で終了しました

Grid Infrastructure への登録

 スタンバイ・データベースはそのままでは Oracle Grid Infrastructure に認識されていませんので登録します。その際にスタンバイ・データベースであること(-role オプション)、起動オプション(-startoption オプション)を mount にすることを指定します(Active Data Guard 環境であれば open モード)。必要に応じてパスワード・ファイル、SPFILE も設定します。

Grid Infrastructure への登録
$ srvctl add database -db O19S -oraclehome $ORACLE_HOME -role PHYSICAL_STANDBY -startoption mount -dbname O19A -policy AUTOMATIC
$
$ srvctl config database -db O19S
Database unique name: O19S
Database name: O19A
Oracle home: /opt/oracle/product/19.0.0/dbhome_1
Oracle user: oracle
Spfile:
Password file:
Domain:
Start options: mount
Stop options: immediate
Database role: PHYSICAL_STANDBY
Management policy: AUTOMATIC
Disk Groups:
Services:
OSDBA group:
OSOPER group:
Database instance: O19S

Data Guard Broker の設定

リスナーの設定

リスナーに「{DB_UNIQUE_NAME}_DGMGRL.{db_domain}」の名前の静的サービスを登録します。これは Data Guard Broker がリスナー経由でインスタンス再起動を行うために必要な設定です。プライマリ・データベース、スタンバイ・データベース双方で実行します。

リスナーにサービス登録
$ lsnrctl status

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 21-4月 -2025 10:3                                     5:16

Copyright (c) 1991, 2021, Oracle.  All rights reserved.

(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=rel8-4)(PORT=1521)))に接続中
リスナーのステータス
------------------------
別名                      LISTENER
バージョン                TNSLSNR for Linux: Version 19.0.0.0.0 - Produ                                     ction
開始日                    21-4月 -2025 10:35:12
稼働時間                  0 日 0 時間 0 分 3 秒
トレース・レベル          off
セキュリティ              ON: Local OS Authentication
SNMP                      OFF
パラメータ・ファイル      /opt/grid/product/19.0.0/grid/network/admin/l                                     istener.ora
ログ・ファイル            /opt/grid/diag/tnslsnr/rel8-4/listener/alert                                     /log.xml
リスニング・エンドポイントのサマリー...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=rel8-4)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
サービスのサマリー...
サービス"O19S_DGMGRL"には、1件のインスタンスがあります。
  インスタンス"O19S"、状態UNKNOWNには、このサービスに対する1件のハンド                                      ラがあります...
コマンドは正常に終了しました。

初期化パラメーターの設定

 Data Guard Broker を起動するために、初期化パラメーター dg_broker_start を TRUE に設定します。この操作はプライマリ・データベース、スタンバイ・データベース双方で行います。DMON バックグラウンド・プロセスが起動します。

Data Guard Broker の起動
SQL> ALTER SYSTEM SET dg_broker_start=TRUE;

システムが変更されました。

SQL> SELECT pname FROM v$process WHERE pname LIKE 'DMON%';

PNAME
-----
DMON

Data Guard Broker の設定

dgmgrl コマンド実行し、Data Guard Broker の設定を行います。これはプライマリまたはスタンバイどちらかで実行します。起動できたら CONNECT サブコマンドでインスタンスへ接続します。dgmgrl コマンドの出力言語は環境変数 NLS_LANG に依存します。

DGMGRL の起動
$ dgmgrl
DGMGRL for Linux: Release 19.0.0.0.0 - Production on  4 21 11:56:46 2025
Version 19.14.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.

DGMGRLへようこそ。詳細は"help"と入力してください。
DGMGRL> CONNECT SYS/{パスワード}@O19A
"O19A"に接続しました
SYSDBAとして接続しました。
DGMGRL> 

CREATE CONFIGURATION 文で Broker 定義を作成します。SHOW CONFIGURATION コマンドは設定の確認を行います。行末にセミコロン(;)は不要です。

構成の作成
DGMGRL> CREATE CONFIGURATION 'dg1_config' AS PRIMARY DATABASE IS 'O19A' CONNECT IDENTIFIER IS O19A;
構成"dg1_config"が、プライマリ・データベース"O19A"で作成されました

DGMGRL> SHOW CONFIGURATION

構成 - dg1_config

  保護モード: MaxPerformance
  メンバー:
  O19A - プライマリ・データベース
  
ファスト・スタート・フェイルオーバー:  Disabled

構成ステータス:
DISABLED

ADD DATABASE 文でスタンバイデータベースを追加します。

スタンバイの追加
DGMGRL> ADD DATABASE 'O19S' AS CONNECT IDENTIFIER IS O19S MAINTAINED AS PHYSICAL;
データベース"O19S"が追加されました

DGMGRL> SHOW CONFIGURATION

構成 - dg1_config

  保護モード: MaxPerformance
  メンバー:
  O19A - プライマリ・データベース
    O19S - フィジカル・スタンバイ・データベース

ファスト・スタート・フェイルオーバー:  Disabled

構成ステータス:
DISABLED

Broker を有効化します。

Broker 定義の有効化
DGMGRL> ENABLE CONFIGURATION
有効になりました。
DGMGRL> SHOW CONFIGURATION

構成 - dg1_config

  保護モード: MaxPerformance
  メンバー:
  O19A - プライマリ・データベース
    O19S - フィジカル・スタンバイ・データベース

ファスト・スタート・フェイルオーバー:  Disabled

構成ステータス:
SUCCESS

スタンバイREDOログの追加

スタンバイREDOログファイルは自動追加されません。あらかじめ作成しておきます。Data Guard Broker 設定の起動後にスタンバイREDOログを追加すると、エラーORA-01156 が発生します。

Data Guard Broker 有効後のスタンバイREDOログ追加
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 5('+REDO1','+REDO2') SIZE 200M;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 5('+REDO1','+REDO2') SIZE 200M
*
1でエラーが発生しました。:
ORA-01156:
現在処理中のリカバリまたはフラッシュバックで、ファイルのアクセスを必要とする可能
性があります

この場合は REDO 適用を一時停止(SET STATE='APPLY-OFF')してからスタンバイREDOを追加し、REDO 適用を再開します。

REDO適用の無効化と有効化
DGMGRL> EDIT DATABASE 'O19S' SET STATE='APPLY-OFF';
成功しました。

--- スタンバイ REDO の追加

DGMGRL> EDIT DATABASE 'O19S' SET STATE='APPLY-ON';
成功しました。
スタンバイREDOログの追加
SQL> ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 5 ('+REDO1', '+REDO2') SIZE 2000M;

データベースが変更されました。

詳細の確認

Broker 設定の確認

上記の例で実行した SHOW CONFIGURATION オプションには REDO ラグの情報(LAG)と詳細情報(VERBOSE)を追加指定できます。

構成の詳細確認
DGMGRL> SHOW CONFIGURATION LAG VERBOSE

構成 - dg1_config

  保護モード: MaxPerformance
  メンバー:
  O19A - プライマリ・データベース
    O19S - フィジカル・スタンバイ・データベース
           トランスポート・ラグ: 0  (0秒前に計算されました)
           適用ラグ:       0  (0秒前に計算されました)

  プロパティ:
    FastStartFailoverThreshold      = '30'
    OperationTimeout                = '30'
    TraceLevel                      = 'USER'
    FastStartFailoverLagLimit       = '30'
    CommunicationTimeout            = '180'
    ObserverReconnect               = '0'
    FastStartFailoverAutoReinstate  = 'TRUE'
    FastStartFailoverPmyShutdown    = 'TRUE'
    BystandersFollowRoleChange      = 'ALL'
    ObserverOverride                = 'FALSE'
    ExternalDestination1            = ''
    ExternalDestination2            = ''
    PrimaryLostWriteAction          = 'CONTINUE'
    ConfigurationWideServiceName    = 'O19A_CFG'

ファスト・スタート・フェイルオーバー:  Disabled

構成ステータス:
SUCCESS

データベースの確認

VALIDATE DATABASE 文を実行するとデータベースの状態を確認できます。VERBOSE オプションを追加すると詳細が出力されます。

プライマリ・データベースの確認
DGMGRL> VALIDATE DATABASE VERBOSE 'O19A';

  データベース・ロール:  プライマリ・データベース

  スイッチオーバー可能:  はい

  フラッシュバック・データベースのステータス:
    O19A:  オフ

  容量の情報:
    データベース  インスタンス  スレッド
    O19A                1                1

  クラスタウェアにより管理される:
    O19A:  YES

  一時的な表領域ファイルの情報:
    O19A TEMPファイル:  1

  データ・ファイルをオンラインで移動中:
    O19A:  いいえ

  転送関連の情報:
    転送する:  はい

  クリアされたログ・ファイル:
    O19A スタンバイREDOログ・ファイル:  クリアされました
スタンバイ・データベースの確認
DGMGRL> VALIDATE DATABASE VERBOSE 'O19S';

  データベース・ロール:        フィジカル・スタンバイ・データベース
  プライマリ・データベース:  O19A

  スイッチオーバー可能:  はい
  フェイルオーバー可能:  はい (プライマリ実行中)

  フラッシュバック・データベースのステータス:
    O19A:  オフ
    O19S:  オフ

  容量の情報:
    データベース  インスタンス  スレッド
    O19A                1                1
    O19S                1                1

  クラスタウェアにより管理される:
    O19A:  YES
    O19S:  YES

  一時的な表領域ファイルの情報:
    O19A TEMPファイル:  1
    O19S TEMPファイル:  1

  データ・ファイルをオンラインで移動中:
    O19A:  いいえ
    O19S:  いいえ

  スタンバイ適用関連の情報:
    適用状態:     実行中
    適用ラグ:     0  (0秒前に計算されました)
    遅延の適用:  0 

  転送関連の情報:
    転送する:           はい
    ギャップのステータス:  ギャップはありません
    トランスポート・ラグ:  0  (0秒前に計算されました)
    転送ステータス:  成功

  クリアされたログ・ファイル:
    O19A スタンバイREDOログ・ファイル:  クリアされました
    O19S オンラインREDOログ・ファイル:  クリアされました
    O19S スタンバイREDOログ・ファイル:  使用可能

  現在のログ・ファイル・グループの構成:
    スレッド番号オンラインREDOログ・グループスタンバイREDOログ・グループステータス
              (O19A)                  (O19S)
    1         4                       5                       十分なSRL

  今後のログ・ファイル・グループの構成:
    スレッド番号オンラインREDOログ・グループスタンバイREDOログ・グループステータス
              (O19S)                  (O19A)
    1         4                       5                       十分なSRL

  現在の構成ログ・ファイルのサイズ:
    スレッド番号 最小のオンラインREDO 最小のスタンバイREDO
               ログ・ファイル・サイズ ログ・ファイル・サイズ
               (O19A)                    (O19S)
    1          200 MBytes                200 MBytes

  今後の構成ログ・ファイルのサイズ:
    スレッド番号 最小のオンラインREDO 最小のスタンバイREDO
               ログ・ファイル・サイズ ログ・ファイル・サイズ
               (O19S)                    (O19A)
    1          200 MBytes                200 MBytes

  適用関連のプロパティ設定:
    プロパティ                 O19A                  O19S 
    DelayMins                       0                        0
    ApplyParallel                   AUTO                     AUTO
    ApplyInstances                  0                        0

  転送関連のプロパティ設定:
    プロパティ                 O19A                  O19S 
    LogShipping                     ON                       ON
    LogXptMode                      ASYNC                    ASYNC
    Dependency                      <empty>                  <empty>
    DelayMins                       0                        0
    Binding                         optional                 optional
    MaxFailure                      0                        0
    ReopenSecs                      300                      300
    NetTimeout                      30                       30
    RedoCompression                 DISABLE                  DISABLE

Author: Noriyoshi Shinoda / Date: April 21, 2025

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?