在单机环境下,只启动数据库不会拉起listener。 一般先启动listener(lsnrctl start),再启动数据库(startup)数据库会自动将服务注册到监听 若现启动数据库,再启动监听,lsnrctl status 时可能没有服务,过几分钟等pmon自己注册监听或者 手动alter system register都可以 若是等待数据库自己注册,但过几分钟,监听还是没有服务,就要看看端口号是不是1521,oracle默认注册 1521端口。此时手动注册即可 如果想让数据库注册非1521端口,需要修改parameter 中local_listener的值 alter system set local_listener = '(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.xxx)(PORT = 1522))' sid='orcl'; 说到local_listener,与之下相关的是remote_listener.官方文档对remote_listener这样解释 REMOTE_LISTENER specifies a network name that resolves to an address or address list of Oracle Net remote listeners (that is, listeners that are not running on the same machine as this instance). The address or address list is specified in the TNSNAMES.ORA file or other address repository as configured for your system. 实际上就是说,采用remote_listener参数可以实现数据库和listener的分离。不过我不知道这种分离有什么用,出于安全还是负载均衡。 单机环境的remote_listener 一般为空。 rac环境下,listener是跟随集群crs启动的。而且数据库 rdbms的启动要依赖asm实例的资源,所以不存在启动数据库后,listener没启动,当然出现故障除外。 rac下也有local_listener和remote_listener. local_listener是该节点的listener信息 remote_listener一般是如下的信息 SQL> show parameter remote_listener
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
remote_listener string scan:1521
在这里remote_listener应该是作为负载均衡来使用的。
|