Slide 1

Slide 1 text

Oracle Database Technology Night #80 Oracle Data Guard per Pluggable Database (DGPDB) Oracle Database 23ai 新機能 #2 宮本 拓弥 ⽇本オラクル株式会社 2024年7⽉25⽇

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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転送

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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は、読取り・書込みモードで オープン状態

Slide 8

Slide 8 text

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構成が⼀貫しなくなるため

Slide 9

Slide 9 text

使⽤できる主な機能の⽐較 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から可能

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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を適⽤する ① ② ③ ④

Slide 13

Slide 13 text

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)

Slide 14

Slide 14 text

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ログ

Slide 15

Slide 15 text

Copyright © 2024, Oracle and/or its affiliates 15 構築⼿順

Slide 16

Slide 16 text

全体のワークフロー 構築⼿順 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

Slide 17

Slide 17 text

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; 記⼊例:

Slide 18

Slide 18 text

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 = /dbs/wallets/dgpdb) ) ) SQLNET.WALLET_OVERRIDE = TRUE 記⼊例: • Walletを使⽤した接続確認 $ sqlplus /@tokyo as sysdba $ sqlplus /@osaka as sysdba

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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管理権限が付与される

Slide 22

Slide 22 text

ターゲット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

Slide 23

Slide 23 text

ターゲット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ログ 暗号化 データファイル 暗号化

Slide 24

Slide 24 text

ソース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を使⽤する場合の例:

Slide 25

Slide 25 text

スタンバイ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ログ

Slide 26

Slide 26 text

透過的データ暗号化 (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⽤の暗号化鍵をインポートする必要がある

Slide 27

Slide 27 text

透過的データ暗号化 (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 to '/home/oracle/tde/export.exp' force keystore identified by ; • scpで転送する $ scp /home/oracle/tde/export.exp tgthost:/home/oracle/tde • 暗号化鍵のインポート (ターゲットPDBとそのCDBで実⾏する) SQL> administer key management import encryption keys with secret from '/home/oracle/tde/export.exp' force keystore identified by with backup;

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

Copyright © 2024, Oracle and/or its affiliates 30 機能の紹介

Slide 31

Slide 31 text

初回のスイッチオーバーの実⾏の場合 スイッチオーバーの実⾏ 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

Slide 32

Slide 32 text

初回のスイッチオーバーの実⾏の場合 スイッチオーバーの実⾏ 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 適⽤プロセス

Slide 33

Slide 33 text

初回のスイッチオーバーの実⾏の場合 スイッチオーバーの実⾏ 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適⽤を停⽌する

Slide 34

Slide 34 text

初回のスイッチオーバーの実⾏の場合 スイッチオーバーの実⾏ 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ログを使⽤するため、都度作成することは不要 スイッチオーバー前に 前もって作成すること ができない

Slide 35

Slide 35 text

• 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 to '/home/oracle/tde/export2.exp' force keystore identified by ; • scpで転送する $ scp /home/oracle/tde/export2.exp tgthost:/home/oracle/tde • 暗号化鍵のインポート (新ターゲットPDBのCDBで実⾏する) SQL> administer key management import encryption keys with secret from '/home/oracle/tde/export2.exp' force keystore identified by with backup;

Slide 36

Slide 36 text

初回のスイッチオーバーの実⾏の場合 スイッチオーバーの実⾏ 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.

Slide 37

Slide 37 text

初回のスイッチオーバーの実⾏の場合 スイッチオーバーの実⾏ 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

Slide 38

Slide 38 text

スイッチオーバーの実⾏ 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

Slide 39

Slide 39 text

フェイルオーバーの実⾏ 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"

Slide 40

Slide 40 text

フェイルオーバーの実⾏ 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適⽤は再開されない

Slide 41

Slide 41 text

フェイルオーバーの実⾏ 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 を作成する

Slide 42

Slide 42 text

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から削除する

Slide 43

Slide 43 text

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に変更する

Slide 44

Slide 44 text

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が消えている

Slide 45

Slide 45 text

リアルタイム問合せ 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でサポート

Slide 46

Slide 46 text

リアルタイム問合せ 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

Slide 47

Slide 47 text

リアルタイム問合せ 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

Slide 48

Slide 48 text

リアルタイム問合せ 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

Slide 49

Slide 49 text

リアルタイム問合せ 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

Slide 50

Slide 50 text

Copyright © 2024, Oracle and/or its affiliates 50 デモ

Slide 51

Slide 51 text

デモ内容 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 デモ環境の構成

Slide 52

Slide 52 text

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

Slide 53

Slide 53 text

ありがとうございました。 Copyright © 2024, Oracle and/or its affiliates

Slide 54

Slide 54 text

No content

Slide 55

Slide 55 text

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を付けることでより詳細な情報が 確認できる

Slide 56

Slide 56 text

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を使⽤することでより詳細な情報が確認 できる

Slide 57

Slide 57 text

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のステータスの確認

Slide 58

Slide 58 text

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のより詳細なステータスが確認できる