关于oracle11g RAC 监听器使用中出现的no services以及no listener分析

本文详细介绍了Oracle 11g RAC环境下监听器的配置及管理方式,包括如何通过grid账号控制监听器,以及local_listener参数对于ASM实例和数据库实例的影响。

第一我觉得先检查下环境变量是否正确:





首先,我们必须知道在oracle11g中,官方推荐GI和oracle 数据库软件分开管理,在这种情况下,我们会发现数据库监听器其实是位于GI的管理账号下,即通常我们所创建的grid账号。在该grid账号的$ORACLE_HOME/network/admin目录下我们会发现我们的listener.ORA文件。同时监听器的启动与关闭都是由该grid账号来控制,若使用oracle账号此时就会发现报错如下:
TNS-01190: The user is not authorized to execute the requested listener command
当然我们仍然可以透过oracle账号用netca命令创建监听器,此时的监听器位于oracle账号的$ORACLE_HOME/network/admin目录下。
此外,默认情况下我们的tnsnames.ora文件仍然存在于oracle账号下的相关位置。
下面我们就监听器的具体配置分析下:
首先我们必须清楚地明白在RAC环境下都有哪些实例,各个实例是否都需要监听呢,针对该问题我们测试一把:
[grid@RAC01 ~]$ lsnrctl status
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 03-JAN-2014 08:33:35
…………………………
Copyright (c) 1991, 2009, Oracle. All rights reserved.
………………
Listener Parameter File /u/app/11.2.0/grid/network/admin/listener.ora
Listener Log File /u/app/grid/diag/tnslsnr/RAC01/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.134.30.27)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.134.30.47)(PORT=1521)))
Services Summary...
Service "+ASM" has 1 instance(s).
Instance "+ASM2", status READY, has 1 handler(s) for this service...
The command completed successfully
观察我们的监听器状态,此时可以发现只有ASM实例的监听服务,但是数据库实例的监听去哪儿呢?关于该问题我的推荐关注两个参数:local_listener、remote_listener。我们再次只需要参数local_listener就ok了。
其实上面所说的no listener、no services都是与该参数有关的。我们看看现在服务器上该参数的配置:
首先观察的是ASM实例:
SQL> show parameter local_l
NAME TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
local_listener string
(DESCRIPTION=(ADDRESS_LIST=(AD
DRESS=(PROTOCOL=TCP)(HOST=RAC0
1-vip)(PORT=1521))))
SQL> select instance_name,status from v$instance;
INSTANCE_N STATUS
---------- ------------------------------------
+ASM2 STARTED
可以看到asm实例的local_listener参数实际上使用的是vip。
再看看我们的数据库实例:


alter system set local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL= TCP)(HOST=10.10.11.27)(PORT=1522))))';
SQL> show parameter local_li
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
local_listener string (DESCRIPTION=(ADDRESS_LIST=(AD
DRESS=(PROTOCOL=TCP)(HOST=RACS
CAN.localdomain.)(PORT=1521)))
)
SQL> select instance_name,status from v$instance;
INSTANCE_N STATUS
---------- ------------
RACDB2 OPEN
我们观察到数据库实例使用的是scan-ip。
那是不是就是应为使用的ip情况的不同,listener监听器中的监听服务不同呢?
我们来测试一把:
此处我们只测试asm实例的参数local_listener即可,其他服务的雷同。
SQL> alter system set local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=RACSCAN.localdomain.)(PORT=1521))))';
System altered.
SQL> host lsnrctl status
Listener Parameter File /u/app/11.2.0/grid/network/admin/listener.ora
Listener Log File /u/app/grid/diag/tnslsnr/RAC01/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.134.30.27)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.134.30.47)(PORT=1521)))
The listener supports no services
The command completed successfully
我们观察到监听还是那个监听,但是服务却不是那个服务了,此时no services了。
此时我们在透过tnsnames.ora文件的配置从客户端登陆数据库时就会出现如下错误:
ORA-12520: TNS:listener could not find available handler for requested type of
server
Enter user-name:
无论是vip还是透过scan-ip都是不行的。从此处我们可以得出结论:ASM实例的监听地址必须是VIP而不能是scan-ip。否侧会出现上述报错。
将ASM实例的监听器修改回来。
alter system set local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL= TCP)(HOST=RAC01-vip)(PORT=1521))))';
那么数据库实例应该使用那个类型的ip呢,是scan-ip还是vip呢,其实这两个ip都行,就看你怎么用了。如果local_listener参数配置为指向vip,此时客户端只能透过vip访问数据库,如果local_listener参数配置为scan-ip此时客户端必须透过scan-ip访问,否则登陆同样报错如下:
ORA-12520: TNS:listener could not find available handler for requested type of
server
Enter user-name:
总结:
在oracle11g RAC环境中,监听器是由grid账号来维护的,此外ASM实例使用的一定是vip,数据库实例vip、scan-ip均可使用。如果数据库参数local_listener配置了vip,此时客户端只能透过vip访问数据库,如果数据库参数local_listener参数设置为scan-ip此时客户端只能透过scan-ip访问数据库。建议使用scan-ip,这样数据库在增删节点的时候就不会影响到客户端的使用,客户端也无需也节点的变化而修改配置。Oracle官方建议在使用scan-ip时最少配置3个scan-ip。这样透过冗余可防止某个scan-ip不可用导致客户端无法访问数据库。
以上测试仅为个人测试分析,若有不对请各位及时指出,鄙人自当万分感谢。









