在单机环境下,只启动数据库不会拉起listener。一般先启动listener(lsnrctlstart),再启动数据库(startup)数据库会自动将服务注册到监听,若现启动数据库,再启动监听,lsnrctlstatus时可能没有服务,过几分钟等pmon自己注册监听或者手动altersystemregister都可以。若是等待数据库自己注册,但过几分钟,监听还是没有服务,就要看看端口号是不是1521,oracle默认注册1521端口。此时手动注册即可。
如果想让数据库注册非1521端口,需要修改parameter中local_listener的值
altersystemsetlocal_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.56.xxx)(PORT=1522))'sid='orcl';
说到local_listener,与之下相关的是remote_listener.官方文档对remote_listener这样解释
REMOTE_LISTENERspecifiesanetworknamethatresolvestoanaddressoraddresslistofOracleNetremotelisteners(thatis,listenersthatarenotrunningonthesamemachineasthisinstance).TheaddressoraddresslistisspecifiedintheTNSNAMES.ORAfileorotheraddressrepositoryasconfiguredforyoursystem.
实际上就是说,采用remote_listener参数可以实现数据库和listener的分离。不过我不知道这种分离有什么用,出于安全还是负载均衡。
单机环境的remote_listener一般为空。
rac环境下,listener是跟随集群crs启动的。而且数据库rdbms的启动要依赖asm实例的资源,所以不存在启动数据库后,listener没启动,当然出现故障除外。
rac下也有local_listener和remote_listener.
local_listener是该节点的listener信息
remote_listener一般是如下的信息
SQL>showparameterremote_listener