テストのために、スナップショットを使用して、単一のデータベースを備えたテストシステムにOracle 11gを数回インストールしようとしています。この最新の反復では、データベースをリスナーに登録する際に問題が発生しています。
PMONは、データベースが実行されている限り、ポート1521を使用して同じマシンでローカルに実行されているリスナーに定期的に自身を登録しようとすることを理解します。このようなリスナーは実行されていますが、サービスは登録されていませんそうみたいです。
lsnrctl status
.....
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(Host=10.10.13.134)(PORT=1521)))
....
The listener supports no services
sqlplus / as sysdba
を使用してdbに接続できます。select name from v$database;
を実行すると、問題のDBが表示されます。したがって、そのtnspingとnetstat -an
の間では、リスナーは少なくとも実行されています。 alter system register
も効果がないようです。それ自体が機能するまで少し待つ必要があるので、問題ではないはずです。
次に、PMON関連のログを探しました。他のtrcファイルとともにtraceフォルダー($ Oracle_BASE/diag/rdbms/database_name/SID/trace/SID_pmon_PID.trc)にあるはずですが、そこにはありませんでした。次に、次のクエリを使用して、それがあるべき場所を確認しました
select pid, program, tracefile from v$process where program like '%PMON%';
d:\app\administrator\diag\rdbms\prod\prod\trace\prod_pmon_1464.trc
テストのためにファイアウォールが無効になっているWindows 2008R2(それが何かを変更したわけではありません)。 Listener.logには何の心配もありません。リスナーが何度も再起動した証拠です。
SID_LIST
を使用して静的リスナーを構成できることは承知していますが、これが機能しない理由を理解したいと思います。私がこれを行っているのは今回で4回目であり、まだこの問題に遭遇していません。
他にどこを見ればいいのかわからないので、基本的に行き詰まっています。
データベースへのリスナーの登録は、次の方法で追跡できます。
alter system set events='immediate trace name listener_registration level 3';
不要になったときにトレースを無効にします。
alter system set events='immediate trace name listener_registration level 0';
PMONは、local_listener
およびremote_listener
パラメータで定義されたアドレスに登録します。そこで無効なアドレスが定義されていると、リスナーにインスタンスを登録できません。
そこで何も定義されていない場合は、デフォルトの1521ポートを使用してローカルマシンに登録しようとします。
local_listener
を次のように設定することもできます:
alter system set local_listener='(ADDRESS=(PROTOCOL=tcp)(Host=10.10.13.134)(PORT=1521))';
alter system register;