Oracle表查询或修改日期

Oracle表查询或修改日期,oracle,modified-date,Oracle,Modified Date,我的任务是对我可以访问的Oracle模式进行一些整理。简言之,我想删除过去3个月内没有“使用”过的表,这些表在过去3个月内没有被查询或处理过数据。我有模式的读/写权限,但我不是DBA;我在Oracle中运行相对基本的DML/DDL查询 我试图找出是否有办法识别旧表/冗余表;以下是我尝试过的大部分都没有成功的方法 USER_TABLES是我的第一个调用端口,但此表中上次分析的日期似乎不是我要查找的上次修改/查询的日期 谷歌搜索引起了我对DBA_Hist表的注意,我曾尝试查询其中一些表,即DBA_H

我的任务是对我可以访问的Oracle模式进行一些整理。简言之,我想删除过去3个月内没有“使用”过的表,这些表在过去3个月内没有被查询或处理过数据。我有模式的读/写权限,但我不是DBA;我在Oracle中运行相对基本的DML/DDL查询

我试图找出是否有办法识别旧表/冗余表;以下是我尝试过的大部分都没有成功的方法

USER_TABLES是我的第一个调用端口,但此表中上次分析的日期似乎不是我要查找的上次修改/查询的日期

谷歌搜索引起了我对DBA_Hist表的注意,我曾尝试查询其中一些表,即DBA_Hist_SYSSTAT,但我遇到了ORA-00942:表或视图不存在

我也尝试过查询V$SESSION\u WAIT、V$ACTIVE\u SESSION\u HISTORY和V$SEGMENT\u统计信息,但我得到了相同的ORA-00942错误


如果您能告诉我上述选项是否真的提供了我所需要的关于表格的信息,如果是这样的话,我将非常感谢您的建议,如果是这样的话,我可以做些什么来解决我遇到的错误。或者,我还可以探索其他选项吗?

可以100%肯定的是,最简单的方法可能是对您感兴趣的Oracle表(可能是所有表)启用审核。启用后,Oracle会有一个审计表dba_audit_trail,您可以查询该表以查找是否已被访问。您可以通过发出:AUDIT on启用审核。按届会分列

我选择了“按会话”,这样无论会话执行多少次操作以最小化审核表中的记录,每个会话都只能获得一条记录

例如:

按会话对bob.inventory进行审核选择

然后,您可以在一段时间后查询dba_audit_trail,查看该表是否显示任何记录

您可以通过发出noaudit命令来禁用审核

希望有帮助


-吉姆

由谁访问?其他模式的?使用相同的schemaID登录的应用程序?您是否在任何表上启用了依赖项?这将启用并提供一个列,该列可以转换为日期时间,以确定记录上次更改的时间。或参考:用于最近执行的sql。您可以与db讨论如何获得DBA_HIST_SYSSTAT的权限。。它是存在的,你可能没有权限。谢谢你的想法。表几乎完全由应用程序用户读取和写入,有些表确实有依赖项。ora rowscn伪列在表更新方面打勾,是否有一些方法可以返回多个表的SCN,而不是一次在一个表上运行,理想情况下,我希望运行一个模式范围的查询,返回表名,其中SCN_to_TIMESTAMPORA_rowscn<90天?如果我能够获得必要的查询权限,那么V$SQL可能会很有用;我如何确定查询了哪些表,我是否需要钻研SQL_全文来提取这些表?很遗憾,是的,您必须钻研SQL_全文。您可以使用系统表user|U tables动态生成一条SQL语句,将所有表合并在一起,并从user|U表中查询类似SELECT“SELECT”| chr39 | table|U name | chr39 | as TableName“FROM”| table|U name | union”的内容,其中。。。但是,这取决于用户模式中的每个表,这些表使用有效的row_Scn启用了依赖项。您只需在结果生成后删除最后一条union语句,然后执行动态SQL即可。启用审核几个月似乎是最好的选择,谢谢Jim,他没有访问dba_audit_trail的权限;访问似乎是问题的一半!谢谢你的意见,我有一些东西要回去,试着让我的访问权限增加。