Oracle 11gR2 RAC Listener - 多端口多监听

来源:互联网 发布:pc软件是什么意思啊 编辑:程序博客网 时间:2024/05/21 06:28


Oracle单实例库,可以配置多个监听服务,同时监听同一个service,具体的步骤可以参考之前的文章。

Oracle RAC想使用多端口,多监听服务,来同时监听同一个service,也可以。

官方文档:http://docs.oracle.com/cd/B28359_01/network.111/b28317/listener.htm

例子-1

Oracle 11gR2 RAC安装完毕之后,默认会在grid用户下创建4个监听服务,包括1个普通监听服务,3个scan监听服务。

可以到oracle账户下创建一个另监听服务器listener_prod端口1531,来监听prod服务。

1,创建配置listener.ora文件(oraprod用户,节点1,节点2)

节点1LISTENER_PROD =  (DESCRIPTION_LIST =    (DESCRIPTION =      (ADDRESS_LIST =        (ADDRESS = (PROTOCOL = TCP)(HOST = q1ebsdb01-vip.imc.com)(PORT = 1531)(IP = FIRST)))      (ADDRESS_LIST =        (ADDRESS = (PROTOCOL = TCP)(HOST = q1ebsdb01)(PORT = 1531)(IP = FIRST)))    )  )SID_LIST_LISTENER_PROD =  (SID_LIST =    (SID_DESC = (ORACLE_HOME = /prod/oracle/product/11.2.0/db_1)(SID_NAME = prod1))  )节点2LISTENER_prod =  (DESCRIPTION_LIST =    (DESCRIPTION =      (ADDRESS_LIST =        (ADDRESS = (PROTOCOL = TCP)(HOST = q1ebsdb02-vip.imc.com)(PORT = 1531)(IP = FIRST)))      (ADDRESS_LIST =        (ADDRESS = (PROTOCOL = TCP)(HOST = q1ebsdb02)(PORT = 1531)(IP = FIRST)))    )  )SID_LIST_LISTENER_prod =  (SID_LIST =    (SID_DESC = (ORACLE_HOME = /prod/oracle/product/11.2.0/db_1)(SID_NAME = prod2))  )
2,创建配置tnsnames.ora文件(oraprod用户,节点1,节点2)

节点1grid_LOCAL =  (DESCRIPTION =    (ADDRESS = (PROTOCOL = TCP)(HOST = q1ebsdb01-vip.imc.com)(PORT = 1521))    (CONNECT_DATA =      (SERVER = DEDICATED)      (SERVICE_NAME = prod)    )  )prod_LOCAL =  (DESCRIPTION =    (ADDRESS = (PROTOCOL = TCP)(HOST = q1ebsdb01-vip.imc.com)(PORT = 1531))    (CONNECT_DATA =      (SERVER = DEDICATED)      (SERVICE_NAME = prod)    )  )节点2grid_LOCAL =  (DESCRIPTION =    (ADDRESS = (PROTOCOL = TCP)(HOST = q1ebsdb02-vip.imc.com)(PORT = 1521))    (CONNECT_DATA =      (SERVER = DEDICATED)      (SERVICE_NAME = prod)    )  )prod_LOCAL =  (DESCRIPTION =    (ADDRESS = (PROTOCOL = TCP)(HOST = q1ebsdb02-vip.imc.com)(PORT = 1531))    (CONNECT_DATA =      (SERVER = DEDICATED)      (SERVICE_NAME = prod)    )  )

3,检查oraprod的TNS_ADMIN环境变量,默认系统会到$ORACLE_HOME/network/admin下寻找listener.ora和tnsnames.ora的配置。

设置oraprod的环境变量TNS_ADMIN='/prod/oracle/product/11.2.0/network/admin/PROD_p1ebsdb',监听的配置文件都放在该目录下,否则会导致出错

TNS-01101:Could not find service name,参考网友http://jvardhan.blogspot.com/2012/02/tnsadmin-effects.html

4,修改local_listener

SQL> show parameter listenerNAME                                 TYPE        VALUE------------------------------------ ----------- ------------------------------listener_networks                    stringlocal_listener                       string      (DESCRIPTION=(ADDRESS_LIST=(AD                                                 DRESS=(PROTOCOL=TCP)(HOST=10.2                                                 53.52.40)(PORT=1521))))remote_listener                      string      q1ebsdb-scan:1521SQL> show parameter listenerNAME                                 TYPE        VALUE------------------------------------ ----------- ------------------------------listener_networks                    stringlocal_listener                       string      (DESCRIPTION=(ADDRESS_LIST=(AD                                                 DRESS=(PROTOCOL=TCP)(HOST=10.2                                                 53.52.41)(PORT=1521))))recovery_parallelism                 integer     0remote_listener                      string      q1ebsdb-scan:1521RAC中同一个service_name默认被一个listener监听,也能同时被2个不同的listener所监听。tnsnames.ora文件只需要有一个即可,但listner.ora为2个,oragrid和oraprod的监听都使用该文件。SQL> show parameter listenerNAME                                 TYPE        VALUE------------------------------------ ----------- ------------------------------listener_networks                    stringlocal_listener                       string      (DESCRIPTION=(ADDRESS_LIST=(AD                                                 DRESS=(PROTOCOL=TCP)(HOST=10.2                                                 53.52.40)(PORT=1521)))), (DESC                                                 RIPTION=(ADDRESS_LIST=(ADDRESS                                                 =(PROTOCOL=TCP)(HOST=10.253.52                                                 .40)(PORT=1531))))remote_listener                      string      q1ebsdb-scan:1521SQL> !hostnameq1ebsdb01.imc.comSQL> alter system set local_listener='grid_LOCAL','prod_LOCAL' scope=memory sid='prod1';System altered.SQL> alter system set local_listener='grid_LOCAL','prod_LOCAL' scope=memory sid='prod2';System altered.SQL> show parameter lisNAME                                 TYPE        VALUE------------------------------------ ----------- ------------------------------listener_networks                    stringlocal_listener                       string      grid_LOCAL, prod_LOCALrecovery_parallelism                 integer     0remote_listener                      string      q1ebsdb-scan:1521SQL> alter system set local_listener='grid_LOCAL','prod_LOCAL' sid='prod1';System altered.SQL> alter system set local_listener='grid_LOCAL','prod_LOCAL' sid='prod2';System altered.注意不能同时一起更新该参数文件,因为配置文件的具体内容不相同。SQL> alter system set local_listener='grid_LOCAL','prod_LOCAL';alter system set local_listener='grid_LOCAL','prod_LOCAL'*ERROR at line 1:ORA-32008: error while processing parameter update at instance prod1ORA-02097: parameter cannot be modified because specified value is invalidORA-00119: invalid specification for system parameter LOCAL_LISTENERORA-00132: syntax error or unresolved network name 'grid_LOCAL'ORA-00132: syntax error or unresolved network

5,注册新建的listener服务到CRS,oraprod用户执行

srvctl add listener -l LISTENER_PROD  -o /prod/oracle/product/11.2.0 -p 1531

srvctl setenv listener -lLISTENER_PROD  -T TNS_ADMIN='/prod/oracle/product/11.2.0/network/admin/PROD_p1ebsdb'

6,验证一下

lsnrctl status LISTENER

lsnrctl status LISTENER_PROD

原创粉丝点击