在连接本机oracle数据库的时候提示:ORA-12541:TNS:没有监听程序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在连接本机oracle数据库的时候提示:ORA-12541:TNS:没有监听程序相关的知识,希望对你有一定的参考价值。

是在windows XP 系统 安装oracle数据库
网上面有一些说
该服务对应 %Oracle_Hoem\bin TNSLSNR.EXE
若该服务未启动,将会导致Oracle错误- Ora-12514:TNS:无监听程序。
但是我都不知道要怎么开启那个服务bin TNSLSNR.EXE我也没有看到

下面是 Oracle10 安装后,修改机器名的处理的部分操作.
其中包含 解决监听的问题 的处理办法。
你可以参考参考着解决。

首先需要解决监听的问题
lsnrctl status

D:\>lsnrctl status

LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 19-3月 -2011 13:3
7:31

Copyright (c) 1991, 2005, Oracle. All rights reserved.

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
TNS-12541: TNS: 无监听程序
TNS-12560: TNS: 协议适配器错误
TNS-00511: 无监听程序
32-bit Windows Error: 2: No such file or directory
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ORCL-10)(PORT=1521)))
TNS-01189: 监听程序无法验证用户

运行
「开始」菜单\程序\Oracle - OraDb10g_home1\配置和移植工具\Net Manager

修改 Oracle Net 配置
在 本地--服务命名--orcl 的地方
把 orcl 的 地址的 主机名, 由 ORCL-10 修改为 ORCL-10A

在 本地--监听程序--LISTENER 的地方
把 LISTENER 的地址2的 主机, 由 ORCL-10 修改为 ORCL-10A

上面是 例子里面, 修改机器名以后的操作
你不一定需要修改,但是你需要确认,信息对不对。
也就是 主机名字 或者 IP地址,以及端口信息什么的。

保存网络配置后退出。

启动 Oracle 的 Listener
D:\>lsnrctl start

LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 19-3月 -2011 13:4
5:16

Copyright (c) 1991, 2005, Oracle. All rights reserved.

启动tnslsnr: 请稍候...

TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production
系统参数文件为D:\oracle\product\10.2.0\db_1\network\admin\listener.ora
写入D:\oracle\product\10.2.0\db_1\network\log\listener.log的日志信息
监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1ipc)))
监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ORCL-10A)(PORT=1521)))

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
LISTENER 的 STATUS
------------------------
别名 LISTENER
版本 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Produ
ction
启动日期 19-3月 -2011 13:45:19
正常运行时间 0 天 0 小时 0 分 3 秒
跟踪级别 off
安全性 ON: Local OS Authentication
SNMP OFF
监听程序参数文件 D:\oracle\product\10.2.0\db_1\network\admin\listener.o
ra
监听程序日志文件 D:\oracle\product\10.2.0\db_1\network\log\listener.log

监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1ipc)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ORCL-10A)(PORT=1521)))
服务摘要..
服务 "PLSExtProc" 包含 1 个例程。
例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
命令执行成功

如果你执行 lsnrctl start 能够正确地执行完毕,那么这个 监听算是正常启动了。

参考资料:http://hi.baidu.com/wangzhiqing999/blog/item/0fe51c50bd37da0a3b293539.html

参考技术A 可以右击我的电脑->管理->服务里面应该有监听程序服务 参考技术B 运行->cmd
DOS 窗口输入 c : \lsnrctl start
参考技术C 使用前要设置ssid等东西。

解决Oracle数据库错误ORA-16040和ORA-00312

一、问题现象及排查过程

数据库服务器重启后,应用无法正常启动,提示无法连接数据库。看来,问题可能出在数据库服务器上,那就先检查数据库服务器:

1.登录进数据库服务器后,打开cmd命令提示符,输入命令

sqlplus / as sysdba

连入本机数据库,进入sqlplus程序上下文,然后输入命令

select instance_name,status from v$instance;

执行后,提示数据库在mounted状态,而非在open状态,自然无法正常对外提供服务了。难怪应用无法正常启动!原因在此!

2.使用命令打开数据库

alter database open;

执行后,程序报错,提示数据库错误ORA-16040和ORA-00312,在百度上搜这两个错误的解决方法,基本上都是说数据库的归档日志文件有问题,需要修复才能继续。

 

二、解决办法

既然发现了问题原因,同时也查到了解决办法,那么接下来就直接进入了解决过程。

1.sqlplus程序上下文中,先确定数据库在mounted状态下,然后使用命令

alter database clear unarchived logfile group 1;
alter database clear unarchived logfile group 2;
alter database clear unarchived logfile group 3;

清除归档日志。

2.使用命令

alter database open;

打开数据库,此时sqlplus并没有报错,看来是成功了。

3.使用命令

select instance_name,status from v$instance;

查看数据库的状态,发现数据库已经是open状态了。

4.新开一个cmd窗口,进入lsnrctl监听管理上下文,分别使用stop和start命令重启数据库监听程序。

5.最后,重新启动应用,应用未报错,能够正常启动。问题得到解决。

 

三、总结

信息系统运行过程中难免会出现各种奇奇怪怪的问题,当出现问题的时候,第一个反应应该是查看现象,然后依据现象去推测可能出现的原因。此例直接是应用报错,提示无法连接数据库,那么就循着这个线索去查找数据库的原因。

在数据库服务器上,找到是由于数据库归档日志的原因造成数据库无法正常启动,那么解决问题的关键就变成了解决归档日志错误的问题。依据数据库的报错信息,在网上查找是否已经有成熟的解决方案(方法),此次运气较好,直接找到了很多相似的解决方法,通过实践,发现确实有效,解决了问题。

 

以上是关于在连接本机oracle数据库的时候提示:ORA-12541:TNS:没有监听程序的主要内容,如果未能解决你的问题,请参考以下文章

Oracle配置网络服务

IIS无法访问oracle数据库

Java做数据库连接池的时候加载oracle的JDBC驱动时总是提示找不到驱动类

远程连接windows出现身份验证错误,提示"由于CredSSP加密Oracle修正"解决方案

ORACLE OB10在win7中安装后登陆提示用户名或密码错误,但是在PLSQL中能登陆,请问这个是啥原因怎么解决

如何查看本机的oracle数据库的IP地址 和 数据库名