PDBを削除しようとしているOracle12.1.0.2マルチテナントデータベースがあります。しかし、誤ってデータベースサーバーからストレージを削除したため、PDBはそのファイルにアクセスできません。 PDBを抜くと、次のエラーが発生します:
SQL> alter pluggable database GOLD2019_08_22_125953 unplug into '/tmp/GOLD2019_08_22_125953.xml';
alter pluggable database GOLD2019_08_22_125953 unplug into '/tmp/GOLD2019_08_22_125953.xml'
*
ERROR at line 1:
ORA-01157: cannot identify/lock data file 50277 - see DBWR trace file
ORA-01110: data file 50277:
'/u01/app/oracle/oradata/mt_golden_2019_08_22_125953/data03/datafile_20.dbf'
それは残念なことですが、私の場合は予想されることです。プラグを抜く前に、このPDBのストレージを誤ってヤンクアウトしました。 Oracleのサポートサイトにあるほとんどの文献には、バックアップからPDBを復元するように書かれています。しかし、このPDBは本番環境のクローンであり、バックアップする必要はありません。これは25+TBであり、問題が発生した場合は、PDBを削除して、本番環境の新しいクローンを作成します。プラグを抜く前にストレージを削除するというばかげた間違いから私を救うかもしれないことを除いて、バックアップは必要ありません。
PDBのプラグを抜くことができなかったため、PDBを削除しようとしましたが、別のエラーが発生します:
SQL> drop pluggable database GOLD2019_08_22_125953 keep datafiles;
drop pluggable database GOLD2019_08_22_125953 keep datafiles
*
ERROR at line 1:
ORA-65179: cannot keep datafiles for a pluggable database that is not unplugged
今、私はキャッチ22の状況にいるように感じます。 PDBのプラグを抜くことも、ドロップすることもできません。
私はこのエラーを何度も目にしましたが、最初にプラグを抜かなくてもPDBをドロップできることを常に望んでいました。これを別のCDBに接続する必要はありません。私はただ物事を永久に終わらせたいだけです。そして、それが細部にあることに気づいたときです。そのORA-65179エラーメッセージを読んだとき、私はそれの後半に焦点を合わせました。 PDBは最初にプラグが抜かれていません。マルチテナントでの作業でこのエラーメッセージを少なくとも20回読みましたが、以下で強調表示するPDBを削除できなかった重要な詳細を見逃しました。
ORA-65179:維持できません プラグが抜かれていないプラガブルデータベースのデータファイル
スキップし続ける詳細は、データファイルを保持できなかったということでした。データファイルも削除すれば、PDBを削除できるということですか?
SQL> drop pluggable database GOLD2019_08_22_125953 including datafiles; Pluggable database dropped.
案の定、PDBを簡単に削除できました。時々、少し減速して、最後までジャンプするのではなく、目の前にあるすべてのものが見えるようにすると、細部に最も興味深いものが見つかることがあります。