我必须承认,这让我在生产系统中感到惊讶。我最近在几个表中添加了补充日志记录,以便与Oracle Change Data Capture一起使用。在不相关的代码构建期间的例行检查显示,这显然在类型为“S”的数据库中创建了禁用约束。我似乎无法在Oracle文档中找到任何对此的引用,单个“S”使得Google难以获得相关内容。
我的问题:
答案 0 :(得分:3)
记录约束类型:http://download.oracle.com/docs/cd/E11882_01/server.112/e10820/statviews_1045.htm#REFRN20047
S代表“补充日志记录”,在此处进一步说明:http://download.oracle.com/docs/cd/E11882_01/server.112/e10704/strms_glossary.htm#CHDIHHGA和此处:http://download.oracle.com/docs/cd/E11882_01/server.112/e10705/prep_rep.htm#STREP107
我对此没有任何经验。这是在tahiti.oracle.com上搜索的结果。
此致 罗布。
答案 1 :(得分:3)
支持某些类型的异步数据捕获需要补充日志记录:例如AQ Streams和CDC(Oracle和第三方的实现)。这些机制通过读取重做日志并将这些更改应用于其他Oracle数据库来工作。补充日志记录的目的是增加重做日志中包含的数据量。
启用补充日志记录有两种方法。在更新版本的数据库中,我们可以在数据库级别设置最少的日志记录
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
另外,我们可以在Supplemental Log Groups中添加指定表和列。其重点是在更改表中包含未更改列的值,因为它可以更轻松地在目标数据库中应用更改。 Find out more
显然,S类型约束标识补充日志组中的列。我认为它们被禁用的原因是因为它们不强制执行数据完整性规则(与主键或检查约束不同)。如果是这样,我认为启用它们是不明智的,因此您应该重新编写自动清理以过滤S类型的约束。