您的位置:首页 > 数据库 > Oracle

oracle中多实例配置多监听器的问题

2011-12-25 17:15 337 查看

问题描述:

      在windows7旗舰版上装了Oracle10G的服务端,现在通过DBCA创建了一个启动实例orcl,另外两个业务实例instan1,instan2,数据库名和实例名相同,创建相应用户。通过netca或者netmanager给两个业务实例instan1,instan2分别创建两个监听器listen1,listen2,并且使用非1521端口。然后启动数据库服务,监听器服务等(启动之前已经set ORACLE_SID=xxxx)。                 使用lsnrctl 查看相应监听器的状态:lsnrctl status listen1/listen2 (实际操作中分开执行),在状态“命令被成功执行”的上一行均发现了有一句:“监听XXXXXXX服务”                 sqlplus登录数据库,除了启动启动实例orcl能够成功登录,其他均提示失败;                使用plsql工具链接业务实例时,也提示错误:监听程序当前无法识别连接描述符中请求的服务。查看网上很多论坛和oracle官方指导书,大致的意思是:oracle程序启动时默认是向(pmon是linux和unix下的??)相关服务注册1521默认端口。如果使用非1521端口,需要修改 system面的local_listener配置节。

解决方法:

具体尝试如下,且最后本人尝试结果成功。过程不定适用所有情况,仅供参考。
1 首先修改listener.ora文件加入配置的监听器listener_ex(建议使用netca或者netmanager添加)这个监听器是用来正常监听的,缺少的话也会出错;2 然后修改tnsname.ora加入local_listener需要的监听器,如 LISTENER_MY=xxxxx(xxxx)(配置参考sample里面的样例也可以)。(在oracle的官方文档中有提到local_listener对应的监听器配置要在tnsname.ora里面指定)######################至于为什么要在tnsnames.ora文件里和listener.ora里同时添加监听器(名字是否可以相同待考证),本人也没搞清楚,建议查看官方文档。######################3 接下来要能想办法在sqlplus中以sysdba用户登录相应实例,例如instan1    1) 查看参数列表: show parameter list          在列出的字段中会看到local_listener段的值为空。    2)  修改local_listener的值:    alter system set local_listener=LISTENER_MY.注意:对于每个想要单独配置监听器的实例,以上三步都要做。最后重启oracleservice(sid)服务,dbconsole服务,和监听器服务。链接正常。 

补充说明

1521端口监听的实例一般都能正确连接上,可以通过以上步骤,从同一个监听程序,链接到其他实例,方法是:把其他地址和端口配置到启动启动实例的local_listner对应的监听中,但是其他端口的监听器在listener.ora中还是要正常配置,而且,链接的时候必须启动。这样可以通过启动实例的监听器,通过指定实例,以sysdba身份登录相应实例。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息