Oracle监听器的静态注册与动态注册,以及DB_DOMAIN问题

从Oracle8i开始,Oracle可以不需要在监听器SID_LIST中配置需要监听的Oracle实例,PMON会自动动态注册到监听器,当然,这是有条件限制的,如:监听器使用缺省名称或在local_listener、remote_listener中配置,端口1521,TCP协议。另外,如想使用动态注册,请注意检查/etc/hosts中的机器名及IP是否正确。

如果你设置了DB_DOMAIN,需要注意以下几点:

 

1、静态注册时,GLOBAL_NAME应该是SERVICE_NAMES+DB_DOMAIN。如下

(SID_DESC =
(GLOBAL_NAME = oradb.com)
(ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
(SID_NAME = oradb)
)

这时,注册到监听器中的是这样的

Service "oradb" has 1 instance(s).
Instance "oradb", status UNKNOWN, has 1 handler(s) for this service...

客户端连接时,tnsnames.ora中的SERVICE_NAME应该等于SERVICE_NAMES,如下

(CONNECT_DATA =
(SERVICE_NAME = oradb)
)
2、动态注册时,注册到监听器中的是这样的

Service "oradb.com" has 1 instance(s).
Instance "oradb", status READY, has 1 handler(s) for this service...

客户端连接时,tnsnames.ora中的SERVICE_NAME应该等于SERVICE_NAMES+DB_DOMAIN,如下

(CONNECT_DATA =
(SERVICE_NAME = oradb.com)
)

3、即使你设置了静态注册,ORACLE启动后也会自动进行动态注册,所以刚启动监听器时,你只能看到静态注册的信息,过一段时间或执行alter system register;后,就会看到动态注册的信息,因此,动态注册完成后,tnsnames.ora中的SERVICE_NAME加不加DB_DOMAIN都可以连接。

posted @ 2011-11-04 15:47  wwh  阅读(425)  评论(0编辑  收藏  举报