技術ブログ
PDBの特性上、実行できないコマンドがいくつかあります。たとえば、 ALTER SYSTEM SWITCH LOGFILE; や ALTER SYSTEM ARCHIVE LOG CURRENT; は、 PDBに接続した状態では実行できず、実行するとエラー 「ORA-65040: プラガブル・データベース内からの操作は許可されていません」 が発生します。
SQL> ALTER SESSION SET CONTAINER=PDB1; セッションが変更されました。 SQL> SHOW CON_NAME CON_NAME ------------------------------ PDB1 SQL> ALTER SYSTEM SWITCH LOGFILE; ALTER SYSTEM SWITCH LOGFILE * 行1でエラーが発生しました。: ORA-65040: プラガブル・データベース内からの操作は許可されていません SQL> ALTER SYSTEM ARCHIVE LOG CURRENT; ALTER SYSTEM ARCHIVE LOG CURRENT * 行1でエラーが発生しました。: ORA-65040: プラガブル・データベース内からの操作は許可されていません
REDOの管理はCDBレベルで行われることから、ある意味、これは自然な制約ですが、 何らかの理由で、従来のデータベースと同様にPDBでもこれらのコマンドが実行できると嬉しい場合もあるでしょう。 この場合は NONCDB_COMPATIBLE初期化パラメータをtrueに設定します(要再起動)。
SQL> ALTER SYSTEM SET NONCDB_COMPATIBLE=true scope=spfile; システムが変更されました。 SQL> shutdown immediate データベースがクローズされました。 データベースがディスマウントされました。 ORACLEインスタンスがシャットダウンされました。 SQL> startup ORACLEインスタンスが起動しました。 Total System Global Area 626327552 bytes Fixed Size 2291472 bytes Variable Size 473958640 bytes Database Buffers 146800640 bytes Redo Buffers 3276800 bytes データベースがマウントされました。 データベースがオープンされました。 SQL> ALTER SESSION SET CONTAINER=PDB1; セッションが変更されました。 SQL> SHOW CON_NAME CON_NAME ------------------------------ PDB1 SQL> ALTER SYSTEM SWITCH LOGFILE; システムが変更されました。 SQL> ALTER SYSTEM ARCHIVE LOG CURRENT; システムが変更されました。
すると、PDBでもALTER SYSTEM SWITCH LOGFILE; や ALTER SYSTEM ARCHIVE LOG CURRENT; が実行できるようになります。