Oracle会话超时设置1:在sqlnet.ora和listener.ora中设置

简介: 这篇文章是Oracle会话超时设置的第一个文章,简述和Oracle 数据库 net services有关的会话超时管理。

     Oracle数据库会话管理中一个重要的内容是会话超时管理,会话超时管理由涉及到会话创建超时,会话空闲超时、会话故障超时,会话超时的配置也比较复杂,可以在Oracle net services中设置,也可以设置实例级别的超时和用户级别的超时,这篇文章先介绍在Oracle net services中的会话超时设置。

1 Oracle net services简介

     Oracle net services是分布式异构环境下的企业级连接方案,可以简化网络配置和管理的复杂性,网络性能最大化,提高网络诊断能力。

Oracle net services由三个主要的组件,Oracle net,Oracle listener和Oracle 连接管理器。

      Oracle net 负责建立和维护客户应用程序与数据库服务器之间的连接,在它们之间交换信息。Oracle net 部署于网络中的每一台计算机上。Oracle net在系统中位置和作用可以从下面的官网上图中看到。

netag074.gif

      Oracle listener,将客户连接请求转交给服务器,在连接建立后,客户端和Oracle 服务器直接通信。其在架构中的位置和功能可以从另一张官网中的图中看到。

netag089.gif

      监听只在连接建立的过程中起作用,因而在监听的日志中,可以看到大量连接建立的信息,包括连接成功或者是异常的信息,而看不到连接建立后(如连接超时,连接异常)的信息。

      Oracle连接管理器不是必备组件,它同客户端或者服务器分开,位于自己的计算机上。为数据库代理或者屏蔽请求。



2 在sqlnet.ora中设置会话超时

   2.1 SQLNET.EXPIRE_TIME

      这个参数的单位是分钟,指定一个事件间隔。默认值是0,设置为大于0的值之后,Oracle在指定间隔发送一个check消息验证客户端/服务器连接依然活跃。如果探测到一个终结的或者是不再使用的连接,会返回一个错误,导致服务进程退出。主要用于确保客户端异常终结之后,连接不会无限期处于open状态。这个参数主要用于数据库服务器端。这个参数设置为大于0的值后,会额外产生网络业务,尽管非常小,也可能影响网络性能。

    2.2 SQLNET.RECV_TIMEOUT和SQLNET.SEND_TIMEOUT

     SQLNET.RECV_TIMEOUT这个参数的单位是秒,设置数据库服务器在客户端建立连接之后等待客户端的时间。客户端建立连接后必须在这个指定间隔内发送一些数据,在客户端时常关闭或者异常的环境下,推荐设置这个参数。如果客户端在这个时间间隔内没有发送任何数据,数据库服务器在sqlnet.log中记录一条ORA-12535: TNS:operation timed out

或者 ORA-12609: TNS: Receive timeout occurred消息。没有这个参数,数据库服务器可能会永久等待异常或关闭的客户。这个参数缺省没有设置值。这个参数也可以用户客户端,设置客户端等待服务器发送数据的时间间隔。

      SQLNET.SEND_TIMEOUT这个参数的单位也是秒,设置的是数据库在客户端建立连接后完成一个发送操作的时间。也是推荐在客户端时常关闭或者异常的环境下设置,如果没有这个参数,数据库服务器的发送操作可能在客户端关闭或异常时一直等待。也可以用于客户端。

   2.3 SQLNET.INBOUND_CONNECT_TIMEOUT和SQLNET.OUTBOUND_CONNECT_TIMEOUT

      这两个参数设置连接创建时的超时设置,SQLNET.INBOUND_CONNECT_TIMEOUT单位时秒,设置用户创建连接的超时时间,如果用户不能再设置的时间内创建连接,完成认证,数据库服务器终结连接,并且在sqlnet.log文件中记录客户的 IP地址及一条 ORA-12170错误,客户端会收到一条RA-12547: TNS:lost contact 或者一条 ORA-12637: Packet receive failed错误消息。这个参数的缺省值时60.

     SQLNET.OUTBOUND_CONNECT_TIMEOUT的单位也是秒,设置了这个超时时间后,用于客户建立到服务器的连接时,如果在指定的时间内没有建立连接,终止连接试图,客户收到一条ORA-12170: TNS:Connect timeout occurred错误。如果没有这个参数,当数据库服务器所在的主机不可达时,到数据库服务器的客户连接请求可能会被阻塞TCP connect timeout 定义的时间间隔,缺省为60秒。

