infra検証 blog

oracle成分多めです。

リフレッシュ可能なPDBをさわってみる

この記事は、 JPOUG Advent Calendar 2023 10日目の記事です。

9日目は 明治そして大正昭和平成令和 さんの記事『最新のSQL標準(SQL:2023)とFirebird/MySQL/PostgreSQL』でした。

はじめに

23cの新機能ベースでブログを記載したいと思い、ネタ探ししていました。

マルチテナント初心者なのでリフレッシュ可能なPDBに興味を持ったのでテーマにしてみました。

ただ、よくよく調べると12.2から使えるとのことがわかったので手元にあった19c環境で試していきます。

DBCAでのリフレッシュ可能なPDB

リフレッシュ可能なPDBができること

  • スイッチオーバー
  • 自動および手動リフレッシュ

初めはマテリアライズドビューのDB版なのかなと思っていました。

スイッチオーバーも使えるということで、リフレッシュ間隔を調整すればData Guardや基本スタンバイのようにDR用途にも使えるかもしれませんね。

参考:リフレッシュ可能なクローンPDBについて

結論

  • 関連するマニュアルは複数読みましょう。
  • その機能がどのライセンス形態で使えるか事前に確認しましょう。
  • 作成するDBリンクはCDBを参照するようにしましょう。

さわってみる

環境

[oracle@db1901 ~]$ opatch lspatches
35643107;Database Release Update : 19.21.0.0.231017 (35643107)
29585399;OCW RELEASE UPDATE 19.3.0.0.0 (29585399)

構築

今回は検証のため1つのCDBにソースPDBとクローンPDBを作成します。

手順は以下を参考に進めます。手順上ソース、クローン側と書き分けますが、今回は一緒のDBで実施します。

リフレッシュ可能なクローンPDBの作成: シナリオ

ソース側

SQL> archive log list
データベース・ログ・モード     アーカイブ・モード
自動アーカイブ                 有効
アーカイブ先                    /oradata/cdb19/arch
最も古いオンライン・ログ順序   23
アーカイブする次のログ順序    25
現行のログ順序               25
  • ローカルUNDOモードであること
SQL> show parameter UNDO_MANAGEMENT

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_management                      string      AUTO
  • Oracle Managed Filesが有効化であること(要件の中からこれを選択しました。)
SQL> show parameter DB_CREATE_FILE_DEST

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest                  string      /oradata
  • PDB作業用ユーザの作成
CREATE USER C##PDBUSER IDENTIFIED BY "P@ssw0rd";
GRANT CREATE SESSION TO C##PDBUSER CONTAINER=ALL;
GRANT SET CONTAINER TO C##PDBUSER CONTAINER=ALL;
GRANT CREATE PLUGGABLE DATABASE TO C##PDBUSER CONTAINER=ALL;

クローン側DB

  • tnsnames.ora(DBリンク用)
PDB1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = db1901.lab.local)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = pdb1)
    )
  )
  • PDB作業用ユーザの作成

※同じユーザ想定で進めます。

  • DBリンク作成
CREATE PUBLIC DATABASE LINK PDB1_LINK CONNECT TO C##PDBUSER IDENTIFIED BY "P@ssw0rd" USING 'PDB1';

→このDBリンクでもうまくいくんですが、CDBを参照したDBリンクの方が良さそうです。

  • リフレッシュ可能なPDB作成
conn C##PDBUSER/"P@ssw0rd"
CREATE PLUGGABLE DATABASE pdb1_ref_cln FROM PDB1@PDB1_LINK REFRESH MODE EVERY 60 MINUTES;

プラガブル・データベースが作成されました。

確認

  • PDBの状態を確認してみます。
SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDB1                           READ WRITE NO
         4 PDB1_REF_CLN                   MOUNTED
SQL>
SQL> select PDB_NAME||','||REFRESH_MODE||','||REFRESH_INTERVAL||','||LAST_REFRESH_SCN from dba_pdbs where PDB_NAME='PDB1_REF_CLN';

