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

相关文章

  • MySQL百万级数据大分页查询优化的实现

    MySQL百万级数据大分页查询优化的实现 背景 当MySQL数据库中数据量较大时,常用的分页查询方式会导致查询速度变慢,尤其是当需要查询的数据量达到百万级别时,查询速度更是受限。此时为了保证查询速度,需要进行分页查询的优化。 分页查询优化实现的方法 1. 使用Limit和Offset分页 常用的MySQL分页方式是使用Limit和Offset来进行分页查询。…

    database 2023年5月19日
    00
  • 教你如何在MySQL命令行中使用SQL语句的规则

    下面是“教你如何在MySQL命令行中使用SQL语句的规则”的完整攻略。 1. 进入MySQL命令行 首先,打开终端或命令行界面,输入以下命令: mysql -u 用户名 -p 其中,用户名是你在MySQL数据库中的用户名。输入完后,按下回车键,接着会提示你输入密码。输入正确的密码即可进入MySQL命令行。 2. 创建、选择和删除数据库 创建数据库 要创建一个…

    database 2023年5月22日
    00
  • mysql 8.0.16 winx64及Linux修改root用户密码 的方法

    以下是“mysql 8.0.16 winx64及Linux修改root用户密码的方法”的完整攻略。 准备工作 在修改root用户密码之前,需要先确保mysql服务已经启动。如果未启动,可以使用以下命令启动mysql服务。 对于Windows系统: net start mysql 对于Linux系统: systemctl start mysqld 进入mysq…

    database 2023年5月22日
    00
  • 教你使用VS Code的MySQL扩展管理数据库的方法

    教你使用VS Code的MySQL扩展管理数据库的方法 介绍 需要经常使用数据库的人,相信对于数据库管理工具都有一定的了解。而VS Code的MySQL扩展也为我们提供了一种方便快捷的方式来管理MySQL数据库。 本文将会为大家介绍使用VS Code的MySQL扩展管理数据库的方法,同时提供详细步骤和示例代码,帮助读者更好地掌握这个工具的使用。 安装MySQ…

    database 2023年5月21日
    00
  • Linux系统下无法访问mysql解决方法

    下面是详细的“Linux系统下无法访问mysql解决方法”的攻略: 1. 安装MySQL客户端 在Linux系统环境下,如果要进行对MySQL的连接,首先需要安装MySQL客户端。可以通过以下命令进行安装: sudo apt-get install mysql-client 2. 检查MySQL服务是否正在运行 在Linux中,需要检查MySQL服务是否正在…

    database 2023年5月22日
    00
  • springboot 多数据源 实例(sybase、mysql数据库)(上)

    最近项目 需要用到 sybase(sql anywhere)、mysql 数据库 两边数据交互 。由于之前对sybase 数据库一点不懂 踩了许多坑 特意记下: 连接 sybase 客户端需要用到 SQL Central 17.0 (64-bit) 这个工具; 接下来我会一步一步详细介绍: 1.连接远程sybase 数据库 首先要配置odbc: 在win搜索…

    MySQL 2023年4月12日
    00
  • Mysql日期查询的详细介绍

    MySQL日期查询是MySQL数据库中常用的操作之一,一般用来筛选符合条件的日期数据。下面是MySQL日期查询的详细介绍。 日期查询类型 MySQL提供了常用的日期查询类型,包括: YEAR:查询特定年份的数据。 MONTH:查询特定月份的数据。 DAY:查询特定天的数据。 DATE:查询特定日期的数据。 TIME:查询特定时间的数据。 日期查询操作符 My…

    database 2023年5月22日
    00
  • CMD操作oracle数据导库过程图解

    下面我为您详细讲解“CMD操作oracle数据导库过程图解”的完整攻略。 一、背景信息 在进行CMD操作Oracle数据导库之前,需要确认以下信息: 数据库的连接信息,包括ip、端口、数据库实例名、用户名、密码。 数据库中的数据导出文件所在位置及文件名。 需要导入数据的目标数据库信息,包括ip、端口、数据库实例名、用户名、密码等。 二、使用expdp导出数据…

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