oracle双实例单监听的各种问题和解决

来源:互联网 发布:淘宝质量好的女鞋店铺 编辑:程序博客网 时间:2024/05/20 13:14

因为业务需要,在oracle上装了第二个实例。 实例下面简称A和B。

重启后发现plsql无法连接任何一个实例,报错提示tns适配器错误。

上网查资料后,根据提示建立global dbname为其中一个实例的ID,停止实例A和B,重启监听,启动实例A。

tnsping实例A能够识别,plsql能够连接实例B。

然后启动实例B,tnsping能够识别,plsql无法连接,继续提示tns适配器错误,然后发觉实例A也无法连接了,我无语了...

然后继续查资料,在listener=这段后面 发现address = 这里tcp方式只有按机器名识别的,遂添加了一条ip方式的“ address =(protocol=tcp)(host = xxx.xxx.xxx.xxx)(port = 1521)  ”

停止实例A和实例B,重启监听,再重启实例A和B,发觉依旧tns适配器错误。抓狂....

联想到前面启动单实例可以访问,怀疑双实例单监听时会有端口冲突,网上虽然说没有冲突,但是实际上我这里这个表现应该就是冲突。

于是备份listener.ora,在sid_list_listener= 这段增加一个 sid_desc,sid_name用实例B,其余复制实例A。

重启监听后发觉问题依旧,查到网上资料说,需要配置listener=下 ,address增加一条ip相同端口不同的地址。“ address =(protocol=tcp)(host = xxx.xxx.xxx.xxx)(port = 1522)  ”

然后再启动oracle自带的netmanager,在服务命名下,把对应的实例配置不同的端口,监听程序也设置对应的端口。

重启监听后,双实例tnsping和plsql连接通过。


最后插个题外话,windows server2008 默认防火墙会挡掉oracle连接,其他机器连接oracle一定要关了防火墙或者设例外。


0 0