PDB_NAME||','||REFRESH_MODE||','||REFRESH_INTERVAL||','||LAST_REFRESH_SCN
--------------------------------------------------------------------------------
PDB1_REF_CLN,AUTO,60,1648312
  • alert logを確認してみます。

ジョブの実行エラーが出ていますが、PDB1_REF_CLNはMOUNT状態なので問題なしですかね。

2023-12-09T14:16:30.473206+09:00
CREATE PLUGGABLE DATABASE pdb1_ref_cln FROM PDB1@PDB1_LINK REFRESH MODE EVERY 60 MINUTES
2023-12-09T14:16:30.884217+09:00
PDB1(3): AUDSYS.AUD$UNIFIED (SQL_TEXT) - CLOB populated
2023-12-09T14:16:38.170158+09:00
****************************************************************
Pluggable Database PDB1_REF_CLN with pdb id - 4 is created as UNUSABLE.
If any errors are encountered before the pdb is marked as NEW,
then the pdb must be dropped
local undo-1, localundoscn-0x000000000000012e
****************************************************************
2023-12-09T14:16:41.192727+09:00
Applying media recovery for pdb-3 from SCN 1648255 to SCN 1648312
Remote log information: count-1
thr-1,seq-26,logfile-/oradata/cdb19/arch/parlog_1_26_a880de4d_1154562853.arc,los-1643947,nxs-18446744073709551615,maxblks-34090
PDB1_REF_CLN(4):Media Recovery Start
2023-12-09T14:16:41.193534+09:00
PDB1_REF_CLN(4):Serial Media Recovery started
PDB1_REF_CLN(4):max_pdb is 6
2023-12-09T14:16:41.240936+09:00
PDB1_REF_CLN(4):Media Recovery Log /oradata/cdb19/arch/parlog_1_26_a880de4d_1154562853.arc
2023-12-09T14:16:41.364009+09:00
PDB1_REF_CLN(4):Incomplete Recovery applied until change 1648312 time 12/09/2023 14:16:38
2023-12-09T14:16:41.366047+09:00
PDB1_REF_CLN(4):Media Recovery Complete (cdb19)
Completed: CREATE PLUGGABLE DATABASE pdb1_ref_cln FROM PDB1@PDB1_LINK REFRESH MODE EVERY 60 MINUTES
2023-12-09T14:16:41.510849+09:00
Errors in file /u01/app/oracle/diag/rdbms/cdb19/cdb19/trace/cdb19_j000_23289.trc:
ORA-12012: ジョブ"SYS"."PDB1_REF_CLN_595637595_REFRESH"の自動実行エラーが発生し ました
ORA-65024: プラガブル・データベースPDB1_REF_CLNはオープンしていません。
ORA-06512: "SYS.DBMS_SQL", 行2995
ORA-06512: 行1

リフレッシュについて

事前にソースPDBでテストデータを作成します。

SQL> SQL> alter session set container = PDB1;

セッションが変更されました。

SQL>
SQL> show con_name;

CON_NAME
------------------------------
PDB1
SQL>
SQL> create table test (id number);

表が作成されました。

SQL> insert into test (id) values (1);

1行が作成されました。

SQL> insert into test (id) values (2);

1行が作成されました。

SQL>
SQL>
SQL> select * from test;

        ID
----------
         1
         2

SQL>
SQL> commit;

コミットが完了しました。
  • クローン側でテーブルが存在しないことを確認します。作業後はMOUNT状態に戻します。
SQL> ALTER PLUGGABLE DATABASE PDB1_REF_CLN OPEN READ ONLY;

プラガブル・データベースが変更されました。

SQL> ALTER SESSION SET CONTAINER = PDB1_REF_CLN;

セッションが変更されました。

SQL>
SQL> show con_name;

CON_NAME
------------------------------
PDB1_REF_CLN
SQL>
SQL> select * from test;
select * from test
              *
行1でエラーが発生しました。:
ORA-00942: 表またはビューが存在しません。

SQL>
SQL> ALTER SESSION SET CONTAINER = CDB$ROOT;

