代码改变世界

案例:使用scan IP无法连接数据库

2017-04-10 14:45  AlfredZhao  阅读(3515)  评论(0编辑  收藏  举报

环境:Oracle RAC(11.2.0.3)
现象:通过scanIP连接数据库报错ORA-12514: ORA-12514: TNS:listener does not currently know of service requested in connect descriptor

1.查看scan listener状态,发现服务没有注册成功:

[grid@rac1 ~]$ lsnrctl status LISTENER_SCAN1

LSNRCTL for IBM/AIX RISC System/6000: Version 11.2.0.3.0 - Production on 10-APR-2017 11:06:34

Copyright (c) 1991, 2011, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN1)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER_SCAN1
Version                   TNSLSNR for IBM/AIX RISC System/6000: Version 11.2.0.3.0 - Production
Start Date                14-MAR-2017 23:19:53
Uptime                    26 days 11 hr. 46 min. 41 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      ON
Listener Parameter File   /oracle/app/grid_home/network/admin/listener.ora
Listener Log File         /oracle/app/grid_home/log/diag/tnslsnr/jyrac2/listener_scan1/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER_SCAN1)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.80)(PORT=1521)))
The listener supports no services
The command completed successfully

2.Oracle用户查看 remote_listener 参数配置:

SQL> show parameter remote_listener

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
remote_listener                      string      

发现remote_listener参数为空,这显然是不正常的。

3.查看/etc/hosts的scan IP配置行:
cat /etc/hosts

192.168.1.80 jyrac-scan

4.oracle用户登录数据库,配置remote_listener参数:

SQL> alter system set remote_listener = 'jyrac-scan:1521' sid='*' scope=both;
SQL> alter system register;

5.再次查看scan listener状态,发现服务已经注册成功:

[grid@rac1 ~]$ lsnrctl status LISTENER_SCAN1

LSNRCTL for IBM/AIX RISC System/6000: Version 11.2.0.3.0 - Production on 10-APR-2017 11:13:47

Copyright (c) 1991, 2011, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN1)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER_SCAN1
Version                   TNSLSNR for IBM/AIX RISC System/6000: Version 11.2.0.3.0 - Production
Start Date                14-MAR-2017 23:19:53
Uptime                    26 days 11 hr. 53 min. 54 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      ON
Listener Parameter File   /oracle/app/grid_home/network/admin/listener.ora
Listener Log File         /oracle/app/grid_home/log/diag/tnslsnr/jyrac2/listener_scan1/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER_SCAN1)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.80)(PORT=1521)))
Services Summary...
Service "SERVICE2" has 1 instance(s).
  Instance "testdb1", status READY, has 1 handler(s) for this service...
Service "testdb" has 2 instance(s).
  Instance "testdb1", status READY, has 1 handler(s) for this service...
  Instance "testdb2", status READY, has 1 handler(s) for this service...
Service "testdb2" has 1 instance(s).
  Instance "testdb2", status READY, has 1 handler(s) for this service...
The command completed successfully

再次测试通过scanip连接数据库已经ok。