此文转自:http://blog.itpub.net/28612416/viewspace-1066678/


<think>首先,用户的问题是:“请问oracle 11g rac 使用 crsctl 命令查看 ora.LISTENER_SCAN1.lsnr 资源状态”。这涉及到在Oracle 11g RAC环境中使用crsctl命令来查看特定资源的状态。 从系统级指令: - 所有行内数学表达式必须使用$...$格式。但这里没有数学表达式,所以可能不需要。 - 独立公式必须使用$$...$$格式并单独成段。同样,可能不适用。 - LaTeX语法正确:确保任何公式正确。 - 使用中文回答:整个响应必须用中文。 - 生成相关问题:在回答结束时,添加相关问题。 - 引用标识:在引用的段落末尾自然地添加引用标识,如[^1]。 用户可见层: - 回答结构清晰,帮助用户逐步解决问题。 - 保证回答真实可靠。 - 参考站内引用:用户提供了引用[^1]、[^2]、[^3],我需要基于这些引用内容来回答。 引用内容: - 引用[^1]:关于srvctl add scan_listener和查看SCAN运行位置。 - 引用[^2]:关于ORACLE 12c RAC日常维护命令,包括srvctl status scan_listener和srvctl status scan。 - 引用[^3]:关于ora.LISTENER.lsnr状态为Not All Endpoints Registered,使用crsctl status res -t查看资源状态。 用户意图:用户想查找如何使用crsctl命令在Oracle 11g RAC环境中查看ora.LISTENER_SCAN1.lsnr资源的状态或信息。 关键点: - 在Oracle RAC中,资源状态可以使用crsctl命令查看。 - 具体资源是ora.LISTENER_SCAN1.lsnr。 - 用户指定了Oracle 11g,所以命令应该适用于11g。 - 从引用[^3],crsctl status res -t 可以查看所有资源的状态。 步骤: 1. **理解命令**:crsctl是Oracle Clusterware的控制命令。crsctl status res 用于查看资源状态。 2. **特定资源**:资源名称是ora.LISTENER_SCAN1.lsnr。在Oracle RAC中,SCAN监听器通常命名为类似ora.LISTENER_SCAN1.lsnr。 3. **查看状态**: - 使用crsctl status res -t 查看所有资源的状态,然后过滤出特定资源。 - 或者,直接使用crsctl status res ora.LISTENER_SCAN1.lsnr -t 来查看该资源的状态。 4. **Oracle 11g兼容性**:crsctl命令在11g中可用。引用[^3]显示在12c中使用,但命令在11g中类似。 5. **引用整合**:基于引用[^3],它展示了crsctl status res -t的输出,包括ora.LISTENER.lsnr的状态。所以,对于ora.LISTENER_SCAN1.lsnr,类似。 回答结构: - **介绍**:简要解释crsctl命令和目的。 - **步骤**:提供清晰步骤来查看资源状态。 - **命令示例**:给出具体命令示例。 - **注意事项**:如果有任何注意事项,如权限或环境。 - **相关问题**:在结尾生成相关问题。 生成相关问题: - 基于主题,如其他crsctl命令用法、SCAN监听器管理、故障排除等。 完整响应: - 用中文。 - 添加引用标识:如果引用内容,在末尾加[^1]等。但用户提供了引用,我需要参考它们。 - 例如,在解释时提到引用[^3]支持使用crsctl status res -t。 最终响应框架: 1. 开头:直接回答问题。 2. 中间:详细步骤和命令。 3. 结尾:相关问题。</think>以下是针对您的查询“在Oracle 11g RAC环境中使用crsctl命令查看ora.LISTENER_SCAN1.lsnr资源状态”的详细解答。我将基于Oracle官方文档和最佳实践,逐步解释操作步骤,确保回答真实可靠。在Oracle 11g RAC中,`crsctl`(Cluster Ready Services Control Utility)是管理集群资源的核心命令,用于查看、启动或停止资源状态。资源`ora.LISTENER_SCAN1.lsnr`表示SCAN(Single Client Access Name)监听器,它是RAC环境中客户端连接的关键组件。 ### 步骤:使用crsctl查看ora.LISTENER_SCAN1.lsnr资源状态 1. **登录到RAC节点**: - 以具有适当权限的用户登录到任意RAC节点(例如`grid`用户或`oracle`用户,需有`crsctl`执行权限)。 - 确保环境变量已设置(如`ORACLE_HOME`和`PATH`)。您可以使用以下命令初始化环境: ```bash export ORACLE_HOME=/u01/app/11.2.0/grid # 替换为您的Grid Infrastructure路径 export PATH=$ORACLE_HOME/bin:$PATH ``` 2. **使用crsctl命令查看资源状态**: - 查看所有资源的状态,并过滤出`ora.LISTENER_SCAN1.lsnr`: - 命令:`crsctl status res -t | grep ora.LISTENER_SCAN1.lsnr` - 解释:`crsctl status res -t`显示所有资源的详细状态表(包括资源名、目标状态、当前状态和运行节点),`grep`用于过滤特定资源。输出示例: ```bash ora.LISTENER_SCAN1.lsnr ONLINE ONLINE node1 # 状态为ONLINE表示正常 ``` - 如果资源未显示,请检查资源名称是否正确(Oracle 11g中SCAN监听器名称通常为`ora.LISTENER_SCAN1.lsnr`,但可能因配置而异)。 - 直接查看该资源的详细状态: - 命令:`crsctl status res ora.LISTENER_SCAN1.lsnr -t` - 解释:这会输出该资源的专属状态信息,包括当前状态(如`ONLINE`、`OFFLINE`或`UNKNOWN`)和运行节点。示例输出: ```bash NAME=ora.LISTENER_SCAN1.lsnr TYPE=ora.scan_listener.type TARGET=ONLINE STATE=ONLINE on node1 ``` 3. **常见状态解读**: - **ONLINE**:资源正常运行。 - **OFFLINE**:资源已停止(需检查日志或尝试启动)。 - **UNKNOWN** 或 **Not All Endpoints Registered**:资源状态异常(可能因网络或配置问题),需进一步排查[^3]。 - 如果状态异常,请使用`crsctl status res ora.LISTENER_SCAN1.lsnr -p`查看详细属性(如端口和依赖资源)。 4. **注意事项**: - **权限要求**:确保用户有执行`crsctl`的权限(通常需`grid`用户或root权限)。如果权限不足,使用`sudo`或切换到`grid`用户。 - **Oracle 11g兼容性**:`crsctl status res`命令在11g中完全支持,语法与12c类似(参考引用[^3]中12c的输出示例)。 - **备选命令**:除了`crsctl`,您还可以使用`srvctl status scan_listener`查看SCAN监听器状态(引用[^2]),但`srvctl`更侧重于服务管理,而`crsctl`提供更底层的资源控制。 - **故障排查**:如果命令无输出,请确认资源名称: - 使用`crsctl status res -t`列出所有资源,查找类似`ora.LISTENER_SCAN*.lsnr`的名称。 - 或运行`crsctl check resource ora.LISTENER_SCAN1.lsnr`验证资源完整性。 通过以上步骤,您可以快速检查`ora.LISTENER_SCAN1.lsnr`的状态。如果状态异常,建议结合集群日志(`$ORACLE_HOME/log/<node_name>/alert<node_name>.log`)和`crsctl`的详细输出来诊断问题[^3]。 ### 相关问题 为了帮助您深入理解Oracle RAC资源管理,以下是基于本主题的相关问题: 1. 如何在Oracle 11g RAC使用crsctl启动或停止SCAN监听器资源? 2. Oracle RAC中SCAN监听器与普通监听器有何区别? 3. 当crsctl显示资源状态为"Not All Endpoints Registered"时,如何进行故障排除?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值