stream replication 与 supplemental log 的疑问

[复制链接]
查看11 | 回复6 | 2010-10-8 09:34:02 | 显示全部楼层 |阅读模式
在配置stream replication时,要求参与复制的表增加supplemental log ,
alter table scott.dept add supplemental log group log_group_dept_pk (id) always;
那位可以解释一下它的具体作用?
回复

使用道具 举报

千问 | 2010-10-8 09:34:02 | 显示全部楼层
http://xzh2000.itpub.net/post/96/23968
回复

使用道具 举报

千问 | 2010-10-8 09:34:02 | 显示全部楼层
看了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]
回复

使用道具 举报

千问 | 2010-10-8 09:34:02 | 显示全部楼层
最初由 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]

是这样的,您从实验中可以测试出来吗?
回复

使用道具 举报

千问 | 2010-10-8 09:34:02 | 显示全部楼层
最初由 jylsj21 发布
[B]进一步思考:
在stream replication 环境中,如果源数据库删除了旧的数据,目标数据库保存着旧的数据,当源数据库的一个更新只用到了表的复合主键的一部分, 目标数据库的apply process 要利用这些额外的信息来保证更新数据的唯一性,不会对目标数据库中符合条件但源数据库中不存在的旧数据产生影响,对吗?[/B] [/B]

这个观点测不了.
在stream replication 环境中如果源数据库不设置supplemental log ,
目标数据库的apply process会出现"no data found"的错误.
回复

使用道具 举报

千问 | 2010-10-8 09:34:02 | 显示全部楼层
最初由 jylsj21 发布
[B]
这个观点测不了.
在stream replication 环境中如果源数据库不设置supplemental log ,
目标数据库的apply process会出现"no data found"的错误. [/B]

那就是啦,因为可能会扩大目标库上的更新范围,
所以stream返回一个异常...



回复

使用道具 举报

千问 | 2010-10-8 09:34:02 | 显示全部楼层
明白了,谢谢xzh2000
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行