最初由 jylsj21 发布
[B]看了xzh2000的文章,做了试验:
CONNECT scott/tiger@DBA1;
[B]Create test table:[/B]
create table TTT
(
TNO1 NUMBER not null,
TNO2 NUMBER not null,
TNO3 NUMBER
);
alter table TTT add constraint TT_PK primary key (TNO1, TNO2);
[B]Add database supplement log:[/B]
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY,UNIQUE INDEX,FOREIGN KEY) COLUMNS;
update SCOTT.TTT set TNO2 = '55', TNO3 = '55' where TNO2 = '4';
[B]redo log information:[/B]
update SCOTT.TTT set TNO2 = '55', TNO3 = '55' where
TNO1 = '4' and [/COLOR]
TNO2 = '4' and TNO3 = '4' and ROWID = 'AAAHg4AABAAAMiyAAC';
[B]Drop database supplement log:[/B]
ALTER DATABASE DROP SUPPLEMENTAL LOG DATA;
update SCOTT.TTT set TNO2 = '55', TNO3 = '55' where TNO2 = '4';
[B]redo log information:[/B]
update SCOTT.TTT set TNO2 = '55', TNO3 = '55' where
TNO2 = '4' and TNO3 = '4' and ROWID = 'AAAHg4AABAAAMiyAAC';
[B]So,supplemental logging places primary key,foreign key,unique index column into where condition in redo log file?[/B]
[B]进一步思考:
在stream replication 环境中,如果源数据库删除了旧的数据,目标数据库保存着旧的数据,当源数据库的一个更新只用到了表的复合主键的一部分, 目标数据库的apply process 要利用这些额外的信息来保证更新数据的唯一性,不会对目标数据库中符合条件但源数据库中不存在的旧数据产生影响,对吗?[/B] [/B]
是这样的,您从实验中可以测试出来吗?
|