Oracle19.3で不要になったPDBを削除しようとしています。次のエラーが発生します:
SQL> alter pluggable database DEV_PDB close immediate instances=all;
Pluggable database altered.
SQL> alter pluggable database DEV_PDB unplug into '/tmp/DEV_PDB.xml';
alter pluggable database DEV_PDB unplug into '/tmp/DEV_PDB.xml'
*
ERROR at line 1:
ORA-17500: ODM err:Invalid argument
ORA-01114: IO error writing block to file 5590 (block # 1)
ORA-17500: ODM err:Invalid argument
ORA-01114: IO error writing block to file 5589 (block # 1)
ORA-17500: ODM err:Invalid argument
ORA-01114: IO error writing block to file 5588 (block # 1)
ORA-17500: ODM err:Invalid argument
ORA-01114: IO error writing block to file 5587 (block # 1)
ORA-17500: ODM err:Invalid argument
ORA-01114: IO error writing block to file 5586 (block # 1)
ORA-17500: ODM err:Invalid argument
ORA-01114: IO error writing block to file 5585 (block # 1)
ORA-17500: ODM err:Invalid argument
ORA-01114: IO error writing block to file 5584 (block # 1)
ORA-17500: ODM err:Invalid argument
ORA-01114: IO error writing block to file 5583 (block # 1)
ORA-17500: ODM err:Invalid argument
ORA-01114: IO error writing block to file 5582 (block # 1)
ORA-17500: ODM err:Invalid argument
ORA-01114: IO error writing block to file 5581 (block # 1)
ORA-17500: ODM err:Invalid argument
ORA-01114: IO error writing block to file 5580 (block # 1)
ORA-17500: ODM err:Invalid argument
ORA-01114: IO error writing block to file 5579 (block # 1)
ORA-17500: ODM err:Invalid argument
ORA-01114: IO error writing block to file 5578 (block # 1)
ORA-17500: ODM err:Invalid argument
ORA-01114: IO error writing block to file 5577 (block # 1)
ORA-17500: ODM err:Invalid argument
ORA-01114: IO error writing block to file 5576 (block # 1)
ORA-17500: ODM err:Invalid argument
ORA-17528: A read-only file or a file opened read-only cannot be written to:
/u01/app/oracle/oradata/DEV_PDB/data04/users01.dbf.
うーん…おもしろい。 Oracle 12.1.0.2で同じプロセスを実行したとき、この問題は発生しませんでした(12.2と18をスキップしました)。
MOS Note 2419236.1と私自身の作業のおかげで(Noteは私の問題と完全には一致しません)、問題を解決することができました。問題は、このPDBがかつて私の環境でクローン化されたPDBの基盤であったことです。マルチテナント環境でPDBを作成し、それを複製して、ITスタッフ用の複数の開発データベースとテストデータベースを作成します。 Oracle 12.2以降では、OracleがクローンソースPDBのOSレベルでファイルパーミッションを変更することを学びました。ファイルのアクセス許可は読み取り専用に設定されています。 PDBのプラグを抜こうとすると、データファイルヘッダーに情報を書き込む必要があり、上記のエラーが発生します。
回避策は、データファイルのファイル権限を640に変更し、プラグを抜く操作を再試行することです。 Note 2419236.1の回避策にはダウンタイムが必要ですが、私の回避策には必要ありません。