oracle - oracle 用户最近一个月的 DDL 变化
问题描述
我想知道在 oracle 中的特定日期之后特定用户的 ddl(例如在表中添加列)更改?一种策略是查询“user_objects”表。有没有其他方法可以做到这一点?
我还可以找出在特定日期之后所做的 ddl(例如在表中添加的列名)更改吗?
版本 - Oracle Database 12c 标准版版本 12.1.0.2.0 - 64 位生产
解决方案
在指定日期或之前审核 DDL 报表。使用 DDL 触发器捕获 DDL 语句。使用源代码控制和构建管理系统来跟踪更改历史。或者,如果您碰巧拥有自指定日期以来的所有归档日志,则费力地检查它们以查找 DDL 语句(如果指定的日期不是最近的,这将不是一个有趣的练习)。
否则,不行。你当然可以看看last_ddl_time
in user_objects
。但是有些 DDL 语句不会更改(GRANT
例如 DDL 语句,当依赖对象上有 DDL 时,PL/SQL 对象会自动重新编译,等等)会更新last_ddl_time
而不是大多数人认为的更改。除非您启用审核,否则数据字典将无法告诉您是什么 DDL 导致了last_ddl_time
更改,因此您将不知道它是否是您认为的更改,是否有多个更改,或者这些更改是什么是。如果您很幸运,您的新列有一个索引,您可以通过查看关联索引的创建日期来推断它是何时添加的。
推荐阅读
- python - TypeError 使用 timedelta,不能求和时间
- django - 在序列化程序实例上没有字段的情况下将字段添加到 Django REST
- jquery - 在更短的时间内渲染 jquery 数据表中的 mongo 集合数据
- python - Python 和 SQL Server - 如何在具有变量的多个列中进行选择?
- ios - withUnsafeMutableBytes' 已弃用 xcode 警告
- c# - 实体框架返回延迟加载查询并以另一种方法应用过滤器
- javascript - CSS 渲染后的自定义元素中是否有回调?
- c - 反转后如何正确打印子字符串
- regex - 正则表达式:匹配两个字符串之间的所有字符
- firebase - 按文档 ID 对集合 Firestore 中的文档进行排序