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

解决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日

相关文章

  • 随机获取oracle数据库中的任意一行数据(rownum)示例介绍

    获取oracle数据库中的任意一行数据可以使用rownum进行随机获取。下面将详细介绍如何实现随机获取oracle数据库中的任意一行数据。 示例1: SELECT column1, column2 FROM table_name WHERE ROWNUM <= 1 ORDER BY dbms_random.value; 上述SQL语句在获取数据的时候使…

    database 2023年5月21日
    00
  • SQL 计算平均值时去掉最大值和最小值

    要计算平均值时去掉最大值和最小值,可以使用SQL中的子查询和聚合函数结合。以下是具体步骤: 使用子查询得到最大值和最小值: 使用如下语句得到数据表中列column的最大值和最小值: SELECT MAX(column), MIN(column) FROM table; 使用HAVING语句筛选掉最大值和最小值: 把上面子查询的结果作为过滤条件传入HAVING…

    database 2023年3月27日
    00
  • SQL Server下7种“数据分页”方案全网最新最全

    SQL Server下7种“数据分页”方案全网最新最全攻略 数据分页是应用程序中十分重要的功能之一,它可以提高数据处理效率,减轻服务器负担,从而保证用户体验。SQL Server提供了多种数据分页方案,本文将描述其中7种最常用的方案,以及它们的使用场景和优缺点。 常规分页 实现方式 常规分页是最简单常用的分页方式,其实现方式为: SELECT * FROM …

    database 2023年5月21日
    00
  • Python的Flask框架使用Redis做数据缓存的配置方法

    flask配置redis 首先得下载flask的缓存插件Flask-Cache,使用pip下载。 sudo pip install flask_cache 为应用扩展flask_cache   app = Flask(__name__) 1 config = { 2 ‘CACHE_TYPE’: ‘redis’, 3 ‘CACHE_REDIS_HOST’: ‘…

    Redis 2023年4月11日
    00
  • Mysql利用group by分组排序

    在数据库查询中,使用 GROUP BY 子句可以将数据按照指定的字段分组,然后进行聚合操作,例如计算总数、平均值、最大值、最小值等。在 GROUP BY 子句后面可以使用 ORDER BY 子句对分组后的数据进行排序。这种方式可以使用户方便地获取所需的聚合数据,并且结果还能根据需求进行排序。 下面是使用MySQL的GROUP BY子句进行分组排序的完整攻略:…

    database 2023年5月22日
    00
  • 在Oracle PL/SQL中游标声明中表名动态变化的方法

    在Oracle PL/SQL中,游标是一种重要的数据结构,它能够有效地在程序中处理和管理结果集。在实际开发中,经常需要在游标声明中动态变化表名。下面是在Oracle PL/SQL中实现动态变化表名的方法攻略。 方法一:使用动态SQL语句 可以通过动态SQL技术来动态地创建游标,以实现在游标声明中动态变化表名。 例如,下面的示例代码演示了如何使用动态游标查询多…

    database 2023年5月21日
    00
  • PHP数据对象PDO操作技巧小结

    PHP数据对象(PDO)操作技巧小结 PHP PDO是一款用于操作数据库的PHP扩展。相比传统的mysql扩展,PDO具有更好的可移植性、安全性以及面向对象的特性。本文将为您介绍PDO的一些常用操作技巧。 连接数据库 使用PDO连接数据库需要指定数据库类型、主机地址、数据库名、用户名和密码等必要参数,示例代码如下: // 连接mysql数据库 $dsn = …

    database 2023年5月21日
    00
  • sql分页查询几种写法

    SQL分页查询是指在查询结果中按照一定规则分页显示数据。在实际应用中,分页功能是十分常见的功能,MySQL和Oracle等主流数据库都提供了分页功能,下面我们来介绍SQL分页查询几种写法。 LIMIT分页查询 在MySQL数据库中,常用的分页手段是使用LIMIT语句。LIMIT语句可以用来控制从哪一行开始查询,查询的行数是多少。 SELECT * FROM …

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