2.4 TCP.CONNECT_TIMEOUT

       这个参数的单位时秒,缺省值是60,设置客户建立至数据库服务器的tcp连接的超时时间。如果在这个指定的时间间隔内没有创建tcp连接,连接企图被终止,客户收到RA-12170: TNS:Connect timeout occurred错误。这个值是

SQLNET.OUTBOUND_CONNECT_TIMEOUT的子集,SQLNET.OUTBOUND_CONNECT_TIMEOUT是指客户端建立到数据库实例连接的时间。

3 listener.ora中的超时设置

     INBOUND_CONNECT_TIMEOUT_listener_name参数设置在网络连接建立后,客户完成至监听器连接请求的时间。如果在这个指定时间内服务器没有收到客户的连接请求,终结连接并在监听日志内记录客户端的IP address 和一条ORA-12525:TNS: listener has not received client's request in time allowed 错误。这个参数的缺省值是60秒。

4 默认设置下的连接超时

       如果不做任何设置,Oracle中的超时设置应该是这样的,INBOUND_CONNECT_TIMEOUT_listener_name是60秒,SQLNET.INBOUND_CONNECT_TIMEOUT的值是60秒,TCP.CONNECT_TIMEOUT是60秒,其它的都没有值或者为0,也就是不生效。在客户创建到数据库服务器的连接过程中如果超时或者异常会有报错,连接建立后则没有任何超时机制,



       

相关文章
|
6天前
|
监控 Oracle 关系型数据库
Linux平台Oracle开机自启动设置
【11月更文挑战第8天】在 Linux 平台设置 Oracle 开机自启动有多种方法,本文以 CentOS 为例,介绍了两种常见方法:使用 `rc.local` 文件(较简单但不推荐用于生产环境)和使用 `systemd` 服务(推荐)。具体步骤包括编写启动脚本、赋予执行权限、配置 `rc.local` 或创建 `systemd` 服务单元文件,并设置开机自启动。通过 `systemd` 方式可以更好地与系统启动过程集成,更规范和可靠。
|
6月前
|
Oracle 关系型数据库 Linux
Oracle设置监听之Navicat的锅
Oracle设置监听之Navicat的锅
97 0
|
7天前
|
Oracle Ubuntu 关系型数据库
Linux平台Oracle开机自启动设置
【11月更文挑战第7天】本文介绍了 Linux 系统中服务管理机制,并详细说明了如何在使用 systemd 和 System V 的系统上设置 Oracle 数据库的开机自启动。包括创建服务单元文件、编辑启动脚本、设置开机自启动和启动服务的具体步骤。最后建议重启系统验证设置是否成功。
|
4月前
|
SQL Oracle 关系型数据库
关系型数据库Oracle设置 RMAN 环境:
【7月更文挑战第25天】
69 2
|
4月前
|
Oracle 关系型数据库 Unix
关系型数据库Oracle设置环境变量:
【7月更文挑战第22天】
544 4
|
4月前
|
SQL Oracle 关系型数据库
关系型数据库Oracle结束 RMAN 会话:
【7月更文挑战第25天】
83 1
|
4月前
|
SQL Oracle 关系型数据库
|
6月前
|
SQL Oracle 关系型数据库
Oracle SQL*Plus的SET命令:你的数据库会话“调色板”
【4月更文挑战第19天】Oracle SQL*Plus的SET命令是数据库会话的“调色板”,用于设置输出格式、反馈信息和各种偏好。它能调整PAGESIZE和LINESIZE以优化显示,控制ECHO和FEEDBACK开关以定制反馈,以及统计命令执行时间(TIMING)和调试SQL(VERIFY)。更高级的选项如HEADING和COLSEP可改善输出的可读性。通过灵活运用SET命令,能提升工作效率和体验,是数据库管理员和开发者的必备工具。
|
6月前
|
SQL 监控 Oracle
oracle阻塞会话与kill
oracle阻塞会话与kill
|
Oracle 关系型数据库 Linux
Oracle设置连接数进程数会话数
Oracle设置连接数进程数会话数
246 0

推荐镜像

更多