如何在ALL_IND_COLUMNS上创建历史表或审计表?

时间:2015-03-27 09:52:06

标签: sql oracle version-control plsql

我正在编写一个实用程序来跟踪丢弃的索引或缺少索引。我了解了两个索引表,即ALL_IND_COLUMNSALL_INDEXES,它们包含与数据库中每个表关联的所有索引。我正在使用ALL_IND_COLUMNS因为它甚至包含列名。

现在我想创建一个历史表来跟踪ALL_IND_COLUMNS的所有更改。我原本想过写一个trigger,这样当insert上有deleteupdateALL_IND_COLUMNS时,数据都会被插入到历史记录表中但是我听说如果我们在数据字典表上创建一个触发器就会出现性能问题。所以,我想知道在SQL或PL / SQL中是否有更好的替代方法来解决这个问题。我正在使用oracle 11g。

提前致谢。

1 个答案:

答案 0 :(得分:1)

索引 意味着经常创建删除。即使您经常进行更改,您也应该能够使用source code version control跟踪更改。

VERSION CONTROL 有许多工具可用。您应该为数据库对象安装和创建所需的标记和分支。对数据库对象的任何修改都应该通过数据库版本控制。

例如,您用于create/drop the indexes的脚本应位于 INDEXES 下的版本控制中。

  • 将存储库中的代码/脚本签出到本地目录
  • 进行必要的修改
  • 在本地测试
  • 使用所需说明检入您的更改

我个人使用 Subversion 作为database version control

有关详情,请参阅此链接Using Source Code Control in Oracle SQL Developer

阅读有关Revision control, also known as version control and source control

的此Wiki链接