普通网友 2025-12-07 10:07 采纳率: 0%
浏览 2

报错:TNS-03505: 无法解析名称

报错:TNS-03505: 无法解析名称

  C:\Users\administrator>tnsping connect_identifier_remote_orcl

TNS Ping Utility for 64-bit Windows: Version 11.2.0.1.0 - Production on 18-3-2023 14:15:28

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

已使用的参数文件:

TNS-03505: 无法解析名称

C:\Users\administrator>


  • 写回答

3条回答 默认 最新

  • 檀越@新空间 2025-12-07 11:04
    关注

    上午好☀️☀️☀️️
    本答案参考通义千问

    报错 TNS-03505: 无法解析名称 是 Oracle 客户端在尝试解析 TNS 连接标识符(connect_identifier)时遇到的问题。这意味着 Oracle 无法找到与该连接标识符对应的网络服务名(如 connect_identifier_remote_orcl)。


    🚨 原因分析

    1. TNSNAME.ORA 文件未配置或路径不正确

      • Oracle 客户端会从 TNSNAMES.ORA 文件中查找连接信息。
      • 如果该文件不存在、路径错误,或者没有定义 connect_identifier_remote_orcl 的条目,就会出现此错误。
    2. 环境变量设置错误

      • TNS_ADMIN 环境变量可能指向了错误的目录,导致客户端找不到正确的 TNSNAMES.ORA 文件。
    3. 连接标识符拼写错误

      • 检查是否拼写错误,例如 connect_identifier_remote_orcl 是否与 TNSNAMES.ORA 中的定义完全一致。

    ✅ 解决方案

    1. 检查 TNSNAMES.ORA 文件是否存在

    • 打开命令提示符,执行以下命令查看当前使用的 TNSNAMES.ORA 路径:
    tnsping connect_identifier_remote_orcl
    
    • 如果提示 TNS-03505: 无法解析名称,则说明 Oracle 无法找到该文件。

    • 建议操作:

      • C:\oracle\product\11.2.0\client_1\network\admin 目录下检查是否有 tnsnames.ora 文件。
      • 如果没有,可以创建一个,并添加如下内容(根据你的数据库配置):
    connect_identifier_remote_orcl =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = your_host_ip)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = orcl)
        )
      )
    

    注意: 请将 your_host_ip 替换为实际的数据库服务器 IP 地址,orcl 替换为实际的服务名。


    2. 设置 TNS_ADMIN 环境变量

    • 如果你使用的是自定义的 TNSNAMES.ORA 文件,确保设置了 TNS_ADMIN 环境变量指向其所在目录。

    • 步骤:

      1. 右键点击“此电脑” -> “属性” -> “高级系统设置” -> “环境变量”。
      2. 在“系统变量”中,添加:
        • 变量名:TNS_ADMIN
        • 变量值:C:\path\to\your\tnsnames.ora\directory
      3. 重启命令提示符后再次运行 tnsping connect_identifier_remote_orcl

    3. 验证连接标识符是否正确

    • 打开 tnsnames.ora 文件,确认其中的连接标识符名称与你使用的完全一致。

    • 示例:

    remote_orcl =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = orcl)
        )
      )
    
    • 如果你使用的是 connect_identifier_remote_orcl,请确保它在文件中也存在。

    4. 使用 SQL*Plus 测试连接

    • 安装完 tnsnames.ora 后,可以尝试用 SQL*Plus 连接数据库:
    sqlplus username/password@connect_identifier_remote_orcl
    
    • 如果成功连接,说明配置正确;如果失败,请检查用户名、密码和连接标识符。

    🔧 修改后的 tnsnames.ora 示例(供参考)

    remote_orcl =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = orcl)
        )
      )
    
    connect_identifier_remote_orcl =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = orcl)
        )
      )
    

    🛠️ 总结

    | 步骤 | 内容 | |------|------| | 1 | 检查 tnsnames.ora 文件是否存在并正确配置 | | 2 | 设置 TNS_ADMIN 环境变量指向正确的目录 | | 3 | 确保连接标识符名称与 tnsnames.ora 中的一致 | | 4 | 使用 SQL*Plus 测试连接 |


    如果你能提供 tnsnames.ora 文件内容或更详细的错误信息,我可以进一步帮助你排查问题。

    评论

报告相同问题?

问题事件

  • 创建了问题 12月7日