Sql 在Oracle数据库中显示表的上次访问时间
我正在使用Oracle RDBMS作为数据库。我正试图清理数据库,想知道某些表是否还被使用。我需要这些表格的最后访问时间才能得出结论 请注意,我需要最新Sql 在Oracle数据库中显示表的上次访问时间,sql,oracle,timestamp,Sql,Oracle,Timestamp,我正在使用Oracle RDBMS作为数据库。我正试图清理数据库,想知道某些表是否还被使用。我需要这些表格的最后访问时间才能得出结论 请注意,我需要最新SELECTquery的时间戳。我有一些解决方案可以查找其他活动的时间戳,如UPDATE,ALTER,等等。我专门寻找SELECTtimestamp 非常感谢您的帮助。您可以使用: 是的,@lad2025是对的,我会使用AUDIT来找出谁在访问表 要打开它,只需使用: AUDIT SELECT ON scott.emp BY ACCESS; A
SELECT
query的时间戳。我有一些解决方案可以查找其他活动的时间戳,如UPDATE
,ALTER
,等等。我专门寻找SELECT
timestamp
非常感谢您的帮助。您可以使用:
是的,@lad2025是对的,我会使用
AUDIT
来找出谁在访问表
要打开它,只需使用:
AUDIT SELECT ON scott.emp BY ACCESS;
AUDIT SELECT ON scott.dept BY ACCESS;
然后,您可以通过查询查看哪些表被审核:
SELECT *
FROM DBA_OBJ_AUDIT_OPTS
WHERE owner='SCOTT';
OWNER OBJECT_NAME OBJECT_TYPE SEL
SCOTT DEPT TABLE A/A
SCOT EMP TABLE A/A
如果有人从其中一个已审核的表中进行选择,它将显示在审核跟踪中:
SELECT * FROM scott.emp;
SELECT os_username, username, obj_name, action_name, timestamp
FROM DBA_AUDIT_TRAIL
WHERE timestamp BETWEEN SYSDATE-7 AND SYSDATE
AND owner = 'SCOTT'
AND action=3
ORDER BY timestamp DESC;
OS_USERNAME USERNAME OBJ_NAME ACTION NAME TIMESTAMP
xxxx yyy EMP SELECT 2018-05-30 08:01:07
要再次关闭,请使用:
NOAUDIT ALL ON scott.emp;
SELECT * FROM DBA_OBJ_AUDIT_OPTS WHERE OWNER='SCOTT';
OWNER OBJECT_NAME OBJECT_TYPE SEL
SCOTT DEPT TABLE A/A
不过要小心。对于每个选择,都会在审计跟踪中添加一行,因此请仔细观察,它可以非常快速地生成大量数据
NOAUDIT ALL ON scott.emp;
SELECT * FROM DBA_OBJ_AUDIT_OPTS WHERE OWNER='SCOTT';
OWNER OBJECT_NAME OBJECT_TYPE SEL
SCOTT DEPT TABLE A/A