oracle 客户端 ora12560tns协议适配器错误,为啥呢?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 客户端 ora12560tns协议适配器错误,为啥呢?相关的知识,希望对你有一定的参考价值。

oracle服务器端和客户端的监听配置都配好了,服务器端的sqlplus能正常使用,但客户端的sqlplus一直报ora12560tns协议适配器错误,为什么呢?

查看服务器监听问题有问题还是客户端有问题,你在服务器上执行的sqlplus走监听了吗?服务器端的tnsname.ora文件配置好之后,使用sqlplus user/password@sid走下监听试试能不能正常登录,登录没有问题就说明服务器端是好的,然后查看客户端登录其他机器是不是好,其他都是好的那检查网络是不是有防火墙,要一步步查的 参考技术A

如何诊断ORA-125XX连接问题 askmaclean

以下这个Action Script是我收集的在解决ORA-125XX(如ORA-12560)这类网络链接故障时的一些思路,主要包括 现有的网络配置(client & server side)、监听日志、SQLNET Client trace等信息– How to troubleshooting ORA-125** connection issues:
 
 
# CHECK FIREWALL, WINDOWS FIREWALL , ANTI-Virus Software First !
ping hostname
tnsping TNS
trcroute TNS
telnet  <hostname> <port>  
tracert hostname
client side
sqlplus scott/tiger@TNS
&
server side
sqlplus scott/tiger@TNS
cat /etc/hosts
cat /etc/resolv.conf
cat /etc/nsswitch.conf
ipconfig -a
ping 127.0.0.1
$ORACLE_HOME/network/admin/sqlnet.ora
$ORACLE_HOME/network/admin/tnsnames.ora
$ORACLE_HOME/network/admin/listener.ora
$ORACLE_HOME/network/admin/endpoints_listener.ora
$ORACLE_HOME/network/log/*
sqlnet.log listener.log
/var/log/messages
/var/adm/messages
errpt -a
ls -ld $ORACLE_HOME
netstat -rn
ps -ef | grep -i tns
lsnrctl status listener_name
lsnrvtl services listener_name
ulimit -a
1. Complete database alert log.
2. If the database was not restarted from the time of last occurance of the
issue,
select * from v$resource_limit
3. RAM and SWAP configured on the server.
4. ulimit settings for oracle user:
ulimit -aS
ulimit -aH
5. Kernel parameter settings:
/etc/sysctl.conf
dblogin
show parameter cluster_database
show parameter listener
$srvctl config vip -n nodename
$lsnrctl status listener
agent.log and the crsd.log ..
crsd agent log and the crsd.log
$crsctl getperm resource ora.LISTENER.lsnr
sql net client trace , Client side tracing is done by adding the following syntax to the client’s sqlnet.ora file:
We will need a timestamped matching set of client/listener sqlnet traces while error is reproduced in order to find the root cause of the issue.
++ Enable client sqlnet tracing.
=======================
To do this add the following to client sqlnet.ora:
TRACE_LEVEL_CLIENT=16
TRACE_UNIQUE_CLIENT=TRUE
TRACE_DIRECTORY_CLIENT=path
TRACE_FILE_CLIENT=client
TRACE_TIMESTAMP_CLIENT=ON
replace path with a local directory for the trace files. (for example c:\\temp)
Do a test connection from the problematic client and check if the trace files are created.
Upload the traces containing the error to me on metalink.
++ Enable listener sqlnet tracing.
==========================
To do this edit the listener.ora and add,
TRACE_LEVEL_listener name=16
TRACE_TIMESTAMP_listener name=TRUE
TRACE_DIRECTORY_listener name=/tmp – this can be any directory other than a top level directory like / or c:\\
Replace listener name with the name of the listener. For example if your listener was called LISTENER then TRACE_LEVEL_LISTENER=16
You need to restrict the amount of disk space used by the tracing then you must also set,
TRACE_FILELEN_listener name=500000 – size of the files in K
TRACE_FILENO_listener name=10 – number of files
This will limit the traces to 10 files of around 500Mb, so 5000Mb in total. When the 10th file is full it will reuse file number one.
You will need to stop/start the listener for this to take effect.
When the problem reproduces please can you upload the listener trace and the listener log.
Trace_level_client=16
Trace_directory_client=path_to_the_trace_directory # use the full path to the trace directory
Trace_unique_client=on
Trace_timestamp_client=on
Diag_adr_enabled=off
trace Local listener or SCAN listeners
TRACE_LEVEL_listener_name= 16
TRACE_TIMESTAMP_listener_name=on
TRACE_DIRECTORY_listener_name=path_to_the_trace_directory
truss -o /tmp/lisener.out -fae lsnrctl start listener_name
Some Useful Note:
Note.444705.1 TroubleShooting Guide For ORA-12514 TNS listener could not resolve SERVICE_NAME given in connect descriptor
Note.761740.1 Technicians Unable To Receive Orders While MWM Components Display ODBC Errors And Are Connected
Note.119007.1 ORA-12560: Administering the Listener on UNIX – Troubleshooting
Note 276812.1 TNS-12542 Error When Executing Batch Jobs or in High Transaction Environment
Note.219208.1 Ext/Pub Client Connection via Connect Manager Fails with TNS-12564
Note.393941.1 Ext/Mod ORA-12564 Reported When Using 10g Connection Manager
Note.1116960.1 ORA-609 TNS-12537 and TNS-12547 in 11g Alert.log
Note.550859.1 Abstract TROUBLESHOOTING GUIDE TNS-12518 TNS listener could not hand off client connection.
Note.207303.1 Client / Server / Interoperability Support Between Different Oracle Versions
Note.119706.1 Troubleshooting Guide TNS-12535 or ORA-12535 or ORA-12170 Errors
For database links between different Oracle versions connections must be supported in BOTH directions in the matrix found in Note 207303.1
eg: As 9.2 - 7.3.4 is not supported then database links between these version
are not supported in either direction.
You are trying to connect two versions (client-server) that are not certified (as confirmed by Note 207303.1) and between which exist many technical incompatibilities.
CLIENT — LISTENER — SERVER RESULT
8 11.1 8 OK
9 11.1 9 OK
10 11.1 10 OK
11 11.1 11 OK
8 11.2 8 FAILS
9 11.2 9 OK
10 11.2 10 OK
11 11.2 11 OK
9 11.1 8 OK
10 11.1 8 OK
11 11.1 8 OK
9 11.2 8 FAILS
10 11.2 8 FAILS
11 11.2 8 FAILS
The relevant relationship that appears to be at issue is LISTENER and DATABASE. Client version is not a factor.
But if the ultimate outcome is that the 11.2 (11gR2) LISTENER is indicated (though I still haven’t seen documentation of this) as not compatible with use on a ORACLE 8i (8.1.7.0) DATABASE, then we’ll capture that here and move on. I would, however, like to see some evidence of this, if it is available. I can find notes in the KB about 10gR2′s listener not supporting 8i database, and I can find notes about 11gR1 having resolved that regression. But I can find nothing regarding listener/database compatibility that mentions 11gR2, that would explain our results.
Clients should be complied with Servers , For Sever 11.2 the only supported clients are 11.2.0 , 11.1.0 , 10.2.0 : 10g end MUST be at 10.2.0.2 (or higher) respectively in order to use PLSQL between those versions. See Note:4511371.8 for more details and finally 10.1.0.5 only with extended support .
On the other Side in order to connect from listener to DB server in a supported way , Listener version should be greater than or equal to the server version .
Note 207303.1 should still be followed.

本回答被提问者采纳
参考技术B Server端的设置还是有问题。。删除后重新设置。度娘里教程多多。。

网络适​​配器无法建立连接 - Oracle 11g

【中文标题】网络适​​配器无法建立连接 - Oracle 11g【英文标题】:The network adapter could not establish the connection - Oracle 11g 【发布时间】:2013-08-04 22:29:12 【问题描述】:

我编写了一个 servlet 程序,我希望它连接到我的 Oracle 数据库,但它给了我一个错误。我正在使用 Eclipse Helios、Tomcat 6.0.37、Oracle 11g (11.2.0.1.0)、ojdbc6.jar(在服​​务器项目的运行配置中添加)。我可以通过 SQL Plus 接口连接到数据库,甚至可以从 Eclipse 的数据库开发角度开始连接。但是当我试图通过我的 servlet 连接时,我得到了错误。对于我的 servlet,我使用端口号 9090,而对于数据库,我使用默认端口号 1521。

java.sql.SQLException: The Network Adapter could not establish the connection
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:412)
    at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:531)
    at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:221)
    at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:503)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at com.android.collegenotificationsystem.RegistrationServlet.doGet(RegistrationServlet.java:43)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Unknown Source)
Caused by: oracle.net.ns.NetException: The Network Adapter could not establish the connection
    at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:359)
    at oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:422)
    at oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:672)
    at oracle.net.ns.NSProtocol.connect(NSProtocol.java:237)
    at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1042)
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:301)
    ... 21 more
Caused by: java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
    at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
    at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
    at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
    at java.net.PlainSocketImpl.connect(Unknown Source)
    at java.net.SocksSocketImpl.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at oracle.net.nt.TcpNTAdapter.connect(TcpNTAdapter.java:141)
    at oracle.net.nt.ConnOption.connect(ConnOption.java:123)
    at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:337)
    ... 26 more

这是我建立连接的代码:

Class.forName("oracle.jdbc.OracleDriver"); Connection con = (Connection) DriverManager.getConnection( "jdbc:oracle:thin:@localhost:1521:orcl","username","password");

我尝试执行 lsnrctl stat 命令,结果如下:

LSNRCTL for 32-bit Windows: Version 11.2.0.1.0 - Production on 03-AUG-2013 16:08
:46

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for 32-bit Windows: Version 11.2.0.1.0 - Produ
ction
Start Date                03-AUG-2013 12:14:19
Uptime                    0 days 3 hr. 54 min. 28 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   C:\app\Owner\product\11.2.0\dbhome_1\network\admin\lis
tener.ora
Listener Log File         c:\app\owner\diag\tnslsnr\Owner-PC\listener\alert\log.
xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521)))
Services Summary...
Service "CLRExtProc" has 1 instance(s).
  Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "orcl.168.1.56" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB.168.1.56" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully

这些是我的 tnsnames.ora 文件的内容:

LISTENER_ORCL =
  (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))


ORACLR_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
    (CONNECT_DATA =
      (SID = CLRExtProc)
      (PRESENTATION = RO)
    )
  )

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl.168.1.56)
    )
  )

任何帮助将不胜感激。提前致谢。

【问题讨论】:

你能告诉我们你在eclipse中用来连接这个数据库实例的连接信息吗?连接参数的屏幕截图肯定会有所帮助 我要问一个显而易见的问题:Servlet 是否与 Oracle DB 在同一台机器上运行? 如果它是基于云的,那么检查数据库 ID。 【参考方案1】:

我有类似的问题。它通过一个简单的命令为我解决了。

lsnrctl start

导致网络适配器异常的原因是:

    数据库主机名或端口号错误 (OR) 数据库 TNSListener 尚未启动。 TNSListener 可以使用lsnrctl 实用程序启动。

尝试使用命令提示符启动监听器:

    点击开始,在搜索栏中输入cmd,当cmd出现在选项列表中时,右键点击它并选择“以管理员身份运行”。 在命令提示符窗口中,键入 lsnrctl start(不带引号),然后按 Enter。 输入 Exit 并按 Enter。

希望对你有帮助。

【讨论】:

你看到 Ash 发布的 lsnrctl status 的输出了吗? 在 macOS 上怎么样?我收到lsnrctl: command not found【参考方案2】:

首先检查您的监听器是打开还是关闭。 转到网络管理器,然后本地 -> 服务命名 -> orcl。 然后更改您的主机名并输入您的 PC 名称。 现在转到 LISTENER 并更改 HOST 并输入您的 PC 名称。

【讨论】:

我几乎搜索了整个互联网!但这解决了我的问题。 +1 顺便问一下,hostname 必须是 PC 名称吗?还是只是一个约定或什么? 主机名应该不同于 PC 名称。

以上是关于oracle 客户端 ora12560tns协议适配器错误,为啥呢?的主要内容,如果未能解决你的问题,请参考以下文章

安装oracle10的错误“ORA-12560 TNS 协议适配器错误”怎么解决

oracle 11g R2,运行SQLPlus 出现ORA-12560 TNS:协议适配器错误, 我该怎么办?

错误”ORA-12560: TNS: 协议适配器错误“解决方法

oracle10登陆时提示“ORA—12560:TNS:协议适配器错误”怎么解决?

使用完整连接字符串和EZCONNECT绕过tnsnames.ora时出现“ORA-12560:TNS:协议适配器错误”

本机不装Oracle客户端使用PL/SQL Developer连远程数据库。安完登录提示 ORA-12560,TNS:协议适配器错误