セッションが変更されました。

SQL> ALTER PLUGGABLE DATABASE PDB1_REF_CLN CLOSE IMMEDIATE;

プラガブル・データベースが変更されました。

SQL>
SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDB1                           READ WRITE NO
         4 PDB1_REF_CLN                   MOUNTED

手動リフレッシュ

やってみます。

SQL> show con_name

CON_NAME
------------------------------
CDB$ROOT
SQL>
SQL> ALTER PLUGGABLE DATABASE PDB1_REF_CLN REFRESH;

プラガブル・データベースが変更されました。

SQL>

データも想定通り連携されていますね。

SQL> show con_name;

CON_NAME
------------------------------
PDB1_REF_CLN
SQL>
SQL> select PDB_NAME||','||REFRESH_MODE||','||REFRESH_INTERVAL||','||LAST_REFRESH_SCN from dba_pdbs where PDB_NAME='PDB1_REF_CLN';

PDB_NAME||','||REFRESH_MODE||','||REFRESH_INTERVAL||','||LAST_REFRESH_SCN
--------------------------------------------------------------------------------
PDB1_REF_CLN,AUTO,60,1651574
SQL>
SQL> select * from test;

        ID
----------
         1
         2

SQL>

alertログではこんな感じで出力されます。

2023-12-09T15:15:28.617572+09:00
PDB1_REF_CLN(4):ALTER PLUGGABLE DATABASE PDB1_REF_CLN REFRESH
2023-12-09T15:15:30.293307+09:00
Applying media recovery for pdb-3 from SCN 1650756 to SCN 1651574
Remote log information: count-1
thr-1,seq-26,logfile-/oradata/cdb19/arch/parlog_1_26_a880de4d_1154562853.arc,los-1643947,nxs-18446744073709551615,maxblks-44422
PDB1_REF_CLN(4):Media Recovery Start
2023-12-09T15:15:30.294114+09:00
PDB1_REF_CLN(4):Serial Media Recovery started
PDB1_REF_CLN(4):max_pdb is 6
2023-12-09T15:15:30.321190+09:00
PDB1_REF_CLN(4):Media Recovery Log /oradata/cdb19/arch/parlog_1_26_a880de4d_1154562853.arc
2023-12-09T15:15:30.418689+09:00
PDB1_REF_CLN(4):Incomplete Recovery applied until change 1651574 time 12/09/2023 15:15:28
2023-12-09T15:15:30.420904+09:00
PDB1_REF_CLN(4):Media Recovery Complete (cdb19)
PDB1_REF_CLN(4):Completed: ALTER PLUGGABLE DATABASE PDB1_REF_CLN REFRESH

自動リフレッシュ

1時間ごとの更新が待てないので、間隔を短くしてみます。

SQL> ALTER PLUGGABLE DATABASE PDB1_REF_CLN REFRESH MODE EVERY 3 MINUTES; ★このタイミングで一度同期されていました。

プラガブル・データベースが変更されました。

SQL>
SQL> ALTER SESSION SET CONTAINER = CDB$ROOT;

セッションが変更されました。

SQL> select PDB_NAME||','||REFRESH_MODE||','||REFRESH_INTERVAL||','||LAST_REFRESH_SCN from dba_pdbs where PDB_NAME='PDB1_REF_CLN';

PDB_NAME||','||REFRESH_MODE||','||REFRESH_INTERVAL||','||LAST_REFRESH_SCN
--------------------------------------------------------------------------------
PDB1_REF_CLN,AUTO,3,1674585

自動更新された場合もalertログとしては同じ内容です。

