客户端访问scan IP出现ora12545错误
2016-11-28 21:27
225 查看
现场环境是oracle linux 5.7下一个双节点版本为11.2.0.4的rac集群,运行着3个数据库,有3个scan ip。
在使用过程中发现使用scan ip连接其中一个数据库服务名时经常出现oracle TNS-12545:因目标主机或对象不存在的错误,有时又能访问。使用该scan ip访问其他两个数据库服务名完全正常,未出现12545错误。随即通过vip地址尝试访问有问题的数据库,测试正常,同样未出现12545错误,判断问题与scan监听有关。
查看scan监听状态
[grid@db2 ~]$ lsnrctl status listener_scan2
LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 27-NOV-2016 13:04:40
Copyright (c) 1991, 2013, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN2)))
STATUS of the LISTENER
------------------------
Alias listener_scan2
Version TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date 27-NOV-2016 12:34:08
Uptime 0 days 0 hr. 30 min. 31 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/11.2.0/grid/network/admin/listener.ora
Listener Log File /u01/app/grid/diag/tnslsnr/db2/listener_scan2/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER_SCAN2)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.138.129.3)(PORT=1521)))
Services Summary...
Service "CAIWUXDB" has 1 instance(s).
Instance "CAIWU1", status READY, has 1 handler(s) for this service...
Service "RLZY" has 2 instance(s).
Instance "RLZY1", status READY, has 1 handler(s) for this service...
Instance "RLZY2", status READY, has 1 handler(s) for this service...
Service "RLZYXDB" has 2 instance(s).
Instance "RLZY1", status READY, has 1 handler(s) for this service...
Instance "RLZY2", status READY, has 1 handler(s) for this service...
Service "caiwu" has 1 instance(s).
Instance "CAIWU1", status READY, has 1 handler(s) for this service...
Service "chdyl" has 1 instance(s).
Instance "chdyl1", status READY, has 1 handler(s) for this service...
Service "chdylXDB" has 1 instance(s).
Instance "chdyl1", status READY, has 1 handler(s) for this service...
The command completed successfully
从监听的状态来看,监听正常,为进一步找到问题所在,我们测试连接listener_scan2监听对应的scan ip(可通过srvctl status scan和srvctl status scan_listener获知),然后查看监听日志,监听日志在/u01/app/grid/diag/tnslsnr/db2/listener_scan2/alert/中,但建议查看/u01/app/grid/diag/tnslsnr/db2/listener_scan2/trace中的文件,发现连接的时候
监听日志出现TNS-01184及TNS-01185错误:
27-NOV-2016 12:42:12 * (CONNECT_DATA=(CID=(PROGRAM=JDBC Thin Client)(HOST=__jdbc__)(USER=root))(SERVICE_NAME=RLZY)) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.138.130.62)(PORT=35885)) * establish * RLZY * 0
27-NOV-2016 12:42:16 * service_update * chdyl1 * 0
Sun Nov 27 12:42:17 2016
27-NOV-2016 12:42:17 * (CONNECT_DATA=(CID=(PROGRAM=JDBC Thin Client)(HOST=__jdbc__)(USER=root))(SERVICE_NAME=RLZY)) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.138.130.62)(PORT=35888)) * establish * RLZY * 0
27-NOV-2016 12:42:19 * service_update * RLZY2 * 0
27-NOV-2016 12:42:19 * service_update * RLZY1 * 0
27-NOV-2016 12:42:22 * (CONNECT_DATA=(CID=(PROGRAM=JDBC Thin Client)(HOST=__jdbc__)(USER=root))(SERVICE_NAME=RLZY)) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.138.130.62)(PORT=35891)) * establish * RLZY * 0
27-NOV-2016 12:42:23 * service_register * RLZY * 1184
TNS-01184: Listener rejected registration or update of service handler "DEDICATED"
TNS-01185: Registration attempted from a remote node
27-NOV-2016 12:42:23 * service_died * RLZY * 12537
上google一查,该错误一般是在11.2.0.2及下版本出现,原因是是local_listener中的参数设置的主机名,需要改为该节点的VIP地址,但我这里不应该属于这种情况,但还是查看下,结果还真发现问题,虽然数据库的local_listener参数使用的是vip地址,但节点2的local_listener参数却是空:
节点2:
SQL> show parameter local_listener
NAME TYPE
VALUE
------------------------------------ ----------- ------------------------------
local_listener string
节点1:
SQL> show parameter local_listener
NAME TYPE
VALUE
------------------------------------ ----------- ------------------------------
local_listener string
(ADDRESS=(PROTOCOL=TCP)(HOST=
10.138.129.103)(PORT=1521))
设置节点的vip为监听地址:
SQL> alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=10.138.129.104)(PORT=1521))' scope=both sid='RLZY2';
System altered.
SQL> alter system register;
System altered.
设置后查看:
SQL> show parameter local_listener
NAME TYPE
VALUE
------------------------------------ ----------- ------------------------------
local_listener string
(ADDRESS=(PROTOCOL=TCP)(HOST=1
0.138.129.104)(PORT=1521))
通过设置后,经过测试再无TNS-12545错误,问题得到解决,但为什么节点2的local_listener为空就莫名其妙了。
在使用过程中发现使用scan ip连接其中一个数据库服务名时经常出现oracle TNS-12545:因目标主机或对象不存在的错误,有时又能访问。使用该scan ip访问其他两个数据库服务名完全正常,未出现12545错误。随即通过vip地址尝试访问有问题的数据库,测试正常,同样未出现12545错误,判断问题与scan监听有关。
查看scan监听状态
[grid@db2 ~]$ lsnrctl status listener_scan2
LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 27-NOV-2016 13:04:40
Copyright (c) 1991, 2013, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN2)))
STATUS of the LISTENER
------------------------
Alias listener_scan2
Version TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date 27-NOV-2016 12:34:08
Uptime 0 days 0 hr. 30 min. 31 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/11.2.0/grid/network/admin/listener.ora
Listener Log File /u01/app/grid/diag/tnslsnr/db2/listener_scan2/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER_SCAN2)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.138.129.3)(PORT=1521)))
Services Summary...
Service "CAIWUXDB" has 1 instance(s).
Instance "CAIWU1", status READY, has 1 handler(s) for this service...
Service "RLZY" has 2 instance(s).
Instance "RLZY1", status READY, has 1 handler(s) for this service...
Instance "RLZY2", status READY, has 1 handler(s) for this service...
Service "RLZYXDB" has 2 instance(s).
Instance "RLZY1", status READY, has 1 handler(s) for this service...
Instance "RLZY2", status READY, has 1 handler(s) for this service...
Service "caiwu" has 1 instance(s).
Instance "CAIWU1", status READY, has 1 handler(s) for this service...
Service "chdyl" has 1 instance(s).
Instance "chdyl1", status READY, has 1 handler(s) for this service...
Service "chdylXDB" has 1 instance(s).
Instance "chdyl1", status READY, has 1 handler(s) for this service...
The command completed successfully
从监听的状态来看,监听正常,为进一步找到问题所在,我们测试连接listener_scan2监听对应的scan ip(可通过srvctl status scan和srvctl status scan_listener获知),然后查看监听日志,监听日志在/u01/app/grid/diag/tnslsnr/db2/listener_scan2/alert/中,但建议查看/u01/app/grid/diag/tnslsnr/db2/listener_scan2/trace中的文件,发现连接的时候
监听日志出现TNS-01184及TNS-01185错误:
27-NOV-2016 12:42:12 * (CONNECT_DATA=(CID=(PROGRAM=JDBC Thin Client)(HOST=__jdbc__)(USER=root))(SERVICE_NAME=RLZY)) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.138.130.62)(PORT=35885)) * establish * RLZY * 0
27-NOV-2016 12:42:16 * service_update * chdyl1 * 0
Sun Nov 27 12:42:17 2016
27-NOV-2016 12:42:17 * (CONNECT_DATA=(CID=(PROGRAM=JDBC Thin Client)(HOST=__jdbc__)(USER=root))(SERVICE_NAME=RLZY)) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.138.130.62)(PORT=35888)) * establish * RLZY * 0
27-NOV-2016 12:42:19 * service_update * RLZY2 * 0
27-NOV-2016 12:42:19 * service_update * RLZY1 * 0
27-NOV-2016 12:42:22 * (CONNECT_DATA=(CID=(PROGRAM=JDBC Thin Client)(HOST=__jdbc__)(USER=root))(SERVICE_NAME=RLZY)) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.138.130.62)(PORT=35891)) * establish * RLZY * 0
27-NOV-2016 12:42:23 * service_register * RLZY * 1184
TNS-01184: Listener rejected registration or update of service handler "DEDICATED"
TNS-01185: Registration attempted from a remote node
27-NOV-2016 12:42:23 * service_died * RLZY * 12537
上google一查,该错误一般是在11.2.0.2及下版本出现,原因是是local_listener中的参数设置的主机名,需要改为该节点的VIP地址,但我这里不应该属于这种情况,但还是查看下,结果还真发现问题,虽然数据库的local_listener参数使用的是vip地址,但节点2的local_listener参数却是空:
节点2:
SQL> show parameter local_listener
NAME TYPE
VALUE
------------------------------------ ----------- ------------------------------
local_listener string
节点1:
SQL> show parameter local_listener
NAME TYPE
VALUE
------------------------------------ ----------- ------------------------------
local_listener string
(ADDRESS=(PROTOCOL=TCP)(HOST=
10.138.129.103)(PORT=1521))
设置节点的vip为监听地址:
SQL> alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=10.138.129.104)(PORT=1521))' scope=both sid='RLZY2';
System altered.
SQL> alter system register;
System altered.
设置后查看:
SQL> show parameter local_listener
NAME TYPE
VALUE
------------------------------------ ----------- ------------------------------
local_listener string
(ADDRESS=(PROTOCOL=TCP)(HOST=1
0.138.129.104)(PORT=1521))
通过设置后,经过测试再无TNS-12545错误,问题得到解决,但为什么节点2的local_listener为空就莫名其妙了。
相关文章推荐
- 通过客户端IP来规定访问者的访问权限(原创)
- 通过客户端IP来规定访问者的访问权限
- TCP/IP?UDP编程之客户端访问服务端的数据库(数据库配置)
- nginx针对客户端ip进行限制:外网访问需要密码认证
- 限制客户端ip访问
- 客户端无法访问,初遇IP路由技术。
- 关于IIS+ASP.net 中客户端访问出现的用户和密码提示解决方法
- WebService XFire获得访问服务端的客户端IP
- tigase客户端通过ip访问 Not able to connect Android client with local XMPP server
- “windows 2003域用户在客户端用域服务器IP和域名称访问IIS提示输入用户名密码”解决办法
- JSP从服务器获取客户端访问IP
- 访问IIS客户端出现server application error解决方案
- apache+weblogic获取客户端访问的真正ip
- Asp.Net : 捕捉和记录网站中出现的所有未处理错误,抛出详细的页面来源和访问ip,调用的接口方法及异常实例(记事本日志,系统日志及数据库日志)
- oracle 11客户端访问oracle 9i,中文出现乱码?
- 客户端访问sharepoint服务器时出现Http 500内部服务器错误的解决方法
- 如何获取访问web服务的客户端IP?客户端调用web服务时,对于有参函数能输入参数?
- 设置Oracle用IP远程连接和客户端访问
- 连接scan ip出现ORA-12545错误