解决ORA-12170:TNS connect timeout occurred问题

yizhihongxing

解决ORACLE数据库连接时出现“ORA-12170:TNS connect timeout occurred”问题的方法如下:

问题分析

此问题通常是由于连接超时或者网络故障所引起。解决方法如下:

解决方案

  1. 确认环境配置

首先需要核实环境的配置是否正确。比如确认防火墙是否阻止了连接,确认listener是否启动,以及确认网络是否正常等。

在Linux系统中,可以使用lsnrctl status命令来查看监听器启动状态。如果没有启动,请使用lsnrctl start来启动。如果已经启动了,可以考虑重启listener试试,使用lsnrctl stop停止监听器,然后使用lsnrctl start启动监听器。

  1. 增加超时时间

可以通过在tnsnames.ora文件中增加一个CONNECT_TIMEOUT参数来解决该问题。该参数用于控制连接超时时间的长度。

例如,假设已经添加了以下tns连接:

ORACLE_DB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

可以在该连接的最后添加CONNECT_TIMEOUT参数:

ORACLE_DB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
    (CONNECT_TIMEOUT = 120)
  )

其中,CONNECT_TIMEOUT的值为秒数。

  1. 使用sqlnet.ora文件

在sqlnet.ora文件中,可以添加以下参数:

SQLNET.INBOUND_CONNECT_TIMEOUT = 120

这将控制才到服务器的连接所需的最长时间(以秒为单位)。请注意,在默认情况下,此参数被禁用。

实例:

sqlnet.inbound_connect_timeout = 120

有了以上的解决方法,就可以顺利解决ORA-12170:TNS connect timeout occurred问题了。

示例说明

1.使用CONNECT_TIMEOUT参数

(1)在tnsnames.ora文件中添加了CONNECT_TIMEOUT参数

ORACLE_DB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
    (CONNECT_TIMEOUT = 120)
  )

如果用户在连接时经常出现ORA-12170错误,则可以尝试将CONNECT_TIMEOUT值增加到更大的值,如240或300。

(2)用户进行连接测试

CMD窗口中连接测试:

C:\Users\Administrator>sqlplus test/test@ORACLE_DB

SQL*Plus: Release 11.2.0.1.0 Production on Fri Aug 23 16:40:04 2019

Copyright (c) 1982, 2010
Oracle.  All rights reserved.

ERROR:
ORA-12170: TNS:connect timeout occurred


SP2-0751: Unable to connect to Oracle.  Exiting SQL*Plus

从结果来看,虽然仍然存在ORA-12170错误,但是时间已经从连接的默认时间减少到120秒。

  1. 使用sqlnet.ora文件

(1)修改sqlnet.ora文件

SQLNET.INBOUND_CONNECT_TIMEOUT = 120

(2)进行连接测试

在终端中进行连接测试:

C:\Users\Administrator>sqlplus test/test@ORACLE_DB

SQL*Plus: Release 11.2.0.1.0 Production on Fri Aug 23 16:40:04 2019

Copyright (c) 1982, 2010
Oracle.  All rights reserved.

ERROR:
ORA-12170: TNS:connect timeout occurred


SP2-0751: Unable to connect to Oracle.  Exiting SQL*Plus

从结果来看,虽然未能解决ORA-12170错误,但sqlnet.ora中设置了SQLNET.INBOUND_CONNECT_TIMEOUT实际上也是增加了连接超时时间。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:解决ORA-12170:TNS connect timeout occurred问题 - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • Redis基础用法

    Redis-避免缓存穿透的利器之BloomFilter Redis相关的问题的时候,经常提到BloomFilter(布隆过滤器)这玩意的使用场景是真的多,而且用起来是真的香,原理也好理解,看一下文章就可以在面试官面前侃侃而谈了 布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难 …

    Redis 2023年4月13日
    00
  • mysql数据库查询优化 mysql效率第3/3页

    下面是“mysql数据库查询优化 mysql效率第3/3页”的完整攻略: 1. 概述 在MySQL数据库中,查询优化是提高查询效率和性能的重要手段。通过对查询语句的优化,可以优化数据库响应速度,提高数据检索的效率。本篇攻略主要涉及MySQL数据库查询优化的相关原则和技巧。 2. 优化原则 2.1 索引优化 索引是提高查询效率的重要手段,可以大幅度减少查询数据…

    database 2023年5月19日
    00
  • MySQL函数Locate的使用详解

    MySQL函数Locate的使用详解 在MySQL中,Locate函数是一个用于查找指定字符串在目标字符串中第一次出现位置的函数。Locate函数的语法如下: LOCATE(substr,str,pos) 其中: substr:需要查找的子字符串。 str:目标字符串。 pos:可选参数,指定开始查找的位置,默认为1。 该函数返回值为子字符串在目标字符串中第…

    database 2023年5月22日
    00
  • CouchDB 和 MariaDB 的区别

    CouchDB和MariaDB都是常见的数据库管理系统,但它们有很多区别。下面详细讲解CouchDB和MariaDB之间的区别。 1. 数据存储方式的差异 CouchDB和MariaDB的存储方式有很大的不同。CouchDB使用了文档数据库的概念,它能够将自己的数据存储成JSON格式的文档并支持多种查询方式。这种存储方式使得CouchDB更加适合于处理非结构…

    database 2023年3月27日
    00
  • python连接sql server数据库的方法实战

    下面是python连接sql server数据库的方法实战的完整攻略: 1. 安装pymssql库 pymssql是一个与sql server数据库协作的Python模块,通过该模块,我们可以轻松地在Python中连接sql server数据库并操作其中的数据。你可以使用以下命令在控制台中安装该模块: pip install pymssql 2. 连接sql…

    database 2023年5月18日
    00
  • Firebase和Derby的区别

    Firebase和Derby都是面向实时多人协作的应用程序开发平台,但它们具有不同的功能和特点。下面将分别详细讲解Firebase和Derby的区别: Firebase Firebase是一种面向实时多人协作的应用程序开发平台,它可以提供实时数据同步和授权用户身份验证等功能。Firebase可以迅速开发应用程序,并且不需要自己搭建服务器。 实时数据库 Fir…

    database 2023年3月27日
    00
  • Mysql报Table ‘mysql.user’ doesn’t exist问题的解决方法

    问题描述 在使用Mysql时,有时会出现”Table ‘mysql.user’ doesn’t exist”这样的错误提示。这个错误通常是由于Mysql无法找到mysql.user表而导致的,从而无法完成授权等操作。 解决方法 针对这个问题,我们可以考虑以下的解决方法: 方法一:检查mysql.user表是否存在 首先,我们需要检查mysql.user表是否…

    database 2023年5月18日
    00
  • CentOS安装MySQL5.5的完整步骤

    下面我为您详细讲解 CentOS 安装 MySQL 5.5 的完整步骤,具体如下: 1. 环境准备 在开始安装之前,请确保您的 CentOS 系统已经安装了 wget 和 tar 工具。 如果您的系统中没有安装这些工具,您可以使用以下命令安装: yum install -y wget tar 2. 下载 MySQL 使用以下命令下载 MySQL 5.5: w…

    database 2023年5月21日
    00
合作推广
合作推广
分享本页
返回顶部