Oracle 自体のインストールは正常に完了して、いざデータベースを作成してみると以下のようなエラーが発生。
リスナーを介したデータベースの接続に失敗しました。エラーを修正し、EM Configuration Assistant を再度実行してください。
それに続いて考えられる原因が 6 つほど続く。
リスナーのポートが正しくないよ、とか。リスナーが起動してないよ、とか。
今回はその中でも 3 番目の項目。
3) データベース・サービス AWDS がリスナーに登録されていません。データベース・サービスを登録してください。
に該当した場合の対処をメモ。
これに該当するかどうかは lsnrctl status コマンドを実行して、その中に作成したデータベースのインスタンス名があるかどうかで確認可能。
その他の理由で失敗した場合に関しては、今回は省略。調べてません。
今回は例として ORCL という名前のデータベースを作成したとします。
Windows のサービス一覧を見てみると OracleServiceORCL というサービスは登録もされているし起動もしている。なのにリスナーに登録されていないから SQL*Plus とかで接続できない。
というわけで、ORCL データベースのインスタンスをリスナーに登録する。
ORACLE_HOME\NETWORK\ADMIN に listener.ora というファイルがあるのでこれを編集する。
一部を抜粋して必要なところだけ抜き出すと以下のような記述があるはず。
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = CLRExtProc) (ORACLE_HOME = C:\app\USER\product\11.2.0\dbhome_1) (PROGRAM = extproc) (ENVS = "EXTPROC_DLLS=ONLY:C:\app\USER\product\11.2.0\dbhome_1\bin\oraclr11.dll") ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.40.129)(PORT = 1521)) ) )
この SID_LIST_LISTENER の SID_LIST に ORCL データベースの設定を追記する。
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = CLRExtProc) (ORACLE_HOME = C:\app\USER\product\11.2.0\dbhome_1) (PROGRAM = extproc) (ENVS = "EXTPROC_DLLS=ONLY:C:\app\USER\product\11.2.0\dbhome_1\bin\oraclr11.dll") ) (SID_DESC = (GLOBAL_DBNAME = ORCL) (SID_NAME = ORCL) (ORACLE_HOME = C:\app\USER\product\11.2.0\dbhome_1) ) )
リスナーを再起動してもう一度 lsnrctl status を実行してみる。
無事、リスナーのスタータスに ORCL データベースのインスタンスが表示されました。
SQL*Plus でも無事に接続完了。
この記事のおかげで大変救われました。
返信削除ありがとうございます。
なぜ動的に追加されなかったのか不明ですが、助かりました。
この記事に出会ってなかったらもう諦めてました。
あなたは素晴らしいです。ありがとうございます。
これからもブログを続けて下さい。
お役に立てたようで何よりです。
削除そもそもの原因が分かったら追記として残したいと思います。
コメントありがとうございました。