解决因改变oracle数据库的IP地址引起的“ORA-12541:TNS:无监听程序”

解决因改变oracle数据库的IP地址引起的“ORA-12541:TNS:无监听程序”
转载https://blog.csdn.net/amanda04/article/details/4378927/

环境:OraDB10g_home

问题:1.在用PL/SQL Developer连接数据库时出现“ORA-12541:TNS:无监听程序”错误。
2.使用Net Manager 更改本地数据库服务IP地址后抛出“ORA-12541:TNS:无监听程序”错误。

步骤:

1、检查listener.log日志, 发现下面错误:
TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production on 20-9月 -2008 10:25:26

Copyright © 1991, 2005, Oracle. All rights reserved.

系统参数文件为D:/oracle/product/10.2.0/db_1/network/admin/listener.ora
写入D:/oracle/product/10.2.0/db_1/network/log/listener.log的日志信息
写入D:/oracle/product/10.2.0/db_1/network/trace/listener.trc的跟踪信息
跟踪级别当前为0

以 pid=1704 开始
监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=//./pipe/EXTPROC1ipc)))
监听该对象时出错: (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=0.5.0.5)(PORT=1521)))
TNS-12545: 因目标主机或对象不存在, 连接失败
TNS-12560: TNS: 协议适配器错误
TNS-00515: 因目标主机或对象不存在, 连接失败
32-bit Windows Error: 49: Unknown error
不再监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=//./pipe/EXTPROC1ipc)))

2、查看Oracle的listener是否启动
C:/Documents and Settings/user>lsnrctl status

LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 20-9月 -2008 10:50:44

Copyright © 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=0.5.0.5)(PORT=1521)))
TNS-12535: TNS: 操作超时
TNS-12560: TNS: 协议适配器错误
TNS-00505: 操作超时
32-bit Windows Error: 60: Unknown error

原来没有启动listener,用“lsnrctl start”命令也不能启动。
C:/Documents and Settings/user>lsnrctl start

LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 20-9月 -2008 10:52:16

Copyright © 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=0.5.0.5)(PORT=1521)))
TNS-12545: 因目标主机或对象不存在, 连接失败
TNS-12560: TNS: 协议适配器错误
TNS-00515: 因目标主机或对象不存在, 连接失败
32-bit Windows Error: 49: Unknown error

监听程序未能启动。请参阅上面的错误消息…

3、查看listener.ora的内容:

listener.ora Network Configuration File: D:/oracle/product/10.2.0/db_1/network/admin/listener.ora

Generated by Oracle configuration tools.

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = D:/oracle/product/10.2.0/db_1)
(PROGRAM = extproc)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
(ADDRESS = (PROTOCOL = TCP)(HOST = 0.5.0.5)(PORT = 1521))
)
)

原来本机的ip发生改变后,就出现了上述问题,改变数据库的监听ip地址:
把(ADDRESS = (PROTOCOL = TCP)(HOST = 0.5.0.5)(PORT = 1521))
改成
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))

127.0.0.1:也就是目前数据库正在用的ip地址。

4、再次启动oracle的listener
C:/Documents and Settings/mengzhaoliang>lsnrctl start

LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 20-9月 -2008 10:54:40

Copyright © 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=127.0.0.1)(PORT=1521)))

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
LISTENER 的 STATUS

别名 LISTENER
版本 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production
启动日期 20-9月 -2008 10:54:41
正常运行时间 0 天 0 小时 0 分 1 秒
跟踪级别 off
安全性 ON: Local OS Authentication
SNMP OFF
监听程序参数文件 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=127.0.0.1)(PORT=1521)))
服务摘要…
服务 “PLSExtProc” 包含 1 个例程。
例程 “PLSExtProc”, 状态 UNKNOWN, 包含此服务的 1 个处理程序…
命令执行成功

启动已经成功,
如果已使用Net Manager 更改本地数据库服务IP地址(即遇到了问题2的情况),那么问题应该已经解决,不需要执行下面的步骤了。
如果还出现错误,试试重启了一下OracleOraDb10g_home1TNSListener服务。

