1. 问题描述
在一台计算机上已经成功安装了oracle(如:OracleXE112_Win64),服务和监听器启动ok。
在这之后,如果修改了这台计算机名称,再想启动Oracle服务时,你发现在控制面板--管理工具--服务中启动监听器是成功的,但是一刷新,监听器又立马关闭了,怎么都无法真正启动成功。
而如果监听器服务没有启动时去建立连接,会显示:TNS:no listener。
问什么呢?如何解决?
2. 解决方法
出现监听器服务无法启动成功的原因是监听器的配置文件(当前在:D:\oraclexe\app\oracle\product\11.2.0\server\network\ADMIN\listener.ora)中配置的监听器信息已经和当前计算机名称不一致了。
如修改之前计算机名称是:zhangsan,监听器配置信息是:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = D:\oraclexe\app\oracle\product\11.2.0\server)
(PROGRAM = extproc)
)
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = D:\oraclexe\app\oracle\product\11.2.0\server)
(PROGRAM = extproc)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
(ADDRESS = (PROTOCOL = TCP)(HOST = zhangsan)(PORT = 1521))
)
)
DEFAULT_SERVICE_LISTENER = (XE)
注意:HOST=zhangsan,这里指定当前监听器的HOST为计算机名,即:zhangsan.
修改之后计算机名称是:lisi
我们发现,此时Oracle监听器配置中依然是HOST=zhangsan,然而此时我们的计算名称已经被修改为lisi,再启动监听器服务当然会出错。
修改HOST=lisi后,重新启动Oracle实例服务和监听器服务即可。