下面首先说说如何在出现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了。

本篇文章来源于 Linux公社网站 原文链接

最后修改:2022 年 02 月 23 日
如果觉得我的文章对你有用,请随意赞赏