关于Oracle profile文件connect_time时间限制超时的问题探究

一个问题困扰我两天了,问了我们公司DBA晓霞姐,结果也不是很清楚,Oracle的技术论坛也发帖了,没人解释,或许是很多人不太注意这个问题吧,今天还在几个Oracle技术QQ群问了好几个公司的DBA也没解释清楚原因,哎,真苦恼啊,Oracle的研究是我的兴趣,但个人摸索真难啊,寻高人带啊~~~

这里想记录下此问题,待今后找到答案了再补充,问题是这样的:
 
我创建了一个profile文件,
create profile timeout_test limit  connect_time 1 idle_time unlimited;
限制用户连接时间为1分钟,并将这个profile授予给scott用户,经过多次测试发现实际断开的连接时间为1分50秒左右,并不是在连接1分钟后立刻断开
不知道原因在哪?
 
而且我也找到规律了,几乎是延迟57秒,也就是说设置1分钟 ,要 1分57秒才断开;设置2分钟, 要2分57秒才断开



下面是我的某次测试过程:

C:\Documents and Settings\Administrator>sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 星期二 7月 5 13:50:41 2011

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

SQL> conn / as sysdba
已连接。
SQL> set time on
已连接。
13:53:34 SQL> show parameter resource_limit

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
resource_limit                       boolean     FALSE
13:54:07 SQL> alter system set resource_limit=true;

系统已更改。

13:55:06 SQL> select profile from dba_users where username='SCOTT';

PROFILE
------------------------------
DEFAULT

13:55:18 SQL> create profile timeout_test limit  connect_time 1 idle_time unlimited;

配置文件已创建

13:57:25 SQL> alter user scott  profile timeout_test;

用户已更改。

13:57:42 SQL> select profile from dba_users where username='SCOTT';

PROFILE
------------------------------
TIMEOUT_TEST

14:00:12 SQL> conn scott/tiger
已连接。
14:00:36 SQL>  --这里是scott用户会话连接的开始时间
14:00:38 SQL>
14:00:39 SQL> select * from dual;

D
-
X

14:00:50 SQL> /   --scott用户登录后进行操作

D
-
X

1

14:02:18 SQL> /   --这里连接已经超过1分钟了,我仍然能进行操作,连接未断开

D
-
X

14:02:28 SQL> /

D
-
X

14:02:29 SQL> /

D
-
X

14:02:31 SQL> /

D
-
X

14:02:32 SQL> /

D
-
X

14:02:33 SQL> /

D
-
X

14:02:34 SQL> /      --直到这里,会话断开!总的连接时间 connect_time= 14:02:34 - 14:00:36  差不多2分钟,跟我的profile文件限制的1分钟时间有差异
select * from dual
*
第 1 行出现错误:
ORA-02399: 超出最大连接时间, 您将被注销


14:02:35 SQL> --还原之前的系统设置:
14:02:47 SQL> conn / as sysdba
已连接。
14:03:34 SQL> drop profile timeout_test cascade;

配置文件已删除。

14:05:58 SQL> alter system set resource_limit=false;

系统已更改。

14:06:36 SQL>  select profile from dba_users where username='SCOTT';

PROFILE
------------------------------
DEFAULT

14:06:53 SQL>

 

你可能感兴趣的:(关于Oracle profile文件connect_time时间限制超时的问题探究)