Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Oracle Database 23ai 新機能 #2 Oracle Data Guard p...

Oracle Database 23ai 新機能 #2 Oracle Data Guard per Pluggable Database (DGPDB)

2024年7月25日 Oracle Database Technology Night#80 開催分
前半セッション Oracle Data Guard per Pluggable Database (DGPDB)のスライドです

oracle4engineer

July 25, 2024
Tweet

Video

More Decks by oracle4engineer

Other Decks in Technology

Transcript

  1. Oracle Database Technology Night #80 Oracle Data Guard per Pluggable

    Database (DGPDB) Oracle Database 23ai 新機能 #2 宮本 拓弥 ⽇本オラクル株式会社 2024年7⽉25⽇
  2. Copyright © 2024, Oracle and/or its affiliates 2 • Oracle

    Data Guard per Pluggable Database (DGPDB) とは︖ • Data Guard per CDBとの⽐較 • 構築⼿順 • 機能の紹介 • スイッチオーバーの実⾏ • フェイルオーバーの実⾏ • リアルタイム問合せ • デモ • 監視操作 • スイッチオーバー • リアルタイム問合せ Agenda
  3. Copyright © 2024, Oracle and/or its affiliates 3 Oracle Data

    Guard per Pluggable Database (DGPDB) とは︖
  4. Copyright © 2024, Oracle and/or its affiliates 4 DGPDBとは︖ •

    Oracle Database 21c (21.7)から追加された機能 • Data Guard構成をPDB単位で組むことができる • DGPDB構成では2つのプライマリCDBで構成する • Data Guard Brokerで構成する メリット • CDB内の他のPDBに影響を与えず、個別にPDBの 復旧作業ができる • 2つの異なる拠点でのワークロードのバランスを保つ ことができる(プライマリPDBを拠点間で分散できる) • PDBレベルでのロール変換はCDBレベルで実⾏する よりも迅速 Oracle Data Guard per Pluggable Database (DGPDB) とは プライマリCDB プライマリCDB ソース PDB ソース PDB ターゲット PDB ターゲット PDB ⾮保護 PDB ⾮保護 PDB REDO転送
  5. Copyright © 2024, Oracle and/or its affiliates 5 Data Guard

    per CDBとData Guard per PDBの⽐較
  6. Copyright © 2024, Oracle and/or its affiliates 6 Data Guard

    per CDBとData Guard per PDBの⽐較 プライマリCDB プライマリCDB ソース PDB ソース PDB ターゲット PDB ターゲット PDB ⾮保護 PDB ⾮保護 PDB プライマリCDB スタンバイCDB Data Guard per CDB Data Guard per PDB
  7. Copyright © 2024, Oracle and/or its affiliates 7 Data Guard

    per CDBとData Guard per PDBの⽐較 プライマリCDB プライマリCDB ソース PDB ソース PDB ターゲット PDB ターゲット PDB ⾮保護 PDB ⾮保護 PDB プライマリCDB スタンバイCDB Data Guard per CDB Data Guard per PDB DGPDBでのCDBについて • CDBレベルでは異なる(レプリカではない)データベースとして 扱う • 互いに異なるDBIDを持つ • 両⽅のCDB$ROOTは、読取り・書込みモードで オープン状態
  8. Copyright © 2024, Oracle and/or its affiliates 8 Data Guard

    per CDBとData Guard per PDBの⽐較 プライマリCDB プライマリCDB ソース PDB ソース PDB ターゲット PDB ターゲット PDB ⾮保護 PDB ⾮保護 PDB プライマリCDB スタンバイCDB Data Guard per CDB Data Guard per PDB DG per CDBとDG per PDBは共存できない ⇨ ロール変更によってPDB構成が⼀貫しなくなるため
  9. 使⽤できる主な機能の⽐較 Data Guard per CDBとData Guard per PDBの⽐較 Copyright ©

    2024, Oracle and/or its affiliates 9 構成 Data Guard per CDB Data Guard per PDB スイッチオーバーとフェイルオーバー CDBごと PDBごと 保護モード すべて対応 最⼤パフォーマンスのみ ファストスタート・フェイルオーバー ✔ ✘ フラッシュバックを使⽤した回復 ✔ ✘ スナップショット・スタンバイ・データベース ✔ ✘ リアルタイム問合せ ✔ ✔ 複数スタンバイ構成 ✔ ✘ 指定できるアーカイブ先 (LOG_ARCHIVE_DEST_n)の最⼤数 31 2 ⾃動ブロック修復機能 ✔ ✘ DMLリダイレクション ✔ ✘ ローリング・メンテナンス ✔ ✘ アプリケーション・コンティニュイティ ✔ ✘ 遠隔同期インスタンス ✔ ✘ ZDLRAへのバックアップ ✔ ✘ 23aiから可能
  10. DGPDBによって何が期待できる︖ Data Guard per CDBとData Guard per PDBの⽐較 Copyright ©

    2024, Oracle and/or its affiliates 10 プライマリCDB プライマリCDB ソース PDB ソース PDB ターゲット PDB ターゲット PDB ⾮保護 PDB ⾮保護 PDB クライアント クライアント 構成の柔軟性によるリソースの利活⽤ • ソースPDB、ターゲットPDB、⾮保護PDBが 同じCDB上で共存できる • 同じCDB上にData Guard構成を組んだ PDBが存在していてもターゲット・ロール以外 のPDBに対して読取り・書込み処理が可能 • DG per CDBでは、 • 同じCDB上のPDBは全て同じロールになる • 基本的に(※)プライマリCDBに配置されている PDBにのみ読取り・書込み処理が可能 ※ スナップショット・スタンバイ・データベースやDMLリダイレクションなどの機能によっ て書き込みできるが、⼀時的であったり、⼤量の書き込みには対応できないなどの 制限がある R/W 処理 R/W 処理 Data Guard per PDB
  11. DGPDBによって何が期待できる︖ Data Guard per CDBとData Guard per PDBの⽐較 Copyright ©

    2024, Oracle and/or its affiliates 11 プライマリCDB スタンバイCDB プライマリ ロール スタンバイ ロール プライマリ ロール スタンバイ ロール スタンバイ ロール プライマリ ロール クライアント クライアント 構成の柔軟性によるリソースの利活⽤ • ソースPDB、ターゲットPDB、⾮保護PDBが 同じCDB上で共存できる • 同じCDB上にData Guard構成を組んだ PDBが存在していてもターゲット・ロール以外 のPDBに対して読取り・書込み処理が可能 • DG per CDBでは、 • 同じCDB上のPDBは全て同じロールになる • 基本的に(※)プライマリCDBに配置されている PDBにのみ読取り・書込み処理が可能 ※ スナップショット・スタンバイ・データベースやDMLリダイレクションなどの機能によっ て書き込みできるが、⼀時的であったり、⼤量の書き込みには対応できないなどの 制限がある R/W 処理 R/W 処理 Data Guard per CDB
  12. REDO適⽤のアーキテクチャ – Data Guard per CDB (ASYNC)の場合 Data Guard per

    CDBとData Guard per PDBの⽐較 Copyright © 2024, Oracle and/or its affiliates 12 TOKYO (プライマリCDB) SALES FIN SGA REDO BUFFER LG WR オンライン REDOログ TT スタンバイ REDOログ RFS SALES MRP FIN REDO転送 ワーカー・プロセス 管理スタンバイ ・リカバリ・プロセス リモート・ファイル ・サーバー ・プロセス ログ・ライター OSAKA (スタンバイCDB) アーカイブ REDOログ アーカイブ REDOログ ① プライマリCDB側のインスタンスのログ・ライ ター(LGWR)がCDB全体のREDOログを オンラインREDOログに書き込む ② REDO転送ワーカー・プロセス(TTnn)が リモートCDBに情報を転送する ③ リモート・ファイル・サーバー(RFS)・プロセスが スタンバイREDOログにプライマリから受け 取ったREDOを書き込む ④ 管理スタンバイ・リカバリ・プロセス (MRP)が スタンバイREDOログからスタンバイCDBへ REDOを適⽤する ① ② ③ ④
  13. Data Guard per CDBとData Guard per PDBの⽐較 Copyright © 2024,

    Oracle and/or its affiliates 13 TOKYO (プライマリCDB) OSAKA (プライマリCDB) SALES (ソースPDB) PUB (⾮保護PDB) SGA REDO BUFFER LG WR オンライン REDOログ TT PDBレベルの スタンバイ REDOログ RFS SALES (ターゲットPDB) TT FIN (ターゲットPDB) TT REDO転送 ワーカー・プロセス 適⽤プロセス 適⽤プロセス リモート・ファイル ・サーバー ・プロセス ログ・ライター ① ソースPDB側のインスタンスのログ・ライタ(LGWR) がCDB全体のREDOログをオンラインREDOログ に書き込む ② REDO転送ワーカー・プロセス(TTnn)が ターゲットPDB側のCDBに情報を転送する ③ リモート・ファイル・サーバー(RFS)・プロセスがPDB レベルのスタンバイREDOログにプライマリから受け 取ったREDOを書き込む • スタンバイREDOログは ターゲット・ロールのPDBでのみ作成・参照可能 • ターゲット・ロールのPDBを複数もつCDBではそれ ぞれのPDBがPDBレベルのスタンバイREDOログを 共有する • 2回⽬以降に追加されたDGPDBは既存の スタンバイREDOログを使⽤するため、都度作成す ることは不要 ④ PDBごとの適⽤プロセス (TTnn)がスタンバイ REDOログからそれぞれのターゲットPDBへREDO を適⽤する REDO適⽤の開始、停⽌はPDBレベルで可能 REDO適⽤のアーキテクチャ – Data Guard per PDBの場合 アーカイブ REDOログ アーカイブ REDOログ ① ② ③ ④ FIN (ソースPDB)
  14. Data Guard per CDBとData Guard per PDBの⽐較 Copyright © 2024,

    Oracle and/or its affiliates 14 TOKYO (プライマリCDB) OSAKA (プライマリCDB) SALES (ソースPDB) FIN (⾮保護PDB) DEV (ソースPDB) PUB (⾮保護PDB) TT RFS SGA REDO BUFFER SGA REDO BUFFER LG WR オンラインREDOログ LG WR オンラインREDOログ TT PDBレベルの スタンバイ REDOログ PDBレベルの スタンバイ REDOログ RFS SALES (ターゲットPDB) DEV (ターゲットPDB) TT TT 適⽤プロセス 適⽤プロセス • 2つのプライマリCDBで構成されるため、 REDO転送サービスの各プロセスは対照的 に構成される • CDBレベルでREDOログを転送するため、 CDB内に書込みの激しい⾮保護PDBが 多い場合は、オーバーヘッドが⽣じる可能性 があるため、構成を考慮する必要がある REDO適⽤のアーキテクチャ – Data Guard per PDBの場合 アーカイブ REDOログ アーカイブ REDOログ
  15. 全体のワークフロー 構築⼿順 Copyright © 2024, Oracle and/or its affiliates 16

    REDO適⽤の開始 透過的データ暗号化 (TDE)の暗号化鍵の転送 スタンバイREDOログをターゲットPDBに追加 ソースPDBのデータファイルの転送 ターゲットPDBの追加 DGPDB_INTユーザ・アカウントのアンロック Data Guard Brokerの構成 Oracle Walletの設定 CDBの設定 TOKYO OSAKA FIN PUB SALES SALES
  16. CDBの設定 Copyright © 2024, Oracle and/or its affiliates 17 TOKYO

    OSAKA FIN PUB SALES • 2つのCDBを準備する • DGPDBを組みたいソースPDBも準備する 以下の設定を両CDBに対して実施する、 • それぞれのCDBのtnsnames.oraファイルにお互いの接続情報を⼊⼒する TOKYO = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = host1.jp.oracle.com)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = tokyo.jp.oracle.com)) ) OSAKA = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = host2.jp.oracle.com)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = osaka.us.oracle.com)) ) • ログ関連の設定 • Flashback Database、Archivelogモード、Force Loggingを有効にする • 初期化パラメータの設定 SQL> alter system set dg_broker_start=true scope=both; SQL> alter system set standby_file_management=auto scope=both; SQL> alter system set log_archive_dest_1=‘LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=<各CDBのDB_UNIQUE_NAME>' scope=both; 記⼊例:
  17. Oracle Walletの設定 Copyright © 2024, Oracle and/or its affiliates 18

    TOKYO OSAKA FIN PUB SALES • Walletの作成とsysユーザの認証資格の格納 (両CDBで実⾏) $ mkdir -p $ORACLE_HOME/dbs/wallets $ chmod -R 700 $ORACLE_HOME/dbs/wallets $ mkstore -wrl $ORACLE_HOME/dbs/wallets/dgpdb -create $ mkstore -wrl $ORACLE_HOME/dbs/wallets/dgpdb -createCredential tokyo 'sys’ $ mkstore -wrl $ORACLE_HOME/dbs/wallets/dgpdb -createCredential osaka 'sys' • sqlnet.oraファイルの内容の編集、設定完了後はデータベースを再起動する NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME) WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = <ORACLE_HOME>/dbs/wallets/dgpdb) ) ) SQLNET.WALLET_OVERRIDE = TRUE 記⼊例: • Walletを使⽤した接続確認 $ sqlplus /@tokyo as sysdba $ sqlplus /@osaka as sysdba
  18. Data Guard Brokerの構成 Copyright © 2024, Oracle and/or its affiliates

    19 TOKYO OSAKA FIN PUB SALES • Broker Configurationを作成する DGMGRL> connect /@tokyo Connected to "tokyo" DGMGRL> create configuration tokyo primary database is tokyo connect identifier is tokyo; Configuration "tokyo" created with primary database "tokyo" DGMGRL> show configuration Configuration - tokyo Protection Mode: MaxPerformance Members: tokyo - Primary database Fast-Start Failover: Disabled Configuration Status: DISABLED DG CFG Data Guard Broker • 2つ⽬のCDBも同様に実⾏する DG CFG
  19. Data Guard Brokerの構成 Copyright © 2024, Oracle and/or its affiliates

    20 TOKYO OSAKA FIN PUB SALES • 作成したBroker Configuration同⼠の接続を確⽴する DGMGRL> add configuration osaka connect identifier is osaka; Configuration osaka added. DGMGRL> enable configuration all; Succeeded. DGMGRL> show configuration Configuration - tokyo Protection Mode: MaxPerformance Members: tokyo - Primary database osaka - Primary database in osaka configuration Fast-Start Failover: Disabled Configuration Status: SUCCESS (status updated 4 seconds ago) DG CFG Data Guard Broker DG CFG
  20. DGPDB_INTユーザ・アカウントのアンロック Copyright © 2024, Oracle and/or its affiliates 21 TOKYO

    OSAKA FIN PUB SALES • DGPDB_INTユーザ・アカウントをアンロックする DGMGRL> edit configuration prepare dgpdb; Enter password for DGPDB_INT account at tokyo: Enter password for DGPDB_INT account at osaka: Prepared Data Guard for Pluggable Database at osaka. Prepared Data Guard for Pluggable Database at tokyo. DGPDB_INT ユーザ DGPDB_INT ユーザ DATABASE LINK 認証情報 認証情報 DGPDB_INTユーザ・アカウントとは︖ • CDB間での内部処理(主にターゲットPDBの作成やスイッチオー バーに関わる処理)をDatabase Linkを介して実⾏する • ユーザ間のDatabase Linkは内部的に作成される • DGPDBでは2つの独⽴したプライマリCDBで構成されていることか ら、内部処理の連携や権限の付与されたユーザによるSQL*Net を介した操作が必要になり、その役割を持つ • アンロックするとDGMGRLによってSYSDG管理権限が付与される
  21. ターゲットPDBの追加 Copyright © 2024, Oracle and/or its affiliates 22 TOKYO

    OSAKA FIN PUB • ソース・ロールとなるPDBがREAD WRITEで起動して いることを確認する SQL> connect /@tokyo as sysdba Connected. SQL> select open_mode from v$pdbs where name=‘SALES'; OPEN_MODE ---------- READ WRITE SALES SGA REDO BUFFER LG WR オンラインREDOログ TT RFS アーカイブ REDOログ DGMGRL> add pluggable database sales at osaka source is sales at tokyo pdbfilenameconvert is ”’/TOKYO/SALES/',’/OSAKA/SALES/'"; Pluggable Database ”SALES" added • ターゲットPDBを追加する • ターゲットPDBの追加確認 ? SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ----------- ---------- ---------- 2 PDB$SEED READ ONLY NO 3 KIXPDB1 READ WRITE NO 4 SALES MOUNTED
  22. ターゲットPDBの追加 Copyright © 2024, Oracle and/or its affiliates 23 TOKYO

    OSAKA FIN PUB • ターゲットPDBが追加されると、REDOログの転送が 開始するが、データファイルの転送とスタンバイREDO ログが作成が⾏われていないため、REDO適⽤は開 始されない • また、TDEウォレットを使⽤した環境(BaseDBではデ フォルト)の場合、REDO適⽤を開始する前に、 データファイルとREDOログの暗号化鍵の転送が必要 となる DGMGRL> show pluggable database sales at osaka Pluggable database - sales at osaka Data Guard Role: Physical Standby Con_ID: 4 Source: con_id 3 at TOKYO Transport Lag: (unknown) Apply Lag: (unknown) Intended State: APPLY-ON Apply State: Not Running Pluggable Database Status: ORA-16914: Redo Apply Services were not started at the standby pluggable database. SALES SGA REDO BUFFER LG WR オンラインREDOログ TT RFS アーカイブ REDOログ ? アーカイブ REDOログ PDBレベルの スタンバイ REDOログ ? REDOログ 暗号化 データファイル 暗号化
  23. ソースPDBのデータファイルの転送 Copyright © 2024, Oracle and/or its affiliates 24 TOKYO

    OSAKA FIN PUB • SCPもしくはRMANを⽤いてデータファイルを転送する SQL> connect /@tokyo as sysdba SQL> alter session set container=sales; Session altered. SQL> alter database begin backup; Database altered. SQL> host scp -r /u01/data/TOKYO/SALES oracle@host2:/u01/data/OSAKA SQL> alter database end backup; Database altered. SALES SGA REDO BUFFER LG WR オンラインREDOログ TT RFS アーカイブ REDOログ ? SCPを使⽤する場合の例: $ rman target /@tokyo auxiliary /@osaka RMAN> run{ allocate channel ch1 type disk; backup as copy reuse datafile 8,9,10,12 auxiliary format new; } RMANを使⽤する場合の例:
  24. スタンバイREDOログをターゲットPDBに追加 Copyright © 2024, Oracle and/or its affiliates 25 TOKYO

    OSAKA FIN PUB • スタンバイREDOログをターゲットPDBで作成する SQL> connect /@osaka as sysdba Connected. SQL> alter session set container=sales; Session altered. SQL> alter database add standby logfile size 200M; Database altered. SQL> alter database add standby logfile size 200M; Database altered. SQL> alter database add standby logfile size 200M; Database altered. SQL> alter database add standby logfile size 200M; Database altered. SALES SGA REDO BUFFER LG WR オンラインREDOログ TT RFS アーカイブ REDOログ ? アーカイブ REDOログ • 追加するスタンバイREDOログはソースPDBのCDBのオンライン REDOログと同じサイズである必要がある • スタンバイREDOログの数はソースPDBのCDBのオンラインREDO ログよりも1以上多い必要がある • スタンバイREDOログはPDBレベルで作成する (23aiから) • ターゲット・ロールのPDBでのみ作成・参照可能 • 2回⽬以降に追加されたDGPDBは既存の スタンバイREDOログを使⽤するため、都度作成することは不要 PDBレベルの スタンバイ REDOログ
  25. 透過的データ暗号化 (TDE)の暗号化鍵の転送 Copyright © 2024, Oracle and/or its affiliates 26

    TOKYO OSAKA FIN PUB SALES SGA REDO BUFFER LG WR オンラインREDOログ TT RFS アーカイブ REDOログ アーカイブ REDOログ PDBレベルの スタンバイ REDOログ TT 適⽤プロセス SALES REDOログ 暗号化 REDOログ 復号化 データファイル 暗号化 データファイル 復号化 ⼤阪のキーストア CDB$ROOT PUB DEV CDB$ROOT @TOKYO SALES @TOKYO 東京のキーストア CDB$ROOT FIN SALES • TDEウォレットを使⽤した環境(BaseDBではデフォルト)の場合、 データファイルとREDOログの暗号化鍵の転送が必要となる • ソースPDB⽤の暗号化鍵(データファイル⽤)とCDB$ROOT⽤の暗 号化鍵(REDOログ⽤) は、転送されたデータファイルとREDOログを それぞれ複合化するために、ソースPDB側の環境のキーストアにイ ンポートする必要がある • 両⽅の暗号化鍵はREDO適⽤プロセスが起動した際に必要となる • 初回のスイッチオーバーの場合は、旧ターゲットPDBの CDB$ROOT⽤の暗号化鍵をインポートする必要がある
  26. 透過的データ暗号化 (TDE)の暗号化鍵の転送 Copyright © 2024, Oracle and/or its affiliates 27

    ⼤阪のキーストア CDB$ROOT PUB DEV CDB$ROOT @TOKYO SALES @TOKYO 東京のキーストア CDB$ROOT FIN SALES • 暗号化鍵のエクスポート (ソースPDBとそのCDBで実⾏する) SQL> administer key management export encryption keys with secret <password> to '/home/oracle/tde/export.exp' force keystore identified by <password>; • scpで転送する $ scp /home/oracle/tde/export.exp tgthost:/home/oracle/tde • 暗号化鍵のインポート (ターゲットPDBとそのCDBで実⾏する) SQL> administer key management import encryption keys with secret <password> from '/home/oracle/tde/export.exp' force keystore identified by <password> with backup;
  27. REDO適⽤の開始 Copyright © 2024, Oracle and/or its affiliates 28 TOKYO

    OSAKA FIN PUB • ターゲットPDBへのREDO適⽤を開始する DGMGRL> connect /@tokyo Connected to "tokyo" Connected as SYSDBA. DGMGRL> edit pluggable database sales at osaka set state='APPLY-ON'; Succeeded. SALES SGA REDO BUFFER LG WR オンラインREDOログ TT RFS アーカイブ REDOログ アーカイブ REDOログ PDBレベルの スタンバイ REDOログ TT 適⽤プロセス SALES
  28. REDO適⽤の開始 Copyright © 2024, Oracle and/or its affiliates 29 TOKYO

    OSAKA FIN PUB • REDO適⽤のステータスの確認 DGMGRL> show pluggable database sales at osaka Pluggable database - sales at osaka Data Guard Role: Physical Standby Con_ID: 3 Source: con_id 4 at TOKYO Transport Lag: 0 seconds (computed 2 seconds ago) Apply Lag: 0 seconds (computed 2 seconds ago) Intended State: APPLY-ON Apply State: Running Apply Instance: OSAKA Average Apply Rate: 862 KByte/s Real Time Query: OFF Pluggable Database Status: SUCCESS SALES SGA REDO BUFFER LG WR オンラインREDOログ TT RFS アーカイブ REDOログ アーカイブ REDOログ PDBレベルの スタンバイ REDOログ TT 適⽤プロセス SALES
  29. 初回のスイッチオーバーの実⾏の場合 スイッチオーバーの実⾏ Copyright © 2024, Oracle and/or its affiliates 31

    TOKYO OSAKA FIN PUB • スイッチオーバーを実⾏する DGMGRL> switchover to pluggable database sales at osaka; Performing switchover NOW, please wait... Switchover succeeded, new primary is ”sales" SALES LG WR オンラインREDOログ TT RFS アーカイブ REDOログ アーカイブ REDOログ PDBレベルの スタンバイ REDOログ TT 適⽤プロセス SALES SGA REDO BUFFER
  30. 初回のスイッチオーバーの実⾏の場合 スイッチオーバーの実⾏ Copyright © 2024, Oracle and/or its affiliates 32

    TOKYO OSAKA FIN PUB • 構成で初回のスイッチオーバーの実⾏の場合、ステータ スを確認すると新ターゲットPDBへのREDO転送が失敗 する SALES LG WR オンラインREDOログ TT RFS アーカイブ REDOログ PDBレベルの スタンバイ REDOログ SALES SGA REDO BUFFER DGMGRL> show configuration Configuration - tokyo Protection Mode: MaxPerformance Members: TOKYO - Primary database Error: ORA-16778: Redo transport error occurred for one or more members. OSAKA - Primary database in site2 configuration Data Guard for PDB: Enabled in TARGET role Configuration Status: SUCCESS (status updated 50 seconds ago) ? • 新ターゲットPDBでスタンバイREDOログが構成されて いないため、REDOログの転送先がない状態である アーカイブ REDOログ TT 適⽤プロセス
  31. 初回のスイッチオーバーの実⾏の場合 スイッチオーバーの実⾏ Copyright © 2024, Oracle and/or its affiliates 33

    TOKYO OSAKA FIN PUB SALES LG WR オンラインREDOログ TT RFS アーカイブ REDOログ PDBレベルの スタンバイ REDOログ SALES SGA REDO BUFFER ? • 新ソースPDBを起動する (スイッチオーバー後、mount状態になって いる) SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 PUB READ WRITE NO 4 SALES MOUNTED SQL> alter pluggable database dgnrtpdb1 open; Pluggable database altered. DGMGRL> edit pluggable database sales at tokyo set state='apply- off'; Succeeded. • 新ターゲットPDBへのREDO適⽤を停⽌する
  32. 初回のスイッチオーバーの実⾏の場合 スイッチオーバーの実⾏ Copyright © 2024, Oracle and/or its affiliates 34

    TOKYO OSAKA FIN PUB SALES LG WR オンラインREDOログ TT RFS アーカイブ REDOログ アーカイブ REDOログ PDBレベルの スタンバイ REDOログ SALES SGA REDO BUFFER • スタンバイREDOログを新ターゲットPDBで作成する SQL> connect /@tokyo as sysdba Connected. SQL> alter session set container=sales; Session altered. SQL> alter database add standby logfile size 200M; Database altered. SQL> alter database add standby logfile size 200M; Database altered. SQL> alter database add standby logfile size 200M; Database altered. SQL> alter database add standby logfile size 200M; Database altered. • 追加するスタンバイREDOログはソースPDBのCDBと 同じサイズである必要がある • スタンバイREDOログの数はソースPDBのCDBよりも1以上多い必要が ある • スタンバイREDOログはPDBレベルで作成する (23aiから) • ターゲット・ロールのPDBでのみ作成・参照可能 • 2回⽬以降に追加されたDGPDBは既存の スタンバイREDOログを使⽤するため、都度作成することは不要 スイッチオーバー前に 前もって作成すること ができない
  33. • TDEを使⽤した環境(BaseDBではデフォルト)の場合、暗号化鍵の転送が 必要となる • 初回のスイッチオーバーの場合は、旧ターゲットPDBのCDB$ROOT⽤の暗号 化鍵をインポートする必要がある 初回のスイッチオーバーの実⾏の場合 スイッチオーバーの実⾏ Copyright ©

    2024, Oracle and/or its affiliates 35 ⼤阪のキーストア CDB$ROOT PUB DEV CDB$ROOT @TOKYO SALES @TOKYO 東京のキーストア CDB$ROOT FIN SALES CDB$ROOT @OSAKA • 暗号化鍵のエクスポート (新ソースPDBのCDBで実⾏する) SQL> administer key management export encryption keys with secret <password> to '/home/oracle/tde/export2.exp' force keystore identified by <password>; • scpで転送する $ scp /home/oracle/tde/export2.exp tgthost:/home/oracle/tde • 暗号化鍵のインポート (新ターゲットPDBのCDBで実⾏する) SQL> administer key management import encryption keys with secret <password> from '/home/oracle/tde/export2.exp' force keystore identified by <password> with backup;
  34. 初回のスイッチオーバーの実⾏の場合 スイッチオーバーの実⾏ Copyright © 2024, Oracle and/or its affiliates 36

    TOKYO OSAKA FIN PUB • 新ターゲットPDBへのREDO適⽤を開始する SALES LG WR オンラインREDOログ TT RFS アーカイブ REDOログ アーカイブ REDOログ PDBレベルの スタンバイ REDOログ TT 適⽤プロセス SALES SGA REDO BUFFER DGMGRL> connect /@tokyo Connected to "tokyo" Connected as SYSDBA. DGMGRL> edit pluggable database sales at tokyo set state='APPLY-ON'; Succeeded.
  35. 初回のスイッチオーバーの実⾏の場合 スイッチオーバーの実⾏ Copyright © 2024, Oracle and/or its affiliates 37

    TOKYO OSAKA FIN PUB • REDO適⽤のステータスを確認する SALES LG WR オンラインREDOログ TT RFS アーカイブ REDOログ アーカイブ REDOログ PDBレベルの スタンバイ REDOログ TT 適⽤プロセス SALES SGA REDO BUFFER DGMGRL> show pluggable database sales at tokyo Pluggable database - sales at tokyo Data Guard Role: Physical Standby Con_ID: 3 Source: con_id 4 at OSAKA Transport Lag: 0 seconds (computed 1 second ago) Apply Lag: 0 seconds (computed 1 second ago) Intended State: APPLY-ON Apply State: Running Apply Instance: TOKYO Average Apply Rate: 25 KByte/s Real Time Query: OFF Pluggable Database Status: SUCCESS
  36. スイッチオーバーの実⾏ Copyright © 2024, Oracle and/or its affiliates 38 TOKYO

    OSAKA FIN PUB • ⼀度スタンバイREDOログを作成するとその後は作成を 必要とせず、スイッチオーバー実⾏後の⼿順なく成功す る SALES SGA REDO BUFFER LG WR オンラインREDOログ TT RFS アーカイブ REDOログ アーカイブ REDOログ PDBレベルの スタンバイ REDOログ TT 適⽤プロセス SALES DGMGRL> switchover to pluggable database sales at tokyo; Performing switchover NOW, please wait... Switchover succeeded, new primary is ”sales” DGMGRL> show pluggable database sales at osaka Pluggable database - sales at osaka Data Guard Role: Physical Standby Con_ID: 3 Source: con_id 4 at TOKYO Transport Lag: 0 seconds (computed 2 seconds ago) Apply Lag: 0 seconds (computed 2 seconds ago) Intended State: APPLY-ON Apply State: Running Apply Instance: OSAKA Average Apply Rate: 623 KByte/s Real Time Query: OFF Pluggable Database Status: SUCCESS
  37. フェイルオーバーの実⾏ Copyright © 2024, Oracle and/or its affiliates 39 TOKYO

    OSAKA FIN PUB • 現⾏のソースPDBがなんらかの障害で機能しない、もし くはアクセスできない場合、フェイルオーバーを実⾏する SALES LG WR オンラインREDOログ TT RFS アーカイブ REDOログ アーカイブ REDOログ PDBレベルの スタンバイ REDOログ TT 適⽤プロセス SALES SGA REDO BUFFER DGMGRL> FAILOVER TO PLUGGABLE DATABASE sales AT osaka; Verifying conditions for Failover... Source pluggable database is ‘SALES' at database ‘tokyo' Performing failover NOW, please wait... Closing pluggable database ‘SALES'... Converting ‘SALES' to standby role... Waiting for ‘SALES' to recover all redo data... Stopping recovery at ‘SALES'... Converting ‘SALES' to primary role... Opening new primary ‘SALES'... Waiting for redo data from new primary ‘SALES'... Failover succeeded, new primary is ”SALES"
  38. フェイルオーバーの実⾏ Copyright © 2024, Oracle and/or its affiliates 40 TOKYO

    OSAKA FIN PUB • 各PDBの状態を確認する SALES LG WR オンラインREDOログ TT RFS アーカイブ REDOログ アーカイブ REDOログ PDBレベルの スタンバイ REDOログ TT 適⽤プロセス SALES SGA REDO BUFFER DGMGRL> SHOW PLUGGABLE DATABASE sales AT osaka; Pluggable database - sales at osaka Data Guard Role: Primary Con_ID: 3 Active Target: con_id 3 at tokyo needs to be reinstated Pluggable Database Status: DGM-17450: not protected DGMGRL> SHOW PLUGGABLE DATABASE sales AT tokyo; Pluggable database - sales at tokyo Data Guard Role: Physical Standby Con_ID: 3 Source: (unknown) Pluggable Database Status: ORA-16661: The standby database must be reinstated. • フェイルオーバーの完了後、旧ソースPDBでREDO適⽤が開 始されることはない • 旧ソースPDBのロールはターゲット・ロールに変換される • 旧ソースPDBが回復されるまでREDO適⽤は再開されない
  39. フェイルオーバーの実⾏ Copyright © 2024, Oracle and/or its affiliates 41 TOKYO

    OSAKA FIN PUB • 旧ソースPDBの障害が解決したら、REDO適⽤を 開始し、新ソースPDBを保護する SALES LG WR オンラインREDOログ TT RFS アーカイブ REDOログ アーカイブ REDOログ PDBレベルの スタンバイ REDOログ TT 適⽤プロセス SALES SGA REDO BUFFER DGMGRL> EDIT PLUGGABLE DATABASE SALES AT tokyo SET STATE=APPLY-ON; Succeeded. • 旧ソースPDBの障害が解決しない場合は、そのPDBを削除 し、新ソースPDBのターゲットPDBとして新しいターゲットPDB を作成する
  40. DG PDBの削除 Copyright © 2024, Oracle and/or its affiliates 42

    • ターゲットPDBとそのデータファイルを削除する DGMGRL> REMOVE PLUGGABLE DATABASE sales AT osaka REMOVE DATAFILES; Pluggable Database ‘sales' removed. DGMGRL> show pluggable database sales at osaka Pluggable database - sales at osaka DGM-17423: No such pluggable database 'sales' at container database ‘osaka' Failed. • REMOVE PLUGGABLE DATABASEコマンドは、ターゲット・ロールのPDBを削除する • REMOVE DATAFILESを付けることで、PDBのデータファイルも含めてCDBから削除する
  41. DG PDBの削除 Copyright © 2024, Oracle and/or its affiliates 43

    • ターゲットのスタンバイREDOログを削除する SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=‘MANUAL’ SCOPE=‘BOTH’; System altered. SQL> alter session set container = sales; Session altered. SQL> alter database drop standby logfile group 4; Database altered. • PDBのデータファイルが削除されてもターゲットのスタンバイREDOログ・ファイルは⾼速リカバリ領域に残っているため、別途⼿動で 削除する必要がある • 削除コマンドを実⾏する前に、STANDBY_FILE_MANAGEMENTパラメータをMANUALに変更する
  42. DG PDBの削除 Copyright © 2024, Oracle and/or its affiliates 44

    • Data Guard Broker構成を削除し、 CDB間の接続を削除する DGMGRL> REMOVE CONFIGURATION osaka; Succeeded. DGMGRL> SHOW CONFIGURATION; Configuration - tokyo Protection Mode: MaxPerformance Members: tokyo - Primary database Fast-Start Failover: Disabled Configuration Status: SUCCESS (status updated 25 seconds ago) osakaが消えている
  43. リアルタイム問合せ Copyright © 2024, Oracle and/or its affiliates 45 TOKYO

    FIN PUB SALES (ソースPDB) SALES (ターゲットPDB) REDO転送・適⽤ OSAKA READ ONLY リアルタイム問合せとは︖ • スタンバイ(ターゲット)DBを読取り専⽤で起動し、REDO適 ⽤した状態でスタンバイ(ターゲット)DBに対して問合せする ことができる機能 • プライマリ(ソース)DBの問合せをオフロードするために 使⽤できる • 23aiからDGPDBでサポート
  44. リアルタイム問合せ Copyright © 2024, Oracle and/or its affiliates 46 •

    ターゲットPDBのOPEN MODEをREAD ONLYとして起動する SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 PUB READ WRITE NO 4 SALES MOUNTED SQL> alter pluggable database sales open; Pluggable database altered. SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 PUB READ WRITE NO 4 SALES READ ONLY NO
  45. リアルタイム問合せ Copyright © 2024, Oracle and/or its affiliates 47 •

    ターゲットPDBのステータスでReal Time QueryがONになっていることを確認する DGMGRL> show pluggable database sales at osaka Pluggable database - sales at osaka Data Guard Role: Physical Standby Con_ID: 3 Source: con_id 4 at OSAKA Transport Lag: 0 seconds (computed 1 second ago) Apply Lag: 0 seconds (computed 1 second ago) Intended State: APPLY-ON Apply State: Running Apply Instance: OSAKA Average Apply Rate: 25 KByte/s Real Time Query: ON Pluggable Database Status: SUCCESS
  46. リアルタイム問合せ Copyright © 2024, Oracle and/or its affiliates 48 •

    ソースPDBで表を更新する SQL> select * from testuser.employee; ID NAME --- -------- 1 James SQL> insert into testuser.employee (ID, NAME) values (‘2’, ‘Mike’); 1 row created. SQL> commit; Commit complete. SQL> select * from testuser.employee; ID NAME --- -------- 1 James 2 Mike
  47. リアルタイム問合せ Copyright © 2024, Oracle and/or its affiliates 49 •

    ターゲットPDBで表の更新を確認する sqlplus /@osaka as sysdba SQL*Plus: Release 23.0.0.0.0 - Production on Fri Jun 7 18:55:10 2024 Version 23.4.0.24.05 Copyright (c) 1982, 2024, Oracle. All rights reserved. Connected to: Oracle Database 23ai EE Extreme Perf Release 23.0.0.0.0 - Production Version 23.4.0.24.05 alter session set container = sales; Session altered. SQL> select * from testuser.employee; ID NAME --- -------- 1 James 2 Mike
  48. デモ内容 1. Data Guard Brokerの監視操作⽤コマンドを使⽤しながら環境の確認 • TOKYO_SALES(ソースPDB)とOSAKA_SALES(ターゲットPDB)で DGPDB構成が組まれている環境を確認する 2. TOKYO_SALESで⾃動更新処理を実⾏しながらReal

    Time Queryによって OSAKA_SALESに更新処理が適⽤されていることを確認する 3. ⾃動更新処理を実⾏しながら、TOKYO_SALESからOSAKA_SALESへ スイッチオーバーを実⾏する 4. TOKYO_SALES(新ターゲットPDB)に対するREDO適⽤を確認する DG PDB デモ Copyright © 2024, Oracle and/or its affiliates 51 TOKYO_1 OSAKA_1 TOKYO_FIN OSAKA_PUB TOKYO_SALES OSAKA_SALES デモ環境の構成
  49. Copyright © 2024, Oracle and/or its affiliates 52 • Oracle

    Data Guard per Pluggable Database (DGPDB) とは︖ • Data Guard per CDBとの⽐較 • 構築⼿順 • 機能の紹介 • スイッチオーバーの実⾏ • フェイルオーバーの実⾏ • リアルタイム問合せ • デモ • 監視操作 • スイッチオーバー • リアルタイム問合せ 本⽇ご紹介した内容
  50. SHOW CONFIGURATION 監視操作 Copyright © 2024, Oracle and/or its affiliates

    55 DGMGRL> SHOW CONFIGURATION; Configuration - Tokyo Protection Mode: MaxPerformance Members: tokyo - Primary database osaka - Primary database in Osaka configuration Data Guard for PDB: Enabled in SOURCE role Configuration Status: SUCCESS (status updated 6 seconds ago) DGMGRL> SHOW CONFIGURATION VERBOSE Osaka; Configuration - Osaka Protection Mode: MaxPerformance Members: osaka - Primary database tokyo - Primary database in Tokyo configuration Properties: FastStartFailoverThreshold = '30' OperationTimeout = '30' TraceLevel = 'USER' FastStartFailoverLagLimit = '30' CommunicationTimeout = '180' ObserverReconnect = '0' ObserverPingInterval = '0' ObserverPingRetry = '0' FastStartFailoverAutoReinstate = 'TRUE' FastStartFailoverPmyShutdown = 'TRUE' BystandersFollowRoleChange = 'ALL' ObserverOverride = 'FALSE' ExternalDestination1 = '' ExternalDestination2 = '' PrimaryLostWriteAction = 'CONTINUE' ConfigurationWideServiceName = ‘osaka_CFG' ConfigurationSimpleName = ‘osaka' DrainTimeout = '0' Data Guard for PDB: Enabled in TARGET role Fast-Start Failover: Disabled Configuration Status: SUCCESS • Data Guard Broker構成の全体のステータスおよび サマリーを確認できる • VERBOSEを付けることでより詳細な情報が 確認できる
  51. SHOW DATABASE 監視操作 Copyright © 2024, Oracle and/or its affiliates

    56 DGMGRL> SHOW DATABASE tokyo; Database - tokyo Role: PRIMARY Intended State: TRANSPORT-ON Redo Rate: 110 Byte/s in 15 seconds (computed 11 seconds ago) PDB Data Guard Role: SOURCE Data Guard Source PDB(s): 1 Instance(s): tokyo Database Status: SUCCESS DGMGRL> SHOW DATABASE VERBOSE osaka; Database - osaka Role: PRIMARY Intended State: TRANSPORT-ON PDB Data Guard Role: TARGET Data Guard Target PDB(s): 1 Instance(s): osaka Properties: DGConnectIdentifier = ‘osaka' ObserverConnectIdentifier = '' FastStartFailoverTarget = '' PreferredObserverHosts = '' LogShipping = 'ON' RedoRoutes = '' LogXptMode = 'ASYNC' DelayMins = '0' *** ⼀部省略 *** Alert log : /scratch/oracle/diag/rdbms/osaka/osaka/trace/alert_osaka.l og Data Guard Broker log : /scratch/oracle/diag/rdbms/osaka/osaka/trace/drcosaka.log Database Status: SUCCESS • 指定したCDBとインスタンスのステータスや構成が 確認できる • VERBOSEを使⽤することでより詳細な情報が確認 できる
  52. SHOW PLUGGABLE DATABASE 監視操作 Copyright © 2024, Oracle and/or its

    affiliates 57 DGMGRL> SHOW PLUGGABLE DATABASE sales AT osaka; Pluggable database - SALES at osaka Data Guard Role: Physical Standby Con_ID: 3 Source: con_id 3 at tokyo Transport Lag: 0 seconds (computed 1 second ago) Apply Lag: 3 seconds (computed 1 second ago) Intended State: APPLY-ON Apply State: Running Apply Instance: osaka Average Apply Rate: 13 KByte/s Real Time Query: OFF Pluggable Database Status: SUCCESS DGMGRL> SHOW ALL PLUGGABLE DATABASE AT tokyo; PDB Name PDB ID Data Guard Role Data Guard Partner SALES 3 Primary SALES (con_id 3) at osaka PUB 4 None None DGMGRL> SHOW ALL SOURCE PLUGGABLE DATABASE AT osaka; PDB Name PDB ID Data Guard Role Data Guard Partner SALES 3 Primary SALES (con_id 3) at osaka • PDBのステータスの確認
  53. VALIDATE PLUGGABLE DATABASE 監視操作 Copyright © 2024, Oracle and/or its

    affiliates 58 DGMGRL> validate pluggable database dgnrtpdb1 at osaka Ready for Switchover: YES Data Guard Role: Physical Standby Apply State: Running Standby Redo Log Files: 4 Source: SALES (con_id 3) at tokyo DGMGRL> validate pluggable database pub at osaka DGM-17560: Pluggable database ‘PUB' at container database 'osaka' is not protected. • PDBのより詳細なステータスが確認できる