PMON进程动态注册实例状态一般有以下4个时间点:
一、数据库实例后于监听启动时。在数据库实例NOMOUNT过程中由PMON进程负责向监听动态注册实例信息。所以在数据库OPEN完成后,客户端就能连接至数据库了。从下面警告日志中的报错信息可以直观地看到,在数据库实例的启动过程中,PMON向监听进行了动态注册。
PMON started with pid=3, OS id=2521
Fri Jun 10 16:33:25 2011
ORA-00130: invalid listener address
'(ADDRESS=(PROTOCOL=TCP)(HOST=unknown)(PORT=1521))'
PSP0 started with pid=2, OS id=2526
二、数据库实例先于监听启动时。在监听启动完毕之后,由PMON进程自动往监听中动态注册实例信息。由于唤醒PMON进程需要一定的时间周期(一般在1分钟左右),所以在PMON进程完成动态注册之前,客户端连接至数据库时将会出现ORA-12514错误,如下所示:
ORA-12514: TNS:listener does not currently know of service requested in connect
descriptor
三、通过执行alter system register
命令手动注册实例信息至监听时,该命令实际上是手动触发PMON进程去更新实例信息。
四、通过执行alter system set service_name=‘xxx’
修改Oracle参数SERVICE_NAMES时,该命令实际上是手动触发PMON进程去更新实例信息。
注意 在配置监听自动注册的数据库环境中,为减少业务影响时间,监听应先于数据库启动,或者将监听配置成静态注册。
内容转自http://book.51cto.com/art/201312/421440.htm