Oracle 11g RAC 监听器使用中出现no services以及no listener分析

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

扫描二维码关注公众号,回复: 1955297 查看本文章

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_listenerremote_listener。我们再次只需要参数local_listenerok了。

其实上面所说的no listenerno 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

再看看我们的数据库实例:

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,数据库实例vipscan-ip均可使用。如果数据库参数local_listener配置了vip,此时客户端只能透过vip访问数据库,如果数据库参数local_listener参数设置为scan-ip此时客户端只能透过scan-ip访问数据库。建议使用scan-ip,这样数据库在增删节点的时候就不会影响到客户端的使用,客户端也无需也节点的变化而修改配置。Oracle官方建议在使用scan-ip时最少配置3scan-ip。这样透过冗余可防止某个scan-ip不可用导致客户端无法访问数据库。

以上测试仅为个人测试分析,若有不对请各位及时指出,鄙人自当万分感谢。

猜你喜欢

转载自www.linuxidc.com/Linux/2017-11/148976.htm