之前用cyberark 连接到数据库时候,总是提示监听查找不到对应的服务名。
进入服务器:
lsnrctl status 查看到的确没有对应的服务名,于是按照监听状态给出的监听文件目录,
进入监听文件目录
cd $ORACLE_HOME/network/admin
编辑监听文件:
vi listener.ora
sid_ list_orcl=
(sid_list =
(sid_des=
(global_dbname=orcl)
(sid_name=orcl)
)
(sid_des=
(global_dbname=test)
(sid_name=test)
)
)
===如果要监听多个实例,就在下面添加一个 sid_list 即可。
此时完成vi,:wq退出监听文件的编辑保存后,发现连接仍然提示监听搜索不到服务名。
于是怀疑监听是不是要重启,这个时候有两个选择:
1、lsnrctl stop—start(不会影响现有连接,但是新的连接会连不上)
2、lsnrctl reload(不影响任何连接,无论新老)
尝试这个办法后,发现还是连不上,网上搜索后发现监听采用的是动态监听。
service “cpom01” has 2 instances.
instance “cwip01”,status unknown,has 1 handlers for this server.
instance “cwipi01”,status ready, has 1 handers for this server.
监听文件中一旦一个服务对应两个实例的都是说明采用了动态监听,一个动态,一个静态,合并了。
那么对于动态监听,重启监听的方式就不是 lsnrctl reload了。
而是需要进入数据库:
alter system registor.
当然不运行上面这行命令也是可以的,只是要等一分钟,让PMON进程将数据库信息注册到监听。