我的任务是在我可以访问的Oracle模式上做一些内务处理。简而言之,我想放弃过去3个月内没有“使用过”的表格(过去3个月内未查询或操纵数据的表格)。我有对模式的读/写访问权限,但我不是DBA;我在Oracle中运行相对基本的DML / DDL查询。
我正在试图找出是否有办法让我识别旧/冗余表;这是我尝试过的(大多数都没有成功)
USER_TABLES
是我的第一个停靠点,但此表中的LAST_ANALYZED
日期似乎不是我正在寻找的最后修改/查询日期
谷歌搜索引起了DBA_Hist
个表格的注意,我试过查询其中的一些(即DBA_HIST_SYSSTAT
),但我遇到了(ORA-00942: table or view does not exist
)
我也尝试过查询V$SESSION_WAIT
,V$ACTIVE_SESSION_HISTORY
和V$SEGMENT_STATISTICS
,但我得到了相同的ORA-00942
错误
我很感激有关上述选项是否真正提供了我需要的关于表格的信息的任何建议,如果是的话,我可以做些什么来解决我遇到的错误。或者,我可以探索其他任何选项吗?
答案 0 :(得分:1)
最简单的做法是100%确定,可以对您感兴趣的Oracle表(可能是所有这些表)启用审计。启用后,Oracle会有一个审计表(dba_audit_trail),您可以查询该表以查找是否已访问过表。您可以通过发出以下命令启用审核:AUDIT on。通过会话;
我选择"会话"这样,无论会话执行多少次操作(最小化审计表中的记录),每个会话只能获得一条记录。
示例:
审核按会话选择bob.inventory;
然后你可以在一段时间后查询dba_audit_trail以查看是否有任何记录显示在该表中。
您可以通过发出" noaudit"来禁用审核。命令。
希望有所帮助。
-Jim