有时候我们lsnrctl start
成功启动监听之后,查看status一直显示no service
1 | The listener supports no services |
对于这类问题,一般我的解决步骤如下:
** 1、查看数据库是否宕机 **
登录数据库查看数据库是否运行正常。对于12c数据库,通过show pdbs
或者查询v$pdbs
视图获取PDB状态
** 2、尝试强制注册服务 **
以sysdba登录数据库,执行以下命令
1 | SQL>alter system register; |
** 3、查看local_listener
参数是否有问题 **sqlplus / as sysdba
登录数据库,执行show parameter local
查看参数值与tnsname.ora中配置的值是否相同(对于动态注册监听,由PMON进程读取tnsname.ora中的相关信息)。
修改local_listener
参数值指向tnsname.ora中配置的监听名:
1 | SQL > alter system set local_listener=LISTENER; |
或者直接将local_listener
的值为监听配置
1 | SQL > alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=dbsw)(PORT=1521))'; |
一般来说到此都能解决服务注册的问题。下面提一下静态注册。
** 4、静态注册 **
静态注册的信息在listener.ora
文件中。我们通过netmgr
配置既是修改的该文件。我们可以通过ORACLE Net Manager
进行图形化的配置。也可以直接手动的在listener.ora
中添加配置:
1 | SID_LIST_LISTENER = |