Windows 2003 Server , Oracle10.2.0.4
由于rowid (虚列) 是定位Oracle中具体数据的物理存储位置,是物理地址,由于在逻辑Standby 采用SQL Apply 方式(而不是数据块block直接更新同步方式) 进行数据同步, Standby 数据库里rowid可能不等于Primary 数据库里的rowid,所以必须采取一些机制来保证在Primary DB里所更新的行能够对应到Logical Standby 里相应的行。
http://download.oracle.com/docs/cd/B19306_01/server.102/b14239/create_ls.htm#i76902
添加一个disabled的主键类型的rely的限制(disabled primary key rely constraint)
如果应用程序确保表里的行是唯一标识的,你可以在表上创建一个disabled主键类型的rely的限制:
SQL>alter table mytab add primary key(id,name) rely disable;
rely constraint告诉系统确保了所有的行都是唯一的。如果rely constraint所指定的列没有唯一,则在逻辑备用数据库应用SQL时将会失败。最好添加主键或唯一索引,这样在逻辑备用数据库应用SQL语句时也会速度快些。可见,一般是不建议使用rely disabled 来进行限制的,而最好是添加主键或唯一索引。
supplemental logging在重做日志里添加了唯一标识行的信息。主键或唯一索引存在与否,能够影响追加的日志(supplemental logging):
a、如果表有主键或唯一索引,则在supplemental logging的时候,向重做日志添加的信息是最少的。
b、如果表没有主键或唯一索引,supplemental logging会自动在重做日志里记录所有字段的值。
如何启用supplemental logging
在主数据库上,执行下面语句以便将主键和唯一索引信息添加到归档日志里:
SQL> alter database add supplemental log data(primary key,unique index) columns; 如果想删除,使用drop .
该语句在主数据库中向重做日志添加了唯一标识行的信息,从而日志应用服务可以在备用数据库里正确的标识相同的行了。
备注: Oracle中定义PK与Unique Index 区别是 not null , 在Oracle中唯一索引中的null数值被视为不同 ,PK不允许有null 值。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-591147/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/35489/viewspace-591147/
本文介绍了在Oracle数据库中配置逻辑备用数据库的关键步骤。为确保主数据库与备用数据库间的数据一致性,文章详细阐述了通过添加禁用状态的主键依赖约束、启用补充日志记录等方法的重要性。
10万+

被折叠的 条评论
为什么被折叠?



