別の CDB から unplug した PDB を、XML 記述子を使ってこの CDB にプラグインした。プラグイン直後の PDB は MOUNTED 状態である。次に以下を実行した。
SQL> ALTER PLUGGABLE DATABASE sales OPEN; Warning: PDB altered with errors. SQL> SELECT name, open_mode, restricted FROM v$pdbs WHERE name='SALES';
プラグイン時に互換性に関わる不一致(例:オプション/コンポーネントの差異)が PDB_PLUG_IN_VIOLATIONS に ERROR として記録されていた。OPEN の結果として最も適切なものを選べ。(単一選択)
- A
OPENはORA-xxxxxで失敗し、PDB はMOUNTEDのまま - BPDB は
READ WRITEかつRESTRICTED=YESで開く - CPDB は
READ WRITEかつRESTRICTED=NOで開く(ERRORは無視される) - DPDB は
READ ONLYで開く
正解・解説・誤答理由・ひっかけを見る▼ open
解説
PDB をプラグイン(またはクローン/作成)した後、Oracle は互換性チェックを行い、問題があれば PDB_PLUG_IN_VIOLATIONS ビューに記録する。
違反には ERROR(致命的)と WARNING(警告)がある。
WARNING なら PDB は通常どおり(RESTRICTED=NO)開き、ERROR なら開くものの RESTRICTED モードへ降格する。この対比がこの設問の論点である。
ERROR レベルの違反が残っている状態で OPEN すると、OPEN 自体は成功して
Warning: PDB altered with errors. が表示され、PDB は
RESTRICTED モード(RESTRICTED=YES)で開く。これは「管理者に未解決の問題があることを気付かせ、修正させる」ための安全装置である。
一般ユーザーは RESTRICTED SESSION 権限を持たない限り接続できない。
一方 WARNING レベルの違反はアラートログに記録されるだけで、PDB の OPEN は通常どおり成功し RESTRICTED=NO のままである。
管理者は PDB_PLUG_IN_VIOLATIONS を確認して原因を解消し、いったん CLOSE → 再 OPEN すると、違反が消えていれば
RESTRICTED=NO の通常モードで開けるようになる。
- A
ERRORレベルの違反があってもOPEN自体は成功する(違反の記録とOPENの失敗は別物)。文も "Warning: PDB altered with errors." を返しており、MOUNTEDのままではない。 - C
ERRORレベルの違反が残っている以上、通常モード(RESTRICTED=NO)では開かない。RESTRICTED=NOで開くのは違反がWARNINGどまりの場合である。 - D
READ ONLYはOPEN READ ONLYを明示した場合の状態。違反による自動降格はREAD ONLYではなくRESTRICTEDモード。
ERROR と WARNING の取り違え(WARNING なら降格しない)と、RESTRICTED と READ ONLY の混同(B vs D)も頻出。ALTER PLUGGABLE DATABASE sales OPEN; → Warning: PDB altered with errors. SELECT name, open_mode, restricted FROM v$pdbs WHERE name='SALES'; → SALES / READ WRITE / YES 解消後の再OPENで restricted=NO に戻る。