首页 > 解决方案 > SQL Oracle:查找使用视图/包/函数的最后一个时间戳

问题描述

我想通过删除旧视图、包等来清理我们的数据库。所以我们不再需要维护它们了。我知道甲骨文方面有大量支持视图,例如 all_views。有没有最后使用日期或类似的东西?

最好的问候,彼得

标签: sqldatabaseoracle

解决方案


没有 LAST USED TIME 之类的东西,如果您指的是用户进程最后一次使用对象(表、视图、过程、函数、包、类型、同义词等)的时间。

要真正知道您需要启用 AUDIT,但审计并非旨在为所有事情启用,仅出于特定原因,并且非常小心,因为它具有性能考虑。

想象一下,我有很多属于 TEST_USER 的对象。我想知道有多少正在使用:

AUDIT ALL BY TEST_USER BY ACCESS;

从 Oracle 数据库 11g 版本开始,BY SESSION 和 BY ACCESS 都会导致 Oracle 数据库为每个审计语句和操作写入一个审计记录。与 BY ACCESS 相比,BY SESSION 继续为审计跟踪填充不同的值。如果您没有指定任何子句,则默认为 BY SESSION。

在此处阅读有关审计的更多信息

https://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_4007.htm#SQLRF01107

您在 DBA_OBJECTS ( ALL_OBJECTS ) 中拥有的唯一字段是:

  • CREATED:创建对象的时间戳。
  • LAST_DDL_TIME 由 DDL 语句产生的对象的最后修改时间戳(包括 grants 和 revokes )。

您还可以在 DBA_DEPENDENCIES 中看到彼此之间的依赖关系(在动态 sql 调用对象时无效)。


推荐阅读