web-dev-qa-db-ja.com

動的登録の問題をトラブルシューティングするにはどうすればよいですか?

テストのために、スナップショットを使用して、単一のデータベースを備えたテストシステムに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回目であり、まだこの問題に遭遇していません。

他にどこを見ればいいのかわからないので、基本的に行き詰まっています。

2
Matt

データベースへのリスナーの登録は、次の方法で追跡できます。

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;
3
Balazs Papp