欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用PL/SQL Developer 连接Oracle时报错ORA-12541: TNS: 无监听程序

程序员文章站 2024-01-22 22:26:46
...

最近在本地安装了个Oracle11g,在用PL/SQL Developer 连接时Oracle数据库时报错:ORA-12541: TNS: 无监听程序。如下图。

使用PL/SQL Developer 连接Oracle时报错ORA-12541: TNS: 无监听程序

原因1:监听程序没启动

解决方法1:

然后会在网上搜到解决办法:启动服务OracleOraDb1g_home1TNSListener。

具体做法:开始->控制面板->管理工具->服务,找到OracleOraDb1g_home1TNSListener后,点击左侧“启动”,或在该服务上右键,点击“启动”,看到该服务对应“状态”一列显示“已启动”即将其启动完毕。再去PL/SQL Developer登录,连接成功!

使用PL/SQL Developer 连接Oracle时报错ORA-12541: TNS: 无监听程序

如下图,因为我电脑上的OracleOraDb1g_home1TNSListener服务是手动的,每次启电脑时后,要手动将其启动,如果不想每次手动启动该服务,也可以将其“启动类型“改为”自动“,但这样做的弊端是会增加启动电脑时的耗时。

使用PL/SQL Developer 连接Oracle时报错ORA-12541: TNS: 无监听程序解决方法2:

其实这个问题也可以使用命令方式解决:

win+R键,在打开的输入框中输入”cmd“(即命令行程序/commander),即可打开Windows系统的命令行程序。我们可用lsnrctl status命令查看监听器的状态。如果与下图中显示的报错相同的话,就是监听器处于停止状态。

那么就可以用lsnrctl start命令启动监听器了。在下图中的启动信息中,我们可以看到监听程序的参数信息文件,也就是启动监听程序(在服务启动或用lsnrctl start命令时要读取的相关配置信息,包括ip和端口号等。


使用PL/SQL Developer 连接Oracle时报错ORA-12541: TNS: 无监听程序

执行到这,可以去方法1中的服务去看下,OracleOraDb1g_home1TNSListener已经是”已启动“状态了。使用PL/SQL Developer 连接Oracle时报错ORA-12541: TNS: 无监听程序

打开任务管理器,可以看到其进程正在运行。如下图。

使用PL/SQL Developer 连接Oracle时报错ORA-12541: TNS: 无监听程序

解决方法3:

我们还可以到oracle安装目录%ORACLE_HOME%\product\11.2.0\dbhome_1\BIN下找到监听程序TNSLSNR.EXE,如下图。

使用PL/SQL Developer 连接Oracle时报错ORA-12541: TNS: 无监听程序

双击运行它(如下图),在打开的LSNRCTL命令行界面输入status来查看监听状态,输入  start来启动监听,输入 stop 来关闭监听。

使用PL/SQL Developer 连接Oracle时报错ORA-12541: TNS: 无监听程序

总结:

OracleOraDb1g_home1TNSListener是监听器服务,服务进程为TNSLSNR.EXE,监听程序TNSLSNR.EXE(在%ORACLE_HOME%\product\11.2.0\dbhome_1\BIN目录下, status 查看监听状态, start 启动监听, stop 关闭监听),系统参数文件listener.ora(在%ORACLE_HOME%\product\11.2.0\dbhome_1\NETWORK\ADMIN目录下),命令LSNRCTL(lsnrctl status 查看监听状态,lsnrctl start 启动监听,lsnrctl stop 关闭监听),控制台LSNRCTL.EXE。

原因2:监听程序没配置或没有正确配置

监听程序配置方法如下。

开始->所有程序->Oracle-OraDb11g_home1->配置和移植工具->Net Manager
使用PL/SQL Developer 连接Oracle时报错ORA-12541: TNS: 无监听程序
打开Net Manager的界面如下图。上边显示栏的路径可以看出,Net Manager对应的是%ORACLE_HOME%\product\11.2.0\dbhome_1\NETWORK\ADMIN目录下的参数文件,展开树形节点”本地“后,看到的”监听程序”,对应的即是系统参数文件listener.ora,用来配置一个或多个监听程序的。也就是说Net Manager是listener.ora文件的一个图形化配置程序。
使用PL/SQL Developer 连接Oracle时报错ORA-12541: TNS: 无监听程序
选中“监听程序”,可以点击工具栏的“+”号创建监听程序;选中某个监听程序,可以点击工具栏的“X”号删除此监听程序。下图中可以看到已经存在一个监听程序。
使用PL/SQL Developer 连接Oracle时报错ORA-12541: TNS: 无监听程序
点击此监听程序查看其详细信息如下图。
使用PL/SQL Developer 连接Oracle时报错ORA-12541: TNS: 无监听程序

对应listener.ora文件中的

LISTENER =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
  )