5.在tnsnames.ora上添加上
ORCL_127.0.0.1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)

6、再次用PL/SQL Developer再次连接数据库
出现下面错误:
TNS-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务

再次检查listener.log日志
20-9月 -2008 11:01:54 * (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)(CID=

(PROGRAM=D:/plsql/plsqldev.exe)(HOST=RUIFEI-EF0ADC98)(USER=mengzhaoliang))) * (ADDRESS=

(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1267)) * establish * orcl * 12514
TNS-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务

查看listener:
C:/Documents and Settings/user>lsnrctl services

LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 20-9月 -2008 11:11:09

Copyright © 1991, 2005, Oracle. All rights reserved.

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
服务摘要…
服务 “PLSExtProc” 包含 1 个例程。
例程 “PLSExtProc”, 状态 UNKNOWN, 包含此服务的 1 个处理程序…
处理程序:
“DEDICATED” 已建立:0 已被拒绝:0
LOCAL SERVER
命令执行成功

7、用sqlplus也出现同样错误:
C:/Documents and Settings/user>sqlplusscott/mzl@ORCL_127.0.0.1

SQL*Plus: Release 10.2.0.1.0 - Production on 星期六 9月 20 11:15:09 2008

Copyright © 1982, 2005, Oracle. All rights reserved.

ERROR:
ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务

8、查看listenser状态:
C:/Documents and Settings/mengzhaoliang>lsnrctl status

LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 20-9月 -2008 11:26:42

Copyright © 1991, 2005, Oracle. All rights reserved.

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
LISTENER 的 STATUS

别名 LISTENER
版本 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production
启动日期 20-9月 -2008 11:24:33
正常运行时间 0 天 0 小时 2 分 8 秒
跟踪级别 off
安全性 ON: Local OS Authentication
SNMP OFF
监听程序参数文件 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=127.0.0.1)(PORT=1521)))
服务摘要…
服务 “PLSExtProc” 包含 1 个例程。
例程 “PLSExtProc”, 状态 UNKNOWN, 包含此服务的 1 个处理程序…
命令执行成功

C:/Documents and Settings/user>tnsping orcl

TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 20-9月 -2008 11:27:43

Copyright © 1997, 2005, Oracle. All rights reserved.

已使用的参数文件:
D:/oracle/product/10.2.0/db_1/network/admin/sqlnet.ora

TNS-03505: 无法解析名称

9、查看sqlnet.ora内容:

sqlnet.ora Network Configuration File: D:/oracle/product/10.2.0/db_1/network/admin/sqlnet.ora

Generated by Oracle configuration tools.

This file is actually generated by netca. But if customers choose to

install “Software Only”, this file wont exist and without the native

authentication, they will not be able to connect to the database on NT.

SQLNET.AUTHENTICATION_SERVICES= (NTS)

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

10.把listener.ora的内容:

listener.ora Network Configuration File: D:/oracle/product/10.2.0/db_1/network/admin/listener.ora

Generated by Oracle configuration tools.

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = D:/oracle/product/10.2.0/db_1)
(PROGRAM = extproc)
)
)

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
)
)

改成下面的内容:

listener.ora Network Configuration File: D:/oracle/product/10.2.0/db_1/network/admin/listener.ora

Generated by Oracle configuration tools.

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = orcl)
(ORACLE_HOME = D:/oracle/product/10.2.0/db_1)

(PROGRAM = extproc)

)

)

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = orcl))
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
)
)

11、然后关闭、再启动listener
在cmd中执行“lsnrctl stop” 和“lsnrctl stop”命令,再次登陆正常!
C:/Documents and Settings/user>sqlplusscott/mzl@orcl

SQL*Plus: Release 10.2.0.1.0 - Production on 星期六 9月 20 11:55:47 2008

Copyright © 1982, 2005, Oracle. All rights reserved.

连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL>

再次用PL/SQL Developer登陆就没有问题了。

完毕!

你可能感兴趣的:(oracle,数据库,oracle,服务器)