はじめに
PDBスナップショットとは、PDBスナップショット・カルーセルによって取得されるPDBのPoint-in-Timeコピーです。
PDBスナップショット・カルーセルはオンプレミスのEEやSEなどのエディションでは提供されておらず、オンプレミスであれば Exadata、OCIであれば Base DB SEを除く環境で利用できます。
ライセンス情報
自動的に最大8までのスナップショットを取得できるため、検証や障害時のデータ確認や特定の時間帯(またはscn)のPDBを復元する事で集計処理なども可能です。
その操作・機能について少しですが探って行きます。
環境と手順について
環境は Oracle AI Database 26ai (23.26.1) for Linux で実施しますが、オンプレミス環境なので Exadata を使用します。Archive Log モードとして PDBのOpenまで確認します。
SQL> archive log list
データベース・ログ・モード アーカイブ・モード
自動アーカイブ 有効
アーカイブ先 USE_DB_RECOVERY_FILE_DEST
最も古いオンライン・ログ順序 26
アーカイブする次のログ順序 26
現行のログ順序 24
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 ORCL26PDB1 READ WRITE NO
SELECT CURRENT_SCN FROM V$DATABASE;
CURRENT_SCN
-----------
3455861
- 手動による Snapshot の取得
SQL> ALTER PLUGGABLE DATABASE SNAPSHOT ORCL26PDB1_202602091041;
プラガブル・データベースが変更されました。
SQL> SELECT SNAPSHOT_NAME, SNAPSHOT_SCN, FULL_SNAPSHOT_PATH FROM DBA_PDB_SNAPSHOTS;
[oracle@node26 3460351]$ pwd
/u01/app/oracle/oradata/ORCL26/snapshots/pdb_2465249494/3460351
[oracle@node26 3460351]$ ls -la
合計 1308960
drwxr-x--- 2 oracle oinstall 143 2月 9 10:39 .
drwxr-x--- 3 oracle oinstall 21 2月 9 10:39 ..
-rw-r----- 1 oracle oinstall 838868992 2月 9 10:39 o1_mf_sysaux_nr0cg0x8_.dbf
-rw-r----- 1 oracle oinstall 387981312 2月 9 10:39 o1_mf_system_nr0cg0wq_.dbf
-rw-r----- 1 oracle oinstall 104865792 2月 9 10:39 o1_mf_undotbs1_nr0cg0x9_.dbf
-rw-r----- 1 oracle oinstall 8658944 2月 9 10:39 o1_mf_users_nr0cgpco_.dbf
取得された時点の scn ディレクトリに PDB snapshot を構成するデータファイルが格納されている事が確認でき、このスナップショットから scn:3460351 状態のPDBを再生する事ができます。
CREATE PLUGGABLE DATABASE ORCL26PDB1SPSCN3463542 FROM ORCL26PDB1 USING SNAPSHOT;
このスナップショット取得後にもPDBに対するデータの更新が行われるケースにおいては、以下のコマンドによりREDOログの適用を含むPDBの再生が可能になります。
まず、現時点での scn を確認します。
SELECT CURRENT_SCN FROM V$DATABASE;
CURRENT_SCN
-----------
3463542
この例では、スナップショット取得時のscnは3460351ですが、3463542 までの変更履歴を適用しつつ、PDBを作成します。
CREATE PLUGGABLE DATABASE ORCL26PDB1SPSCN3463542 FROM ORCL26PDB1 USING SNAPSHOT AT SCN 3463542;
Pluggable database ORCL26PDB1SPSCN3463542は作成されました。
以下は alert.logの一部を抜粋したものです。
CREATE PLUGGABLE DATABASE ORCL26PDB1SPSCN3463542 FROM ORCL26PDB1 USING SNAPSHOT AT SCN 3463542;
Pluggable database ORCL26PDB1SPSCN3463542は作成されました。
ORCL26PDB1(3):ORA-65040 signalled during: CREATE PLUGGABLE DATABASE ORCL26PDB1SPSCN FROM ORCL26PDB1 USING SNAPSHOT AT SCN 3463542...
2026-02-09T11:01:52.998385+09:00
CREATE PLUGGABLE DATABASE ORCL26PDB1SPSCN FROM ORCL26PDB1 USING SNAPSHOT AT SCN 3463542
2026-02-09T11:01:53.005197+09:00
**************************************************************
Undo Create of Pluggable Database ORCL26PDB1SPSCN with pdb id - 6.
**************************************************************
ORA-65012 signalled during: CREATE PLUGGABLE DATABASE ORCL26PDB1SPSCN FROM ORCL26PDB1 USING SNAPSHOT AT SCN 3463542...
2026-02-09T11:02:08.349574+09:00
CREATE PLUGGABLE DATABASE ORCL26PDB1SPSCN FROM ORCL26PDB1 USING SNAPSHOT AT SCN 3463542
2026-02-09T11:02:08.353457+09:00
**************************************************************
Undo Create of Pluggable Database ORCL26PDB1SPSCN with pdb id - 6.
**************************************************************
ORA-65012 signalled during: CREATE PLUGGABLE DATABASE ORCL26PDB1SPSCN FROM ORCL26PDB1 USING SNAPSHOT AT SCN 3463542...
2026-02-09T11:02:32.772961+09:00
CREATE PLUGGABLE DATABASE ORCL26PDB1SPSCN3463542 FROM ORCL26PDB1 USING SNAPSHOT AT SCN 3463542
2026-02-09T11:02:47.067776+09:00
****************************************************************
Pluggable Database ORCL26PDB1SPSCN3463542 with pdb id - 6 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
****************************************************************
ORCL26PDB1SPSCN3463542(6):Media Recovery Start
ORCL26PDB1SPSCN3463542(6):non_full_rcv: par=1
ORCL26PDB1SPSCN3463542(6): Started logmerger process under PDB 6
2026-02-09T11:02:47.131111+09:00
ORCL26PDB1SPSCN3463542(6):Recovery start scn 3460352, time 02/09/2026 10:39:20
2026-02-09T11:02:47.212372+09:00
ORCL26PDB1SPSCN3463542(6):Parallel Media Recovery started with 4 slaves
2026-02-09T11:02:47.340187+09:00
ORCL26PDB1SPSCN3463542(6):Recovery of Online Redo Log: Thread 1 Group 2 Seq 26 Reading mem 0
ORCL26PDB1SPSCN3463542(6): Mem# 0: /u01/app/oracle/oradata/ORCL26/onlinelog/o1_mf_2_nr0c4t62_.log
ORCL26PDB1SPSCN3463542(6): Mem# 1: /u01/app/oracle/fast_recovery_area/ORCL26/onlinelog/o1_mf_2_nr0c4tcd_.log
2026-02-09T11:02:48.007628+09:00
ORCL26PDB1SPSCN3463542(6):Incomplete Recovery applied until change 3463542 time 02/09/2026 11:01:36
2026-02-09T11:02:48.017155+09:00
ORCL26PDB1SPSCN3463542(6):.... (PID:565818): Media Recovery Complete [dbsdrv.c:15773]
ORCL26PDB1SPSCN3463542(6):Autotune of undo retention is turned on.
ORCL26PDB1SPSCN3463542(6):JIT: pid 565818 requesting stop
ORCL26PDB1SPSCN3463542(6):Buffer Cache flush started: 6
ORCL26PDB1SPSCN3463542(6):Buffer Cache flush finished: 6
Completed: CREATE PLUGGABLE DATABASE ORCL26PDB1SPSCN3463542 FROM ORCL26PDB1 USING SNAPSHOT AT SCN 3463542
最後に
PDBスナップショット・カルーセルは本来であれば自動的に最大8つまでPDBスナップショットを作成し、データに依存した検証やデータ復元が主たる目的になると思います。さらに今回の様に scn や タイムスタンプを意識したPDBのクローン作成が可能なのでリフレッシュ可能クローンPDBのような最新の状態もできますし、PDBのフラッシュバック・データベースのような使い方も可能だと思います。(PDBスナップショットとArchive Log保持に依存した制約はありますが)
