ORA-12154: TNS:无法解析指定的连接标志符和ERROR - ORA-12541: TNS:no listener 请问如何解决?

princesshan 2009-06-18 01:06:06
我在XP上装完数据库,当时可以用SQL PLUS登陆
但是重新启动机器后,就不能用SQL PLUS登陆了,提示
ORA-12154: TNS:无法解析指定的连接标志符
数据库应该是启动的,在任务里面能看到.

今天启动用SYSTEM用户用SQL PLUS登陆时,又报 ERROR - ORA-12541: TNS:no listener
tnsnames.ora文件内容如下

# tnsnames.ora Network Configuration File: D:\oracleDB\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.

ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = liz)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)

EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
)
(CONNECT_DATA =
(SID = ORCL)
(PRESENTATION = RO)
)
)


listener.ora文件的内容如下
# listener.ora Network Configuration File: D:\oracleDB\network\admin\listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = orcl)
(ORACLE_HOME = D:\oracleDB)
(PROGRAM = extproc)
)
)

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = liz)(PORT = 1521))
)
)
)


sqlnet.ora文件内容如下
# sqlnet.ora Network Configuration File: D:\oracleDB\network\admin\sqlnet.ora
# Generated by Oracle configuration tools.

SQLNET.AUTHENTICATION_SERVICES= (NTS)

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)


我用lsnrctl start 显示下面的信息


C:\Documents and Settings\user>lsnrctl start

LSNRCTL for 32-bit Windows: Version 10.1.0.2.0 - Production on 18-6月 -2009 12:0
1:28

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

Starting tnslsnr: please wait...

Service OracleOraDb10g_home1TNSListener already running.
TNS-12560: TNS:protocol adapter error
TNS-00530: Protocol adapter error
32-bit Windows Error: 1056: Unknown error



请高手帮忙看看是什么地方出错了,详细指点一下具体怎么修改。
...全文
1506 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
inthirties 2009-06-19
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 lwh_1024 的回复:]
listener好像是正常的啊。

telnet本机的1521端口是否通?
在net manager中重新建立ORCL的服务也不行吗?
[/Quote]

listener是正常的,

那就是tns这块的问题了,分别在服务器和客户端都tnsping tnsname一把,看有么有什么状况发生
inthirties 2009-06-19
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 inthirties 的回复:]
引用楼主 princesshan 的帖子:

LSNRCTL for 32-bit Windows: Version 10.1.0.2.0 - Production on 18-6月 -2009 12:0
1:28

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

Starting tnslsnr: please wait...

Service OracleOraDb10g_home1TNSListener already running.
TNS-12560: TNS:protocol adapter error
TNS-00530: Protocol adapter error
  32-bit Windows Error: 1056: Unknown error


listene…
[/Quote]

根据你这里的提示,listener此时已经启动了,你可以用lsnrctl status查查listener的状况和实例注册的状况先。
lwh_1024 2009-06-19
  • 打赏
  • 举报
回复
listener好像是正常的啊。

telnet本机的1521端口是否通?
在net manager中重新建立ORCL的服务也不行吗?
princesshan 2009-06-19
  • 打赏
  • 举报
回复

用lsnrctl status查看结果如下,但是我看了结果,也解决不了问题啊? 哪位高人能指一个解决问题的办法.

Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.

C:\Documents and Settings\user>lsnrctl status

LSNRCTL for 32-bit Windows: Version 10.1.0.2.0 - Production on 19-6月 -2009 13:5
3:48

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for 32-bit Windows: Version 10.1.0.2.0 - Produ
ction
Start Date 19-6月 -2009 12:57:19
Uptime 0 days 0 hr. 56 min. 29 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File D:\oracleDB\network\admin\listener.ora
Listener Log File D:\oracleDB\network\log\listener.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROCipc)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=lizhen)(PORT=8080))(Presentation=HTT
P)(Session=RAW))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=lizhen)(PORT=2100))(Presentation=FTP
)(Session=RAW))
Services Summary...
Service "orcl" has 2 instance(s).
Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...
Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully

C:\Documents and Settings\user>

ZZQ74324 2009-06-18
  • 打赏
  • 举报
回复
还是先检查一下监听是否正常启动了?
另外,在本机登录时数据库时,如果带连接字符串,就要经过监听进行连接,否则,是直连.
inthirties 2009-06-18
  • 打赏
  • 举报
回复
[Quote=引用楼主 princesshan 的帖子:]
LSNRCTL for 32-bit Windows: Version 10.1.0.2.0 - Production on 18-6月 -2009 12:0
1:28

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

Starting tnslsnr: please wait...

Service OracleOraDb10g_home1TNSListener already running.
TNS-12560: TNS:protocol adapter error
TNS-00530: Protocol adapter error
32-bit Windows Error: 1056: Unknown error
[/Quote]

listener已经启动了

你可以用lsnrctl status查看一下。
lwh_1024 2009-06-18
  • 打赏
  • 举报
回复
在net manager中的服务命名里面,找到ORCL ,删掉,然后重新新建一个ORCL 试试看
lwh_1024 2009-06-18
  • 打赏
  • 举报
回复
但是我发现用SQLPLUS登陆的时候,用户名/密码都输入,把主机字符串输入成orcl就报上面的错误,但是
如果我只输入用户名/密码,主机字符串不输入, 这个时候就可以,请问这种情况正常吗?

正常的啊,主机字符串是用来远程登录的。如果是登陆本地的库,完全可以不用主机字符串,直接用sqlplus username/passwd就可以了
princesshan 2009-06-18
  • 打赏
  • 举报
回复
以前好象遇到过类似的问题,看到网上说通过静态注册的办法解决,
但是不知道具体怎么操作,请哪为能指点一下到底是如何实现静态注册的.
princesshan 2009-06-18
  • 打赏
  • 举报
回复
请问如何建立在服务器上重新建监听?
如何在 客户端上新建tnsname ?


我是本机装的数据库,本机访问,重新启动后,报的错误如我上面的描述.

把liz修改成127.0.0.1也不行

但是我发现用SQLPLUS登陆的时候,用户名/密码都输入,把主机字符串输入成orcl就报上面的错误,但是
如果我只输入用户名/密码,主机字符串不输入, 这个时候就可以,请问这种情况正常吗?

还有没有高手能指点一下?谢谢
ojuju10 2009-06-18
  • 打赏
  • 举报
回复
服务器上重新建监听

客户端上新建tnsname
bzcnc 2009-06-18
  • 打赏
  • 举报
回复
1 首先检查数据库是否运行:通过服务界面查看,或者通过net start | findstr OracleService进行查看
2 通过sqlplus / as sysdba看能否登录成功,如果成功说明应该是tnsnames.ora文件配置有问题
3 检查tnsnames.ora中的HOST,PORT,SERVICE_NAME检查核实一下
4 启动监听程序,然后使用sqlplus user/password@localservicename登录尝试
lwh_1024 2009-06-18
  • 打赏
  • 举报
回复
建议LZ把HOST = liz换成IP地址127.0.0.1后再试试
lwh_1024 2009-06-18
  • 打赏
  • 举报
回复
重启机器后,监听是否启了?
fuyou001 2009-06-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fuyou001 的回复:]
(ADDRESS = (PROTOCOL = TCP)

//应该是TCP吧
[/Quote]
错了,不是这个,没看仔细,抱歉

http://space.itpub.net/7199859/viewspace-374281
你看看这个
fuyou001 2009-06-18
  • 打赏
  • 举报
回复
(ADDRESS = (PROTOCOL = TCP)

//应该是TCP吧

3,498

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