per CDBとData Guard per PDBの⽐較 プライマリCDB プライマリCDB ソース PDB ソース PDB ターゲット PDB ターゲット PDB ⾮保護 PDB ⾮保護 PDB プライマリCDB スタンバイCDB Data Guard per CDB Data Guard per PDB
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構成が⼀貫しなくなるため
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
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管理権限が付与される
⼤阪のキーストア 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;
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 適⽤プロセス
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;
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
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"
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適⽤は再開されない
• ターゲットのスタンバイ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に変更する
ターゲット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
ソース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
ターゲット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
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のステータスの確認