分析问题处在listener.ora和tnsname.ora两个文件上,开始以为由于HOST不为IP地址造成,因为之前IP地址曾经更换过。但HOST改为当前IP地址后仍然不能解决该问题。网上查阅了资料后,问题定位为listener.ora上。
原文件内容为:
# listener.ora Network Configuration File: /home/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 = /home/oracle/product/10.2.0/db_1)
(PROGRAM = extproc)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.102)(PORT = 1521))
)
)
修改后文件内容为:
# listener.ora Network Configuration File: /home/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 = /home/oracle/product/10.2.0/db_1)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = wily)
(ORACLE_HOME = /home/oracle/product/10.2.0/db_1)
(SID_NAME = wily)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.102)(PORT = 1521))
)
)
粗体部分为增加的内容。
看来该文件中必须把需要启动的实例相关信息SID_DESC部分描述清楚。否则会导致“ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务”错误。