在Oracle 11g中获取所有用户的最后登录日期

3
我们使用的是Oracle 11g,所以以下查询无法工作。
select USERNAME,LAST_LOGIN from dba_users

我进行了搜索,人们提出了多种方法,让我感到困惑。在 Oracle 11g 中获取所有用户的最后登录日期的正确方法是什么?

select username, logon_time
from v$session

或者
SELECT
    username,
    timestamp
FROM
    sys.dba_audit_session

或者
select username, timestamp
from dba_audit_Trail 
3个回答

4

DBA_AUDIT_TRAIL表记录了基于强制审计级别的所有用户执行的操作,并记录每个用户的登录和注销时间,可以从action列中识别。

 SELECT  MAX(TIMESTAMP), A.USERNAME FROM DBA_AUDIT_TRAIL A WHERE ACTION_NAME = 'LOGON'
    GROUP BY USERNAME ORDER BY 1 DESC;

谢谢!我已经测试了代码,似乎返回了正确的结果。您知道如何获取用户架构中进行的最后交易日期等信息吗? - Alex W.
DBA_AUDIT_TRAIL表根据配置的审计级别提供大量信息,您可以从同一张表中获取这些信息。 - Atif

0

这应该可以工作:

select username, last_login
from sys.dba_users;

你只需要向你的数据库管理员请求授予你访问那个表的权限。


1
OP已经说明他正在使用Oracle 11,因此last_login不可用。直到Oracle 12,last_login才被添加到dba_users中。 - EdStevens
抱歉..对不起..我没有看到该列不可用。我只是查看了11g中表是否可用。 - Junjie

0
请使用以下查询语句,这是检查用户及其最后登录日期的正确方法。
select username, max(logon_time) as logon_time from v$session where username is not null
group by username;

演示

enter image description here


4
从v $ session查询只能获取当前已登录的用户。我严重怀疑这不是OP想要的。 - EdStevens

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接