我正在编写一个实用程序来跟踪丢弃的索引或缺少索引。我了解了两个索引表,即ALL_IND_COLUMNS
和ALL_INDEXES
,它们包含与数据库中每个表关联的所有索引。我正在使用ALL_IND_COLUMNS
因为它甚至包含列名。
现在我想创建一个历史表来跟踪ALL_IND_COLUMNS
的所有更改。我原本想过写一个trigger
,这样当insert
上有delete
,update
或ALL_IND_COLUMNS
时,数据都会被插入到历史记录表中但是我听说如果我们在数据字典表上创建一个触发器就会出现性能问题。所以,我想知道在SQL或PL / SQL中是否有更好的替代方法来解决这个问题。我正在使用oracle 11g。
提前致谢。
答案 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链接