首页 > 解决方案 > oracle 用户最近一个月的 DDL 变化

问题描述

我想知道在 oracle 中的特定日期之后特定用户的 ddl(例如在表中添加列)更改?一种策略是查询“user_objects”表。有没有其他方法可以做到这一点?

我还可以找出在特定日期之后所做的 ddl(例如在表中添加的列名)更改吗?

版本 - Oracle Database 12c 标准版版本 12.1.0.2.0 - 64 位生产

标签: oracleoracle12cddl

解决方案


在指定日期或之前审核 DDL 报表。使用 DDL 触发器捕获 DDL 语句。使用源代码控制和构建管理系统来跟踪更改历史。或者,如果您碰巧拥有自指定日期以来的所有归档日志,则费力地检查它们以查找 DDL 语句(如果指定的日期不是最近的,这将不是一个有趣的练习)。

否则,不行。你当然可以看看last_ddl_timein user_objects。但是有些 DDL 语句不会更改(GRANT例如 DDL 语句,当依赖对象上有 DDL 时,PL/SQL 对象会自动重新编译,等等)会更新last_ddl_time而不是大多数人认为的更改。除非您启用审核,否则数据字典将无法告诉您是什么 DDL 导致了last_ddl_time更改,因此您将不知道它是否是您认为的更改,是否有多个更改,或者这些更改是什么是。如果您很幸运,您的新列有一个索引,您可以通过查看关联索引的创建日期来推断它是何时添加的。


推荐阅读