暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 因超过空闲时间阈值而终止的会话的历史列表。

askTom 2021-08-05
722

问题描述

你好,汤姆,

感谢你们提供这个论坛,它有助于解决我们的问题,或为我们指明解决问题的正确方向,并总体上使我们更好地了解我们正在做的事情。
我的数据库版本是Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - Linux 7上的64位生产版。
资源限制参数设置为true ,默认配置文件的空闲时间设置为30分钟。对于分配了默认配置式的用户,此操作与预期一样有效。
我的问题是,我如何获得一个历史列表,只列出那些因为超过30分钟空闲时间阈值而被终止的会话的详细信息?

先谢谢你!

专家解答

我不认为我们能以本机的方式捕获它,但是通过一些审计和警报日志,你可以得到一些信息,例如

--
-- First I ran this, which is good to have on *any* database to known when anyone logs on or off
--
SQL> audit session;

Audit succeeded.

--
-- then here's the demo
--
SQL> create profile demo_timeout limit idle_time 5;

Profile created.

SQL> alter user demo profile demo_timeout;

User altered.

SQL> conn demo/demo@db19_pdb1
Connected.
SQL> select * from dual;

D
-
X

SQL> select * from dual;
select * from dual
*
ERROR at line 1:
ORA-02396: exceeded maximum idle time, please connect again
复制


在警报日志中,我们会在会话被终止时显示此信息(这可能因平台和版本而异)

(3):KILL SESSION for sid=(369, 52122):
(3):  Reason = profile limit idle_time
(3):  Mode = KILL SOFT -/-/NO_REPLAY
(3):  Requestor = PMON (orapid = 2, ospid = 2400, inst = 1)
(3):  Owner = Process: USER (orapid = 27, ospid = 17916)
(3):  Result = ORA-0
复制


所以我可以用这些信息追踪审计的线索

SQL> select username, userhost, os_process
  2  from dba_audit_trail
  3  where timestamp > sysdate - 1
  4  and os_process like '%17916%';

USERNAME             USERHOST                       OS_PROCESS
-------------------- ------------------------------ --------------
DEMO                 WORKGROUP\GTX                  5920:17916

复制



文章转载自askTom,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论