您的位置:首页 > 数据库 > SQL

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

2018-02-04 00:23 776 查看
最近在本地安装了个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:监听程序没配置或没有正确配置

监听程序配置方法如下。

开始->所有程序->Oracle-OraDb11g_home1->配置和移植工具->Net Manager



打开Net Manager的界面如下图。上边显示栏的路径可以看出,Net Manager对应的是%ORACLE_HOME%\product\11.2
adae
.0\dbhome_1\NETWORK\ADMIN目录下的参数文件,展开树形节点”本地“后,看到的”监听程序”,对应的即是系统参数文件listener.ora,用来配置一个或多个监听程序的。也就是说Net
Manager是listener.ora文件的一个图形化配置程序。



选中“监听程序”,可以点击工具栏的“+”号创建监听程序;选中某个监听程序,可以点击工具栏的“X”号删除此监听程序。下图中可以看到已经存在一个监听程序。



点击此监听程序查看其详细信息如下图。



对应listener.ora文件中的

LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