リスナーの設定がおかしくなってしまった場合や、原因不明のエラーが解消しない場合は、リスナーを一度削除してから作り直す(再作成する)ことで解決することがあります。
ここでは、リスナーを再作成する手順を紹介します。
手順
①現在のリスナーの状態を確認する
再作成後に同じ名前・同じポートで作り直せるように、まずは現在のリスナー名やポート番号を確認しておきます。
- (リスナーの状態を確認するコマンド)
- lsnrctl status
複数のリスナーを構成している場合は、対象のリスナー名を指定してください。
(例)lsnrctl status LISTENER
②リスナーを停止する
- (リスナーを停止するコマンド)
- lsnrctl stop
③Oracle Net Configuration Assistantで、既存のリスナーを削除する
Windowsメニューから「Oracle Net Configuration Assistant」を起動し、「リスナー構成」→「削除」を選択して、対象のリスナーを削除します。
詳しい画面操作は、関連記事「リスナーを削除する」を参照してください。
④Oracle Net Configuration Assistantで、リスナーを新規に作成する
続けて同じ「Oracle Net Configuration Assistant」から「リスナー構成」→「追加」を選択し、リスナー名・プロトコル・ポート番号を指定してリスナーを作成します。
①で確認した内容と同じ名前・ポートで作成すれば、以前と同じ状態に作り直せます。
詳しい画面操作は、関連記事「リスナーを作成する」を参照してください。
⑤リスナーを起動し、正常に動作するか確認する
- (リスナーを起動するコマンド)
- lsnrctl start
- (リスナーの状態を確認するコマンド)
- lsnrctl status
「STATUS of the LISTENER」に続けてリスナー名や状態が表示され、エラーが出ていなければ再作成は完了です。
別の方法(listener.oraを直接作り直す)
Oracle Net Configuration Assistantがうまく起動しない場合や、細かいパラメータを保持したまま作り直したい場合は、listener.oraファイルを直接作り直す方法もあります。
①リスナーを停止する
- (リスナーを停止するコマンド)
- lsnrctl stop
②現在のlistener.oraファイルをリネームしてバックアップする
- (Windows系)
- %ORACLE_HOME%\network\admin\listener.ora
上記ファイルを「listener.ora.bak」などの名前に変更し、退避させておきます。
③新しいlistener.oraファイルを作成する
同じ場所に、テキストエディタで新しくlistener.oraファイルを作成します。最低限の記述例は以下のとおりです。
- (listener.ora)
- # listener.ora Network Configuration File LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 999.999.999.999)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC)) ) )
HOSTには、リスナーが動作するサーバのホスト名またはIPアドレスを指定してください。
④リスナーを起動する
- (リスナーを起動するコマンド)
- lsnrctl start
解説
- Oracle Net Configuration Assistantの実体は以下にあります。
%ORACLE_HOME%\bin\netca.bat - リスナーを再作成した直後は、稼働中のデータベースがまだ新しいリスナーにサービスを登録していないことがあります。その場合、以下のコマンドをデータベース側で実行すると、即座にリスナーへサービスを再登録できます。
- (データベースのサービスをリスナーへ即座に再登録するコマンド)
- ALTER SYSTEM REGISTER;
- 削除・作成をやり直さず、ポート番号など一部の設定だけを変更したい場合は、Oracle Net Configuration Assistantの「リスナー構成」で「再構成」を選択する方法もあります。設定を大きく崩さずに直したい場合は、こちらも検討してください。
関連記事
- [ORACLE] リスナーを作成する
- [ORACLE] リスナーを削除する
- [ORACLE] リスナーの定義を調べる
- [ORACLE] リスナーに登録されているサービスを確認する
- [ORACLE] リスナーログの場所