BBS.ChinaUnix.net
首页 | 新闻 | Linux | FreeBSD | AIX | Windows | 博客 | 论坛 | 存储 | 网络 | 人才 | Wiki | 资料 | 读书 | 手册 | 下载 | 空间 | 搜索
  会员: 密码: 免费注册 | 忘记密码 | 会员登录 | 搜索 | 帮助 


奥运快报: 
奥运热点:
 

oracle10G streams 模式级复制

首页 » 论坛 » Oracle »  
[打印] [订阅] [收藏] [本帖文本页] [推荐此主题给朋友,立即获积分]
秋风No.1
光明使者




UID:185205
注册:2004-9-21
最后登录: 2008-08-29
帖子:704
精华:1

可用积分:658 (稍有积蓄)
信誉积分:105
空间积分:0 (白手起家)
专家积分:0 (本版)

状态:...离线...

[个人空间] [短信] [博客]


[推广] 顶部
1楼 发表于 2008-4-8 11:40 
oracle10G streams 模式级复制
数据库:sc_source 和 sc_dest
要求:将sc_source中的product用户下的所有对象都复制到sc_dest上去

一,准备工作:
1.1 将sc_source和sc_dest数据库都置于归档模式
1.2 如果有些表没有主键,为保证复制的准确性,需要在源数据库(sc_source)上配置辅助日志
        alter database add supplemental log data(primary key,unique) columns;
1.3 源,目标库设置一些参数
        job_queue_processes=4
        aq_tm_processes=4
        global_names=true
1.4 创建流复制的管理用户
源,目标库都需要配置
create tablespace streams_tbs datafile '/oracle/oradata/streams_tbs01.dbf' size 1024M;
create user strmadmin identified by strmadmin default tablespace streams_tbs quota unlimited on streams_tbs;
grant dba,select_catalog_role to strmadmin;

1.5 创建数据库连接
sc_source:
create database link sc_dest.net connect to strmadmin identified by strmadmin using 'sc_dest';

sc_dest:
create database link sc_source.net connect to strmadmin identified by strmadmin using 'sc_source';        
        
二,开始配置streams        

sc_source                                                                                                
-----------------------------------                     
配置捕获进程队列                                                   
begin                                                   
dbms_streams_adm.set_up_queue(                          
  queue_table => 'capture_scstab',                     
  queue_name  => 'capture_scs',                        
  queue_user  => 'strmadmin');                          
end;                                                   
/                                                      

sc_dest                                                                                                
-----------------------------------                     
配置应用进程队列                                                   
begin
dbms_streams_adm.set_up_queue(
  queue_table => 'apply_scdtab',
  queue_name  => 'apply_scd',
  queue_user  => 'strmadmin');
end;
/

sc_source
-----------------------------------
配置捕获进程
begin
dbms_streams_adm.add_schema_rules (
schema_name  => 'product',
  streams_type => 'capture',
  streams_name => 'capture_scstrm',
  queue_name  => 'capture_scs',
  include_dml => true,
  include_ddl => true,
  inclusion_rule => true);
end;
/

配置传播进程
begin
dbms_streams_adm.add_schema_propagation_rules (
  schema_name   => 'product',
  streams_name   => 'pro_source_to_dest',
  source_queue_name  => 'capture_scs',
  destination_queue_name  => 'apply_scd@sc_dest.net',
  include_dml   => true,
  include_ddl   => true,
  source_database  => 'sc_source.net');
end;
/


sc_dest
--------------------------------------------------------
配置应用进程
begin
dbms_streams_adm.add_schema_rules (
  schema_name  => 'product',
  streams_type  => 'apply',
  streams_name  => 'apply_scdtrm',
  queue_name  => 'apply_scd',
  include_dml  => true,
  include_ddl  => true,
  source_database => 'sc_source.net');
end;
/

三,数据的导出和导入
sc_source
-------------------------------------------------------------
先得到源库的scn号
select dbms_flashback.get_system_change_number() from dual;

然后把product用户的数据导出,我采用的是expdp工具,从上面得到scn号之前导出即可
expdp product/product directory=dumpdir dumpfile=product.dmp FLASHBACK_SCN=&SCN

将导出的数据文件传到目标数据库sc_dest上,开始导入
impdp product/product directory=dumpdir dumpfile=product.dmp

四,开始streams复制
sc_dest
---------------------------------------------------------------------------------------

为了使发生错误时,能让应用进程继续工作,可以做下面设置
begin
dbms_apply_adm.set_parameter (
  apply_name => 'apply_scdtrm',
  parameter => 'disable_on_error',
  value => 'N');
end;
/

在目标库上开始应用进程
begin
dbms_apply_adm.start_apply (
  apply_name => 'apply_scdtrm');
end;
/

sc_source
-------------------------------------------------------------------------------
在源库上开始捕获进程
begin
dbms_capture_adm.start_capture (
  capture_name => 'capture_scstrm');
end;
/


五,停止方法和删除方法

exec dbms_capture_adm.stop_capture('capture_scstrm')    ---停止捕获进程
exec dbms_capture_adm.drop_capture('capture_scstrm')        ---删除捕获进程

exec dbms_propagation_adm.stop_propagation('pro_source_to_dest')          ---停止传播进程  
exec dbms_propagation_adm.drop_propagation('pro_source_to_dest')        ---删除传播进程


sc_dest

exec dbms_apply_adm.stop_apply('apply_scdtrm')                ---停止应用进程
exec dbms_apply_adm.drop_apply('apply_scdtrm')          ---删除应用进程
   
做完了以上工作,即可以执行下面的操作删除streams配置了
exec dbms_streams_adm.remove_streams_configuration



您对本贴的看法:鲜花[0] 臭蛋[0]
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
phlipd   帅哥
侠客




UID:239592
注册:2005-3-16
最后登录: 2008-08-15
帖子:27
精华:0

可用积分:37 (白手起家)
信誉积分:100
空间积分:0 (白手起家)
专家积分:0 (本版)

状态:...离线...

[个人空间] [短信] [博客]


[推广] 顶部
2楼 发表于 2008-4-8 16:03 
回复 #1 秋风No.1 的帖子

不错,学习了:)



您对本贴的看法:鲜花[0] 臭蛋[0]
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
susbin
天使




UID:411806
注册:2006-5-2
最后登录: 2008-08-18
帖子:1323
精华:2

可用积分:1397 (家境小康)
信誉积分:100
空间积分:0 (白手起家)
专家积分:0 (本版)

状态:...保密...

[个人空间] [短信] [博客]


[推广] 顶部
3楼 发表于 2008-6-17 22:37 
回复 #1 秋风No.1 的帖子

楼主辛苦了。    要认真学习一下。

这里也有一篇:

如何正确的配置Oracle Stream
http://bbs.tech.ccidnet.com/simple/index.php?t580593.html



您对本贴的看法:鲜花[0] 臭蛋[0]
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘

首页 » 论坛 » Oracle »


 


Copyright © 2001-2008 ChinaUnix.net All Rights Reserved     联系我们:

感谢所有关心和支持过ChinaUnix的朋友们    转载本站内容请注明原作者名及出处

京ICP证041476号


清除 Cookies - ChinaUnix - Archiver - WAP - TOP

Processed in 0.051650 second(s), 4 queries , Gzip enabled