1

如何编写一个PL/SQL 程序来计算并显示 oracle 11g 中所有数据库用户的用户名和平均会话时间?好心的帮助

4

1 回答 1

4

默认情况下,Oracle 不会审计用户访问等内容。有内置选项,但默认情况下它们是关闭的。

要启用 Oracle 的审计跟踪,我们需要设置 AUDIT_TRAIL 参数。将其设置为DB将记录写入表;这比 OS 文件更方便查询(除非你grep的比你的 SQL 更好)。 了解更多

要监控用户连接和断开连接,请让 DBA 发出以下语句:

AUDIT SESSION;

然后您可以从DBA_AUDIT_SESSION视图中写出您的查询。就像是:

select USERNAME
       , avg(LOGOFF_TIME - TIMESTAMP)
from DBA_AUDIT_SESSION
group by USERNAME;

请注意,这是开启的;如果您的应用程序使用 Old Skool 命名用户帐户,它们将为您提供有意义的信息。具有连接池的 Web 应用程序都将作为同一个用户进行审核,因此您需要编写一个定制的日志记录工具。

于 2011-10-09T08:26:56.467 回答