当前位置:   article > 正文

Oracle数据库连接之TNS-12541_无监听器

tns-12541

        在进行数据库开发的时候,通常需要使用PLSQL Developer开发工具连接Oralce数据库,在进行连接时,经常性的会提示TNS-12541:TNS:no listener(没有监听),从而导致PLSQL Developer 无法连接到数据库实例,那么通过本文对造成该问题的常见原因进行分析及如何解决。

        一、监听程序未启动

                1.诊断问题:在服务器端,执行lsnrctl status 命令,检查监听是否已启动

  1. .......>lsnrctl status
  2. LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 09-9-2023 20:43:48
  3. Copyright (c) 1991, 2010, Oracle. All rights reserved.
  4. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=服务器主机地址)(PORT=1521)))
  5. TNS-12541:TNS:no listenner
  6. TNS-12560:TNS:protocol adapter error
  7. TNS-00511:no listenner
  8. ........

                若执行上述命令后,出现  TNS-12541:TNS:no listenner、TNS-12560:TNS:protocol adapter error  、 TNS-00511:no listenner则表示监听未启动

                2.启动监听:在服务器端,执行lsnrctl start命令回车,等待完成监听的启动

  1. .........>lsnrctl start
  2. ........
  3. ........
  4. The command completed successfully

                若执行上述命令后,出现 执行结果中出现 The command completed successfully信息时,表示监听启动完成

       二、客户端监听端口号与服务端监听端口号不一致

            当在服务端执行lsnrctl status命令,执行结果为监听是正常启动的,但数据库实例还是无法连接,这时则需要检查客户端配置文件和监听器服务器端配置文件中配置的监听端口是否一致。

           listener.ora:该文件为服务端监听配置文件

           tnsnames.ora:该文件为客户端配置文件

           上述两个文件默认存储在%ORACLE_HOME%/NETWORK\ADMIN目录下

 listener.ora文件内容如下

  1. SID_LIST_LISTENER =
  2. (SID_LIST =
  3. (SID_DESC =
  4. (SID_NAME = CLRExtProc)
  5. (ORACLE_HOME = F:\app\product\11.2.0\dbhome_1)
  6. (PROGRAM = extproc)
  7. (ENVS = "EXTPROC_DLLS=ONLY:F:\app\product\11.2.0\dbhome_1\bin\oraclr11.dll")
  8. )
  9. )
  10. LISTENER =
  11. (DESCRIPTION_LIST =
  12. (DESCRIPTION =
  13. (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
  14. (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
  15. )
  16. )
  17. ADR_BASE_LISTENER = 数据库服务器按照根目录

 tnsnames.ora文件如下

  1. 数据库实例名 =
  2. (DESCRIPTION =
  3. (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
  4. (CONNECT_DATA =
  5. (SERVER = DEDICATED)
  6. (SERVICE_NAME = 数据库实例)
  7. )
  8. )
  9. LISTENER_数据库实例名 =
  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. )

   此时需要检查listener.ora配置文件中LISTENER =.... 和tnsnames.ora文件中LISTENER_数据库实例名 =.....配置的端口号,若不一致则手动改为一致,然后停用监听、停用数据库服务再重启,若不重启可能更改的配置不生效

        三、通常在数据库连接时提示没有监听,处理上述原因外,可能还存在以下原因,在具体遇到时,需要根据实际情况进行实际分析并解决

        1.客户端指定的数据库服务器目标主机IP地址有误

        2.客户端指定的数据库实例名存在有误

        3.客户端指定的端口有误

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/531707
推荐阅读
相关标签
  

闽ICP备14008679号