2023-12-09T21:16:34.824626+09:00
PDB1_REF_CLN(4):alter pluggable database refresh
2023-12-09T21:16:37.053287+09:00
Applying media recovery for pdb-3 from SCN 1674585 to SCN 1674706
Remote log information: count-1
thr-1,seq-26,logfile-/oradata/cdb19/arch/parlog_1_26_a880de4d_1154562853.arc,los-1643947,nxs-18446744073709551615,maxblks-150458
PDB1_REF_CLN(4):Media Recovery Start
2023-12-09T21:16:37.054244+09:00
PDB1_REF_CLN(4):Serial Media Recovery started
PDB1_REF_CLN(4):max_pdb is 6
2023-12-09T21:16:37.091550+09:00
PDB1_REF_CLN(4):Media Recovery Log /oradata/cdb19/arch/parlog_1_26_a880de4d_1154562853.arc
2023-12-09T21:16:37.226036+09:00
PDB1_REF_CLN(4):Incomplete Recovery applied until change 1674706 time 12/09/2023 21:16:34
2023-12-09T21:16:37.228165+09:00
PDB1_REF_CLN(4):Media Recovery Complete (cdb19)
PDB1_REF_CLN(4):Completed: alter pluggable database refresh

※リフレッシュが動いた時にREAD ONLYでOPENしていると失敗します。

2023-12-09T20:16:41.231298+09:00
PDB1_REF_CLN(4):alter pluggable database refresh
2023-12-09T20:16:41.231506+09:00
PDB1_REF_CLN(4):PDB1_REF_CLN(4):ERROR:PDB needs to be closed for auto refresh
PDB1_REF_CLN(4):Completed: alter pluggable database refresh

スイッチオーバーについて

準備

スイッチオーバーの理解のためにドキュメントを読みます。

ALTER PLUGGABLE DATABASE - pdb_refresh_switchover_clause

ALTER PLUGGABLE DATABASE REFRESH MODE MANUAL FROM new_source_pdb@dblink SWITCHOVER;

以下がポイントですかね。

  • スイッチオーバーはプライマリPDBから実行する
  • DBリンクは、リフレッシュ可能なクローンPDBが現在存在するCDBのRootを指す必要がある。
  • リフレッシュ可能なクローンが別のCDBに存在する場合、DBリンク・ユーザはプライマリPDBに存在しなければなりません。(今回は関係なし)

CDB$ROOTを指すDBリンクを作成します。後でマニュアル見て判明するんですが、追加で権限つけておきます。

CREATE PUBLIC DATABASE LINK CDB19_LINK CONNECT TO C##PDBUSER IDENTIFIED BY "P@ssw0rd" USING 'CDB19';
GRANT RESOURCE, CREATE ANY TABLE, UNLIMITED TABLESPACE TO C##PDBUSER CONTAINER=ALL;
GRANT SYSOPER TO C##PDBUSER CONTAINER=ALL;

現状の状態を整理します。

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDB1                           READ WRITE NO
         4 PDB1_REF_CLN                   MOUNTED
SQL>
SQL> select PDB_NAME||','||STATUS||','||REFRESH_MODE||','||REFRESH_INTERVAL||','||LAST_REFRESH_SCN from dba_pdbs;

PDB_NAME||','||STATUS||','||REFRESH_MODE||','||REFRESH_INTERVAL||','||LAST_REFRE
--------------------------------------------------------------------------------
PDB$SEED,NORMAL,NONE,,
PDB1,NORMAL,NONE,, ★ソースPDB
PDB1_REF_CLN,REFRESHING,AUTO,60,1675752 ★リフレッシュ可能なPDB

失うものはなにもないのでスイッチオーバーします。

SQL> conn C##PDBUSER/"P@ssw0rd"
接続されました。
SQL>
SQL> ALTER SESSION SET CONTAINER = PDB1;

セッションが変更されました。

SQL>
SQL> ALTER PLUGGABLE DATABASE REFRESH MODE EVERY 60 MINUTES FROM PDB1_REF_CLN@CDB19_LINK SWITCHOVER;
ALTER PLUGGABLE DATABASE REFRESH MODE EVERY 60 MINUTES FROM PDB1_REF_CLN@CDB19_LINK SWITCHOVER
*
行1でエラーが発生しました。:
ORA-12754: 機能PDB REFRESH SWITCHOVERは、機能がないため無効化されています。


SQL>

19cではEEだけだと、実施できずExadata,ODAから対象みたいです。

