在cmd里面tnsping不通的解决

本文解决了通过tnsping无法连接虚拟机内数据库的问题,发现是由于Linux防火墙导致,并通过关闭防火墙成功实现连接。

在cmd里面tnsping虚拟机里面的数据库,老是pingbutong,终于找到问题了,是防火墙的问题,关闭linux的防火墙,就ping的通了。

---------------------------------------------------------------------------

未关闭防火墙时:

C:\Users\Administrator>tnsping dv11

TNS Ping Utility for 32-bit Windows: Version 11.2.0.1.0 - Production on 18-6月 -
2012 00:23:19

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

已使用的参数文件:
C:\app\Administrator\product\11.2.0\client_1\network\admin\sqlnet.ora


已使用 TNSNAMES 适配器来解析别名
尝试连接 (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.105)(PORT =
 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = dv11)))
TNS-12535: TNS: 操作超时

--------------------------------------------------------------------------------

用service iptables stop命令临时关闭防火墙后:

C:\Users\Administrator>tnsping dv11

TNS Ping Utility for 32-bit Windows: Version 11.2.0.1.0 - Production on 18-6月 -
2012 00:37:47

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

已使用的参数文件:
C:\app\Administrator\product\11.2.0\client_1\network\admin\sqlnet.ora


已使用 TNSNAMES 适配器来解析别名
尝试连接 (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.105)(PORT =
 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = dv11)))
OK (30 毫秒)

 

C:\Users\Administrator>tnsping 192.168.2.105

TNS Ping Utility for 32-bit Windows: Version 11.2.0.1.0 - Production on 18-6月 -
2012 00:48:23

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

已使用的参数文件:
C:\app\Administrator\product\11.2.0\client_1\network\admin\sqlnet.ora

已使用 EZCONNECT 适配器来解析别名
尝试连接 (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=))(ADDRESS=(PROTOCOL=TCP)(HOST
=192.168.2.105)(PORT=1521)))
OK (10 毫秒)

-------------------------------------------------------------------------------------------------------------

而且EM也能在主机浏览器打开了,在internet选项里设置一下语言就能用英语显示了。

 

但是Toad工具仍然连不上虚拟机中的数据库!!!
`tnsping ORCL` 是一个 Oracle 网络工具命令,用于测试客户端与 Oracle 数据库实例之间的 **TNS(Transparent Network Substrate)连接连通性**。你可以在以下几种环境中运行它: --- ## ✅ 一、在哪里可以运行 `tnsping ORCL` ### 1. **Oracle 客户端或数据库服务器上** 只要安装了 Oracle Client 或 Oracle Database 软件(包含网络组件),就可以使用 `tnsping`。 #### 常见位置: - Oracle Database 服务器主机 - 安装了 Oracle Instant Client 的应用服务器 - 开发电脑上安装了 Oracle Developer Tools(如 SQL*Plus、SQL Developer + Instant Client) > 💡 `tnsping` 不是 SQL 命令,也不是 PL/SQL 工具,而是操作系统命令行工具(CLI)。 --- ### 2. **运行平台:支持的操作系统** | 操作系统 | 支持情况 | |--------|---------| | Windows | ✅ 支持(命令提示符 CMD 或 PowerShell) | | Linux / Unix | ✅ 支持(bash 终端) | | macOS | ✅ 支持(需安装 Oracle Instant Client) | --- ## 🖥️ 二、如何运行 `tnsping ORCL` ### ✅ 在 Windows 上运行 打开 **命令提示符(CMD)** 或 **PowerShell**,输入: ```cmd tnsping ORCL ``` 📌 示例输出: ``` TNS Ping Utility for 64-bit Windows: Version 19.0.0.0.0 - Production on 05-APR-2025 10:30:45 Copyright (c) 1997, 2023, Oracle. All rights reserved. Used parameter files: C:\oracle\product\19.0.0\dbhome_1\network\admin\sqlnet.ora Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl))) OK (20 msec) ``` 表示成功解析并能连接到 `ORCL` 服务。 --- ### ✅ 在 Linux 上运行 打开终端,执行: ```bash tnsping ORCL ``` 如果提示 `command not found`,说明: - Oracle 环境未安装 - 或 `ORACLE_HOME/bin` 未加入 `PATH` 🔧 解决方法: ```bash # 假设 Oracle Home 是 /u01/app/oracle/product/19.0.0/dbhome_1 export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1 export PATH=$ORACLE_HOME/bin:$PATH tnsping ORCL ``` --- ## 🔍 三、“ORCL” 是什么? `ORCL` 是一个 **TNS 别名(Alias)**,通常在 `$ORACLE_HOME/network/admin/tnsnames.ora` 文件中定义。 📄 示例 `tnsnames.ora` 内容: ```ini ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) ) ``` 👉 `tnsping ORCL` 实际上就是读取这个文件中的配置,尝试连接对应的地址和端口。 --- ## 🧪 四、tnsping 能检测什么?不能检测什么? | 功能 | 是否支持 | 说明 | |------|----------|------| | ✅ 检查 `tnsnames.ora` 是否存在且可读 | ✔️ | 配置文件路径必须正确 | | ✅ 解析别名(如 ORCL)是否正确定义 | ✔️ | 格式错误会报错 | | ✅ 测试能否建立 TCP 连接到监听端口 | ✔️ | 如 1521 端口是否开放 | | ❌ 检查用户名密码是否正确 | ❌ | tnsping 不涉及认证 | | ❌ 检查数据库实例是否已启动 | ❌ | 即使 DB 关闭,只要监听开着就可能通 | | ❌ 检查 SERVICE_NAME 是否真实注册 | ❌ | 只检查网络可达性 | > 🔔 所以:`tnsping 成功 ≠ 可以用 sqlplus 登录!` --- ## 🛠️ 五、常见问题排查 | 问题 | 原因 | 解决方案 | |------|------|-----------| | `TNS-03505: Failed to resolve name` | `tnsnames.ora` 中没有 `ORCL` 条目 | 检查文件是否存在、拼写是否正确 | | `TNS-12541: TNS:no listener` | 目标主机的 1521 端口无监听 | 启动监听器:`lsnrctl start` | | `command not found: tnsping` | 未安装 Oracle 客户端或环境变量未设置 | 安装 Oracle Instant Client 并配置 PATH | --- ## ✅ 总结:在哪运行 `tnsping ORCL`? | 项目 | 说明 | |------|------| | ✅ 运行地点 | 安装了 Oracle 客户端或数据库的机器 | | ✅ 运行方式 | 在操作系统命令行中运行 | | ✅ 依赖文件 | `$ORACLE_HOME/network/admin/tnsnames.ora` | | ✅ 用途 | 测试 Oracle 网络连接配置是否正确 | | ✅ 成功含义 | TNS 别名可解析,目标监听器可达 | ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值