ORA-12543 连接数据库失败

本文记录了一次解决数据库连接问题的经历,主要针对ORA-12560和ORA-12543错误。通过对不同版本SQL*Plus的测试及网络配置排查,最终定位问题为服务器防火墙导致1521端口被阻断,并给出了具体的解决步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

连接数据库出现ORA-12560和ORA-12543错误

http://yangtingkun.itpub.net/post/468/513807

一个服务器上的数据库无法连接,尝试时报错ORA-12560ORA-12543错误。


tnsnames.ora中配置了连接后,测试连接出现ORA-12543错误。尝试使用tnsping来测试连接同样出现ORA-12543错误,后尝试简易连接方式错误依旧。

[oracle@Oracle112 trace]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.2.0 Production on Fri Feb 18 16:18:27 2011

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

SQL> conn system/password@192.168.90.111/mobiledb
ERROR:
ORA-12543: TNS:destination host unreachable

尝试在其他服务器上连接到111上的数据库:

[oracle@localhost admin]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.3.0 - Production on Fri Feb 18 16:19:35 2011

Copyright (c) 1982, 2006, Oracle. All Rights Reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL> conn system/password@192.168.90.111/mobiledb
ERROR:
ORA-12560: TNS:protocol adapter error

同样出现错误,不同的是,错误信息发生了变化。两次的错误信息不同主要因为测试时sqlplus的版本不同,对于11.2sqlplus报错为ORA-12543,而10.2sqlplus报错为ORA-12560。对比错误信息的差别,应该说11.2的错误信息更有价值一些。

通过操作系统命令pingsftp都可以正常访问111,利用telnet测试1111521端口,发现连接报错,看来是111上关闭了1521端口。检查防火墙设置,果然在111上开启了防火墙,将其关闭后,错误消失。

### 解决Navicat连接Oracle数据库时出现ORA-12514错误的问题 ORA-12514错误通常表示客户端请求的服务名与监听器中注册的服务名不匹配。这可能是由于TNS名称配置有误、服务名拼写错误或者目标数据库实例未正确启动等原因造成的。以下是详细的分析和解决方案: #### 1. 验证监听器状态和服务名 确保Oracle数据库的监听器已正常启动,并且能够识别所需的服务名。可以通过执行以下命令来检查监听器的状态以及其上注册的服务列表[^1]。 ```bash lsnrctl status ``` 在返回的结果中查找是否有对应的SID或SERVICE_NAME被列出。如果没有找到,则需要调整tnsnames.ora文件中的定义或是重新配置监听器以包含正确的服务信息。 #### 2. 修改 tnsnames.ora 文件 检查并修正`$ORACLE_HOME/network/admin/tnsnames.ora`文件的内容,使其准确反映实际的目标数据库参数。下面是一个标准条目的例子: ```plaintext MYDB = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = your_host_name_or_ip)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = my_service_name) ) ) ``` 其中 `your_host_name_or_ip`, `my_service_name` 应替换为具体的主机地址和服务名字串[^2]。 #### 3. 正确设置 Navicat 的连接属性 进入Navicat界面完成如下操作: - 创建新的连接项; - 在高级选项里指定完整的 TNS 名称字符串而非仅仅依赖于简单的 IP 和端口组合形式; - 如果适用的话,还可以勾选“使用操作系统身份验证”减少密码输入麻烦的同时也规避潜在的身份校验失败风险。 另外值得注意的是,有时候即使所有的网络层面上都看起来没问题,但如果源端(这里是Navicat)所采用的OCI库版本过低也可能引发此类异常状况。所以必要时候可以考虑更换更接近目标数据库版本号的Oracle Instant Client组件集合[^2]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值