23cではFreeとOCIだけですね。

19c Database Licensing Information User Manual

23c Database Licensing Information User Manual

ここまで来て引けないので、ググって見つけたパラメータ"_exadata_feature_on"を設定して、動きを確認します。

... その後、どうしてもSWITCHOVERできず

以下のドキュメントを見つけました。

19c Switching Over a Refreshable Clone PDB

結論としては、クローンPDBを作成するときにPDBへのDBリンクを使っていましたが

CDBへ接続するDBリンクを指定してクローンPDBを作り直したところ何事もなくスイッチオーバーできました。

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDB1                           MOUNTED
         5 PDB1_REF_CLN                   READ WRITE NO
SQL>
SQL> select PDB_NAME||','||STATUS||','||REFRESH_MODE||','||REFRESH_INTERVAL||','||LAST_REFRESH_SCN from dba_pdbs;

PDB_NAME||','||STATUS||','||REFRESH_MODE||','||REFRESH_INTERVAL||','||LAST_REFRE
--------------------------------------------------------------------------------
PDB$SEED,NORMAL,NONE,,
PDB1,REFRESHING,AUTO,60,1709559 ★リフレッシュ可能なPDB
PDB1_REF_CLN,NORMAL,NONE,, ★ソースPDB

alertログはこんな感じになりました。

2023-12-10T00:15:41.219246+09:00
PDB1(3):ALTER PLUGGABLE DATABASE REFRESH MODE EVERY 60 MINUTES FROM pdb1_ref_cln@CDB19_LINK SWITCHOVER
2023-12-10T00:15:41.446138+09:00
PDB1_REF_CLN(5): AUDSYS.AUD$UNIFIED (SQL_TEXT) - CLOB populated
2023-12-10T00:15:41.472027+09:00
PDB1(3):Pluggable database PDB1 closing
PDB1(3):JIT: pid 24637 requesting stop
2023-12-10T00:15:41.478093+09:00
Process termination requested for pid 25659 [source = rdbms], [info = 2] [request issued by pid: 24637, uid: 54321]
2023-12-10T00:15:41.527373+09:00
KILL SESSION for sid=(146, 63746):
  Reason = PDB close immediate
  Mode = KILL HARD FORCE -/-/-
  Requestor = USER (orapid = 56, ospid = 24637, inst = 1)
  Owner = Process: Q005 (orapid = 69, ospid = 25659)
  Result = ORA-0
