使用PL/SQL Developer 连接Oracle时报错ORA-12541: TNS: 无监听程序
最近在本地安装了个Oracle11g,在用PL/SQL Developer 连接时Oracle数据库时报错:ORA-12541: TNS: 无监听程序。如下图。
原因1:监听程序没启动
解决方法1:
然后会在网上搜到解决办法:启动服务OracleOraDb1g_home1TNSListener。
具体做法:开始->控制面板->管理工具->服务,找到OracleOraDb1g_home1TNSListener后,点击左侧“启动”,或在该服务上右键,点击“启动”,看到该服务对应“状态”一列显示“已启动”即将其启动完毕。再去PL/SQL Developer登录,连接成功!
如下图,因为我电脑上的OracleOraDb1g_home1TNSListener服务是手动的,每次启电脑时后,要手动将其启动,如果不想每次手动启动该服务,也可以将其“启动类型“改为”自动“,但这样做的弊端是会增加启动电脑时的耗时。
解决方法2:
其实这个问题也可以使用命令方式解决:
win+R键,在打开的输入框中输入”cmd“(即命令行程序/commander),即可打开Windows系统的命令行程序。我们可用lsnrctl status命令查看监听器的状态。如果与下图中显示的报错相同的话,就是监听器处于停止状态。
那么就可以用lsnrctl start命令启动监听器了。在下图中的启动信息中,我们可以看到监听程序的参数信息文件,也就是启动监听程序(在服务启动或用lsnrctl start命令)时要读取的相关配置信息,包括ip和端口号等。
执行到这,可以去方法1中的服务去看下,OracleOraDb1g_home1TNSListener已经是”已启动“状态了。
打开任务管理器,可以看到其进程正在运行。如下图。
解决方法3:
我们还可以到oracle安装目录%ORACLE_HOME%\product\11.2.0\dbhome_1\BIN下找到监听程序TNSLSNR.EXE,如下图。
双击运行它(如下图),在打开的LSNRCTL命令行界面输入status来查看监听状态,输入 start来启动监听,输入
stop 来关闭监听。
总结:
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:监听程序没配置或没有正确配置
监听程序配置方法如下。
对应listener.ora文件中的
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
)
下一篇: mongodb的复制集