在12C以前,如果想控制客户端空闲时间,使用 profile 的idle_time 来控制,从12c开始,引入一个新参数,max_idle_time,直接通过设置改参数,单位为分钟,就可以控制多少空闲时间不操作,会主动被杀掉。
废话不少说,我们来看看这个参数情况,我机器为19c
C:\Users\ThinkPad X1E>sqlplus /nolog
SQL*Plus: Release 19.0.0.0.0 - Production on 星期二 6月 21 14:39:38 2022
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
SQL> conn / as sysdba
SQL> show parameter idle_time
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
max_idle_time integer 0
--我们来设置为2分钟:
SQL> alter system set max_idle_time=2;
系统已更改。
--重新登录
SQL> conn system/oracle_4U
已连接。
SQL> select * from dual;
DU
--
X
--看看当前时间:
SQL> select systimestamp from dual;
SYSTIMESTAMP
---------------------------------------------------------------------------
21-6月 -22 02.59.22.811000 下午 +08:00
--休息一下,两分钟以后再来看看
SQL> select systimestamp from dual;
select systimestamp from dual
*
第 1 行出现错误:
ORA-03113: 通信通道的文件结尾
进程 ID: 6816
会话 ID: 251 序列号: 65261
SQL> select * from dual;
ERROR:
ORA-03114: 未连接到 ORACLE
--只有重新登录:
SQL> conn system/oracle_4U
已连接。
SQL> select systimestamp from dual;
SYSTIMESTAMP
---------------------------------------------------------------------------
21-6月 -22 05.09.13.448000 下午 +08:00
SQL>