近日,在使用Oracle数据库过程中,遇到了一个很尴尬的问题——Oracle侦听服务启动失败。经过长时间的查找和排查,终于找到了原因,现在和大家分享一下解决方法。
问题描述:
在windows Server 2012上安装Oracle Database 11g,按照默认安装步骤进行安装,最终进入了Oracle Database Configuration Assistant(DBCA)界面。然而,在此时侦听服务未能正常启动,无法继续进行。
原因分析:
通过检查日志文件listener.log,发现如下错误信息:“TNS-12560: TNS:protocol adapter error”。这个错误是由于Oracle Listener服务未能启动造成的。
通过检查Windows服务,发现OracleMTSRecoveryService和OracleOraDB11g_home1TNSListener已经安装且已启动。因此,问题不是由于服务未启动造成的。
接下来,我们搜索一下TNS文件(tnsnames.ora、listener.ora和sqlnet.ora)以确定它们是否存在且路径是否正确。可以看到,这些文件就在$ORACLE_HOME/network/admin中。
进一步检查listener.ora文件,发现以下错误:
# listener.ora Network Configuration File: E:\app\Administrator\product\11.2.0\dbhome_1\network\admin\listener.ora # Generated by Oracle configuration tools.
SID_LIST_LISTENER = (SID_LIST=(SID_DESC=(SID_NAME=CLRExtProc)(ORACLE_HOME=E:\app\Administrator\product\11.2.0\dbhome_1)(PROGRAM=extproc))#(SID_DESC=(SID_NAME=PLSExtProc)(ORACLE_HOME=E:\app\Administrator\product\11.2.0\dbhome_1)(PROGRAM=extproc)) )
LISTENER = (DESCRIPTION_LIST=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))))
ADR_BASE_LISTENER = E:\app\Administrator
问题出在了最后一行“ADR_BASE_LISTENER = E:\app\Administrator”。这一行可能是因为之前的配置残留导致的。
解决方案:
– 打开listener.ora文件并修改最后一行的内容为一个空值。这将允许Oracle Listener服务使用默认目录。
– 关闭Oracle服务(OracleMTSRecoveryService和OracleOraDB11g_home1TNSListener)。
– 打开cmd命令提示符,切换目录到$ORACLE_HOME/bin。
– 运行命令:lsnrctl start
现在Oracle Listener服务应该已成功启动了。可以重新启动Oracle服务,然后继续使用Oracle数据库。
总结:
当Oracle侦听服务启动失败时,首先要检查日志文件listener.log以及TNS文件的存在和路径是否正确,查找原因。如果找不到错误或解决错误后依然无法启动侦听服务,可以尝试修改listener.ora文件中最后一行的内容为空,然后重新启动服务。希望这篇文章对遇到此问题的人们有所帮助。