请注意,本文编写于 470 天前,最后修改于 470 天前,其中某些信息可能已经过时。
下面首先说说如何在出现ORA-12170 tns 连接超时等问题时,找到关键问题点,在哪个位置出错?
这是网上较为让人认可的解决方式:
- 1.cmd-----ping ip地址 查看网络问题,看能否ping通
- 2.cmd-----tnsping ip地址(或者是服务器的实例名SID)如果报“TNS-12535:操作超时”,可能是服务器端防火墙 没有关闭
- 3.cmd----netstat -na 查看1521端口是否关闭,如果关闭Windows XP中的防火墙设置中将1521端口设为例外
- 4.cmd----lsnrctl status lsnrctl是listener-control 监听器的缩写,查看监听的状态
在这里我重点说说第四点,因为出错的大部分集中于此。
当我们在cmd输入lsnrctl status时出现如下图
或者图中出现监听不支持服务等字眼,基本可以确定我们product\11.1.0\db\_2\NETWORK\ADMIN下
tnsnames.ora文件或者listener.ora文件中出现问题
listener.ora文件网上拥有许多资料我们需确保文件中至少存在如下代码
# listener.ora Network Configuration File: E:\oracle\product\10.2.0\db_1\network\admin\listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
(ADDRESS = (PROTOCOL = TCP)(HOST = UPAS-20181130MI112)(PORT = 1521))
)
)
如果lsnrctl status命令下出现监听不支持服务问题我们还需要在上面的基础上加一段,如下为完整代码
# listener.ora Network Configuration File: E:\oracle\product\10.2.0\db_1\network\admin\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = ORCL)
(SID_NAME = ORCL)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
(ADDRESS = (PROTOCOL = TCP)(HOST = UPAS-20181130MI112)(PORT = 1521))
)
)
完成之后我们登入oracle还是报错,那么就需要看看容易忽略的tnsnames.ora文件了
主要看看:
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = UPAS-20181130MI112)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
这段代码中HOST是否是你的主机名或者IP,如果不是请修改到对应的主机名和IP就OK了。