DBクライアントソフトなどでOracle DBへ接続時に「ORA-01109:データベースがオープンされていません。」が表示された場合の原因と対応方法についてメモしておきます。
「ORA-01109:データベースがオープンされていません。」の原因
文字通り接続しようとしているDBがオープンされていないのが原因となります。今回接続先を「ORCLPDB」に指定していましたがそこがオープンされていないようです。
念のためSQL Plusを起動して「show pdbs」コマンドでプラガブル・データベース(PDB)のオープン状態を確認するとやはりオープンされていませんでした。
「ORA-01109:データベースがオープンされていません。」の対処方法
SQL Plusで「alter pluggable database ORCLPDB open;」コマンドを実行し、ORCLPDBをオープンします。
「show pdbs」コマンドでプラガブル・データベース(PDB)のオープン状態を確認します。
これでORCLPDBのオープンだけなら完了していますが、このままPCを再起動するとまた再びクローズ状態に戻ってしまいます。ですので最後に現在オープンされている全てのPDBを自動起動(オープン)するように「alter pluggable database all save state;」コマンドで保存します。
補足:よくある注意点と確認ポイント
上記の対応だけで解決しない場合や、環境によっては以下のようなケースもあるので参考にしてください。
PDB が自動で開かない場合
ALTER PLUGGABLE DATABASE ALL SAVE STATE;
を実行しても、再起動後に PDB が自動的にオープンされないことがあります。 その際は以下を確認してみてください。
PDB の AUTO_STARTUP が有効になっているか
初期化パラメータ ENABLE_PLUGGABLE_DATABASE
が設定されているか
OS 側の起動スクリプトに PDB オープン処理が含まれているか
権限不足でエラーになる場合
PDB を開こうとしたときに ORA-01031: insufficient privileges が出る場合は、権限不足の可能性があります。SYSDBA
権限を持つユーザーで接続して実行する必要があります。
PDB の状態確認
今の状態を確認したいときは、次のコマンドを使うと便利です。
```sql
SELECT name, open_mode FROM v$pdbs;
-- または
SELECT name, status FROM dba_pdbs;
READ WRITE
であればオープン済み、MOUNTED
ならまだ開いていない状態です。
ログのチェック
もし原因が分からない場合は、アラートログ(alert log)や trace ファイルを確認してみてください。 「ファイルが読み込めない」「整合性が取れていない」といったエラーが記録されていることもあります。
冗長構成を利用している場合
Data Guard や RAC のような構成では、PDB のオープン状態が自動で引き継がれないことがあります。 フェイルオーバー後に PDB が閉じたままになるケースもあるので注意が必要です。
関連するエラーメッセージ
今回の ORA-01109 以外にも、以下のエラーが一緒に出ることがあります。
これらも「データベースがオープンされていない」状態に関係するため、併せて確認してみてください。