本机连接局域网它机的oracle数据库,“出现ORA-12170:TNS:连接超时”错误

今天用笔记本电脑的PLSQL Developer连接局域网内另一台台式机的Oracle,登录的过程比较慢,随后就报告了

出现ORA-12170:TNS:连接超时

这样的错误,百度蛮久才找到解决方法。

据说是window防火墙没有允许oracle跟外部通信,所以需要在window防火墙添加例外程序或者例外端口。

我的局域网内的另一台电脑(装有Oracle),安装的是win7系统。通过以下设置,便能解决问题了。

点击“开始”->“控制面板”->“Windows 防火墙”->“高级设置”

在“入站规则”上方点击右键,选择“新建规则”->选择"端口,点击下一步->选择"特定本地端口",并输入1521端口,点击下一步->

选择“允许连接”,点击下一步->这里让其默认都选中便可,点击下一步->输入规则名称,为了见名知意,这里我输入的是oralce_in_port,点击完成,

这样便完成了入站规则。







### 解决Navicat连接Oracle数据库时出现ORA-12514错误的问题 ORA-12514错误表示客户端尝试连接到的数据库服务在监听器中未被识别。这通常是因为监听器配置文件(`listener.ora`)或网络配置文件(`tnsnames.ora`)中的设置不正确,或者数据库实例尚未向监听器注册。 以下是解决此问题的具体方法: #### 1. 检查监听器配置 确保监听器配置文件 `listener.ora` 中包含了正确的服务名称和服务端口信息。例如: ```plaintext LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) ) ) ``` 如果监听器配置正确,但仍然报错,则需要检查监听器是否已启动。可以通过以下命令检查监听器状态: ```bash lsnrctl status ``` 如果监听器未启动,可以使用以下命令启动它: ```bash lsnrctl start ``` #### 2. 检查数据库服务名 确认数据库的服务名是否正确。可以通过查询数据库动态性能视图 `v$parameter` 来获取服务名: ```sql SELECT value FROM v$parameter WHERE name = 'service_names'; ``` 将查询结果中的服务名用于Navicat的连接配置中[^1]。 #### 3. 验证TNS配置 确保 `tnsnames.ora` 文件中包含正确的连接描述符。以下是一个典型的配置示例: ```plaintext ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 你的数据库IP)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = 你的服务名) ) ) ``` 在Navicat中,使用上述配置中的服务名作为连接参数[^2]。 #### 4. 使用正确的SID或Service Name 如果数据库使用的是SID而不是Service Name,请在Navicat的连接配置中选择“SID”选项,并提供正确的SID值。可以通过以下SQL查询获取SID: ```sql SELECT instance_name FROM v$instance; ``` #### 5. 检查数据库实例是否已注册到监听器 有时,数据库实例可能未自动注册到监听器。可以通过以下命令手动注册: ```bash alter system register; ``` 执行后,再次检查监听器状态以确认服务是否已注册: ```bash lsnrctl services ``` #### 6. 确保防火墙未阻止连接 如果数据库服务器启用了防火墙,请确保允许监听器使用的端口(默认为1521)通过防火墙规则[^3]。 #### 7. 测试连接 在完成上述步骤后,可以使用以下命令测试连接是否成功: ```bash sqlplus username/password@ORCL ``` 其中,`ORCL` 是 `tnsnames.ora` 文件中定义的别名。 --- ### 示例代码 以下是一个完整的Navicat连接字符串示例: ```plaintext (DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=你的数据库IP)(PORT=1521)) (CONNECT_DATA=(SERVICE_NAME=你的服务名)) ) ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值