我可以在Oracle中检测表的DDL版本吗?

时间:2010-01-26 15:04:07

标签: oracle ddl

在Informix中,我可以从systables表中进行选择,并可以调查其版本列以查看给定表具有的数字版本。每列影响给定表的DDL语句都会增加此列。这意味着我能够查看自上次连接以来表的结构是否发生了变化。

在Oracle中有类似的方法吗?

3 个答案:

答案 0 :(得分:3)

不是真的。 Oracle DBA / ALL / USER_OBJECTS视图具有LAST_DDL_TIME列,但它受结构更改以外的操作的影响。

答案 1 :(得分:3)

您可以使用DDL触发器来执行该操作(以及更多),以跟踪对表的更改。这是一篇有趣的文章,内容为here

答案 2 :(得分:2)

如果您确实想这样做,则必须使用Oracle的审核功能来审核更改。它可以很简单:

AUDIT ALTER TABLE WHENEVER SUCCESSFUL on [schema I care about];

这至少可以捕捉成功的变化,忽略掉落和创造。不幸的是,通过挖掘审计跟踪来展开表的历史结构堆栈,这可以留给Oracle中的读者,或者授权更改管理包。

您还可以通过编写在DDL语句上调用的系统事件触发器来进行自己的审计。如果你真的想看看发生了什么变化,你最终必须编写自己的SQL解析器。