Windows – How to troubleshoot issues with dynamic registration

listeneroracleoracle-11gwindowswindows-server

For testing I have been trying to install Oracle 11g on a test system with a single database several times with the aid of snapshots. This most recent iteration I have been having issues getting the database to register with the listener.

I am to understand that PMON, as long as the database is running, will attempt to register itself at regular intervals with a listener that is running locally on the same machine using port 1521. I have such a listener running but the service is not registered it seems.

lsnrctl status
.....
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.10.13.134)(PORT=1521)))
....
The listener supports no services

I can connect to the db using sqlplus / as sysdba and running select name from v$database; shows the DB in question. So between that tnsping and netstat -an I know the listener is at least running. alter system register does not appear to have an effect either. Not that it should matter since I should just have to wait a minute for it to work on its own.

I then went looking for any PMON related logs. It should have been in the trace folder ($ORACLE_BASE/diag/rdbms/database_name/SID/trace/SID_pmon_PID.trc) with other trc files but it was not there. I then used the following query to verify where it should be

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 with firewall disabled for testing (not that it changed anything). Listener.log doesn't show anything of worry. Just evidence of me restarting the listener many times.

I am aware that I could configure a static listener with SID_LIST but I would like to understand why this is not working. This is the 4th time around that I have been doing this and I have not run into this problem yet.

I am basically stuck since I am not sure where else I should be looking.

Best Answer

Listener registration in the database can be traced with:

alter system set events='immediate trace name listener_registration level 3';

Disable tracing when it is not needed anymore:

alter system set events='immediate trace name listener_registration level 0';

PMON registers to addresses defined in local_listener and remote_listener parameters. If you have an invalid address defined there, then it will not be able to register the instance in the listener.

If you have nothing defined there, then it tries to register on the local machine using the default 1521 port.

You could also try to set your local_listener as:

alter system set local_listener='(ADDRESS=(PROTOCOL=tcp)(HOST=10.10.13.134)(PORT=1521))';
alter system register;