• Oracle数据库连接之TNS-03505_无法解析服务名异常


            在进行数据库开发的时候,通常需要连接Oralce数据库,在进行连接时,经常性的会提示TNS-03505: Failed to resolve name(无法解析服务名),从而导致无法连接到数据库实例,那么通过本文对造成该问题的常见原因进行分析及如何解决。

            1.使用了不存在的服务名

            Oracle客户端配置文件tnsnames.ora中配置的数据库服务名为CREDITDB配置项中的SERVICE_NAME变量,在dos窗口输入,tnsping orcl检查服务是否可用,但在进行连接时则会提示TNS-03505,具体原因为需要连接的orcl服务在客户端配置文件中并不存在

    1. CREDITDB =
    2. (DESCRIPTION =
    3. (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    4. (CONNECT_DATA =
    5. (SERVER = DEDICATED)
    6. (SERVICE_NAME = creditdb)
    7. )
    8. )
    9. LISTENER_CREDITDB =
    10. (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    11. ORACLR_CONNECTION_DATA =
    12. (DESCRIPTION =
    13. (ADDRESS_LIST =
    14. (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    15. )
    16. (CONNECT_DATA =
    17. (SID = CLRExtProc)
    18. (PRESENTATION = RO)
    19. )
    20. )
    1. Microsoft Windows [版本 10.0.19045.3324]
    2. (c) Microsoft Corporation。保留所有权利。
    3. C:\Users\xxxxxx>tnsping orcl
    4. TNS Ping Utility for 64-bit Windows: Version 11.2.0.1.0 - Production on 10-9-2023 21:09:57
    5. Copyright (c) 1997, 2010, Oracle. All rights reserved.
    6. 已使用的参数文件:
    7. F:\app\product\11.2.0\dbhome_1\network\admin\sqlnet.ora
    8. TNS-03505: 无法解析名称

            tnsping命令:用于测试和查看数据库服务配置是否有效

            命令格式:tnsping  IP地址:端口号/数据库服务名 [count]

                                tnsping  网络服务名 [count]

            如果能够ping通,则说明客户端能解析listener的机器名,而且listener也已经启动,但是并不能说明数据库已经打开,而且tsnping的过程与真正客户端连接的过程也不一致。但是如果不能用tnsping通,则肯定连接不到数据库

        2.默认域名追加

             除第一种情况外,经检查PLSQL Developer 连接数据库与客户端配置文件中配置的服务名也一致,但还是无法连接数据库,同样提示TNS-03505的错误。

            1). 出现该场景时需检查oracle数据库sqlnet.ora网络配置文件,是否配置了NAMES.DEFAULT_DOMAIN变量是否定义了默认的域名。

            在连接数据库的时候,oracle会自动将默认的域名追加到网络服务名之后,网络服务名就会自动变为:域名:网络服务名

            解决办法:删除或注释sqlnet.ora配置文件中的NAMES.DEFAULT_DOMAIN变量

           2).如果不注释sqlnet.ora配置文件中的NAMES.DEFAULT_DOMAIN变量时,则需要将客户端配置文件tnsnames.ora中的服务追加sqlnet.ora中配置的域名,即配置方法如下:

    1. sqlnet.ora文件中的NAMES.DEFAULT_DOMAIN变量值.CREDITDB =
    2. (DESCRIPTION =
    3. (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    4. (CONNECT_DATA =
    5. (SERVER = DEDICATED)
    6. (SERVICE_NAME = creditdb)
    7. )
    8. )
    9. LISTENER_CREDITDB =
    10. (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    11. ORACLR_CONNECTION_DATA =
    12. (DESCRIPTION =
    13. (ADDRESS_LIST =
    14. (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    15. )
    16. (CONNECT_DATA =
    17. (SID = CLRExtProc)
    18. (PRESENTATION = RO)
    19. )
    20. )

            

  • 相关阅读:
    10分钟构建前后端分离后台管理系统(renren-fast、renren-vue)
    FFmpeg入门详解之17:音频深度学习
    软件测试学习笔记丨Selenium复用已打开浏览器
    24计算机考研调剂 | 重庆工商大学
    win7电脑怎么录屏?教你一键捕捉电脑屏幕
    [论文必备]最强科研绘图分析工具Origin(2)——简单使用教程
    B+树的生成过程 怎么去看懂B+树
    LeetCode 187. 重复的DNA序列
    LeetCode #83. 删除排序链表中的重复元素
    JVM 方法内联
  • 原文地址:https://blog.csdn.net/Calvex880714/article/details/132795389