2023-12-10T00:15:42.613787+09:00
PDB1(3):Closing sequence subsystem (559893756181).
PDB1(3):Buffer Cache flush started: 3
PDB1(3):Buffer Cache flush finished: 3
Pluggable database PDB1 closed
2023-12-10T00:15:43.123651+09:00
PDB1_REF_CLN(5):Pluggable database PDB1_REF_CLN closing
PDB1_REF_CLN(5):JIT: pid 27376 requesting stop
PDB1_REF_CLN(5):Buffer Cache flush started: 5
PDB1_REF_CLN(5):Buffer Cache flush finished: 5
Pluggable database PDB1_REF_CLN closed
2023-12-10T00:15:44.196342+09:00
Applying media recovery for pdb-3 from SCN 1708630 to SCN 1709099
Remote log information: count-1
thr-1,seq-26,logfile-/oradata/cdb19/arch/parlog_1_26_a880de4d_1154562853.arc,los-1643947,nxs-18446744073709551615,maxblks-329140
PDB1_REF_CLN(5):Media Recovery Start
2023-12-10T00:15:44.197164+09:00
PDB1_REF_CLN(5):Serial Media Recovery started
PDB1_REF_CLN(5):max_pdb is 6
2023-12-10T00:15:44.231864+09:00
PDB1_REF_CLN(5):Media Recovery Log /oradata/cdb19/arch/parlog_1_26_a880de4d_1154562853.arc
2023-12-10T00:15:44.478151+09:00
PDB1_REF_CLN(5):Incomplete Recovery applied until change 1709099 time 12/10/2023 00:15:43
2023-12-10T00:15:44.482014+09:00
PDB1_REF_CLN(5):Media Recovery Complete (cdb19)
PDB1_REF_CLN(5):Pluggable database PDB1_REF_CLN pseudo opening
PDB1_REF_CLN(5):Undo initialization recovery: Parallel FPTR complete: start:559895739 end:559895741 diff:2 ms (0.0 seconds)
PDB1_REF_CLN(5):Undo initialization recovery: err:0 start: 559895739 end: 559895741 diff: 2 ms (0.0 seconds)
PDB1_REF_CLN(5):[27376] Successfully onlined Undo Tablespace 2.
PDB1_REF_CLN(5):Undo initialization online undo segments: err:0 start: 559895741 end: 559895754 diff: 13 ms (0.0 seconds)
PDB1_REF_CLN(5):Undo initialization finished serial:0 start:559895739 end:559895757 diff:18 ms (0.0 seconds)
PDB1_REF_CLN(5):Database Characterset for PDB1_REF_CLN is AL32UTF8
PDB1_REF_CLN(5):Pluggable database PDB1_REF_CLN pseudo closing
PDB1_REF_CLN(5):Closing sequence subsystem (559895870456).
PDB1_REF_CLN(5):Buffer Cache flush started: 5
PDB1_REF_CLN(5):Buffer Cache flush finished: 5
2023-12-10T00:15:44.930512+09:00
Deleted Oracle managed file /oradata/CDB19/0C159397F492603DE0631528A8C00091/datafile/o1_mf_users_lq8zzfwt_.dbf
Deleted Oracle managed file /oradata/CDB19/0C159397F492603DE0631528A8C00091/datafile/o1_mf_temp_lq8zzfws_.dbf
Deleted Oracle managed file /oradata/CDB19/0C159397F492603DE0631528A8C00091/datafile/o1_mf_undotbs1_lq8zzfwr_.dbf
Deleted Oracle managed file /oradata/CDB19/0C159397F492603DE0631528A8C00091/datafile/o1_mf_sysaux_lq8zzfwr_.dbf
Deleted Oracle managed file /oradata/CDB19/0C159397F492603DE0631528A8C00091/datafile/o1_mf_system_lq8zzfwp_.dbf
2023-12-10T00:15:45.055963+09:00
PDB1_REF_CLN(5):Pluggable database PDB1_REF_CLN opening in read write
PDB1_REF_CLN(5):Undo initialization recovery: Parallel FPTR complete: start:559896218 end:559896219 diff:1 ms (0.0 seconds)
PDB1_REF_CLN(5):Undo initialization recovery: err:0 start: 559896218 end: 559896220 diff: 2 ms (0.0 seconds)
PDB1_REF_CLN(5):[27376] Successfully onlined Undo Tablespace 2.
PDB1_REF_CLN(5):Undo initialization online undo segments: err:0 start: 559896220 end: 559896261 diff: 41 ms (0.0 seconds)
PDB1_REF_CLN(5):Undo initialization finished serial:0 start:559896218 end:559896264 diff:46 ms (0.0 seconds)
PDB1_REF_CLN(5):Deleting old file#24 from file$
PDB1_REF_CLN(5):Deleting old file#25 from file$
PDB1_REF_CLN(5):Deleting old file#26 from file$
PDB1_REF_CLN(5):Deleting old file#27 from file$
PDB1_REF_CLN(5):Adding new file#28 to file$(old file#24).             fopr-1, newblks-48640, oldblks-26880
PDB1_REF_CLN(5):Adding new file#29 to file$(old file#25).             fopr-1, newblks-27520, oldblks-21120
PDB1_REF_CLN(5):Adding new file#30 to file$(old file#26).             fopr-1, newblks-24320, oldblks-7680
PDB1_REF_CLN(5):Adding new file#31 to file$(old file#27).             fopr-1, newblks-640, oldblks-640
2023-12-10T00:15:45.199604+09:00
PDB1_REF_CLN(5):Successfully created internal service PDB1_REF_CLN at open
****************************************************************
Post plug operations are now complete.
Pluggable database PDB1_REF_CLN with pdb id - 5 is now marked as NEW.
****************************************************************
PDB1_REF_CLN(5):Database Characterset for PDB1_REF_CLN is AL32UTF8
PDB1_REF_CLN(5):SUPLOG: Set PDB SUPLOG SGA at PDB OPEN, old 0x0, new 0x0 (no suplog)
PDB1_REF_CLN(5):Opening pdb with no Resource Manager plan active
PDB1_REF_CLN(5):joxcsys_required_dirobj_exists: directory object exists with required path /u01/app/oracle/product/19.3.0/dbhome_1/javavm/admin/, pid 27376 cid 5
2023-12-10T00:15:46.051865+09:00
Pluggable database PDB1_REF_CLN opened read write
2023-12-10T00:15:46.179461+09:00
PDB1_REF_CLN(5): AUDSYS.AUD$UNIFIED (SQL_TEXT) - CLOB populated
2023-12-10T00:15:52.272969+09:00
PDB1(3):Endian type of dictionary set to little
****************************************************************
Pluggable Database PDB1 with pdb id - 3 is created as UNUSABLE.
If any errors are encountered before the pdb is marked as NEW,
then the pdb must be dropped
local undo-1, localundoscn-0x000000000000012e
****************************************************************
2023-12-10T00:15:54.935197+09:00
Applying media recovery for pdb-5 from SCN 1709449 to SCN 1709533
Remote log information: count-1
thr-1,seq-26,logfile-/oradata/cdb19/arch/parlog_1_26_39742b57_1154562853.arc,los-1643947,nxs-18446744073709551615,maxblks-329629
PDB1(3):Media Recovery Start
2023-12-10T00:15:54.936003+09:00
PDB1(3):Serial Media Recovery started
PDB1(3):max_pdb is 6
2023-12-10T00:15:54.962876+09:00
PDB1(3):Media Recovery Log /oradata/cdb19/arch/parlog_1_26_39742b57_1154562853.arc
2023-12-10T00:15:55.259903+09:00
PDB1(3):Incomplete Recovery applied until change 1709533 time 12/10/2023 00:15:52
2023-12-10T00:15:55.262904+09:00
PDB1(3):Media Recovery Complete (cdb19)
PDB1(3):Completed: ALTER PLUGGABLE DATABASE REFRESH MODE EVERY 60 MINUTES FROM pdb1_ref_cln@CDB19_LINK SWITCHOVER
2023-12-10T00:15:55.322476+09:00
PDB1(3):alter pluggable database refresh
2023-12-10T00:15:57.912705+09:00
Applying media recovery for pdb-5 from SCN 1709533 to SCN 1709559
Remote log information: count-1
thr-1,seq-26,logfile-/oradata/cdb19/arch/parlog_1_26_39742b57_1154562853.arc,los-1643947,nxs-18446744073709551615,maxblks-329658
PDB1(3):Media Recovery Start
2023-12-10T00:15:57.913543+09:00
PDB1(3):Serial Media Recovery started
PDB1(3):max_pdb is 6
2023-12-10T00:15:57.959885+09:00
PDB1(3):Media Recovery Log /oradata/cdb19/arch/parlog_1_26_39742b57_1154562853.arc
2023-12-10T00:15:58.125490+09:00
PDB1(3):Incomplete Recovery applied until change 1709559 time 12/10/2023 00:15:55
2023-12-10T00:15:58.130780+09:00
PDB1(3):Media Recovery Complete (cdb19)
PDB1(3):Completed: alter pluggable database refresh

まとめ

  • リフレッシュ可能なPDBは使いやすそうですね。
  • リフレッシュ可能なPDBでスイッチオーバーは素のSE2, EEライセンスだと使えません。Exa、ODA、OracleCloud使いましょう。

まだ製品との組み合わせなどで、19cで非CDBを扱う場面が多いのですが

便利な機能はたくさんあるので、23cへのDB移行も見据えて情報仕入れていきたいと感じました。

リンクまとめ