欢迎进入oracle社区论坛,与200万技术人员互动交流 >>进入 gg配置oracle同步到sqlserver 源端目标端准备一张测试用的表。 oracle源端: drop table ggmgr.t1; create table ggmgr.t1( id int primary key, name varchar2(50), time date); sqlserver目
欢迎进入oracle社区论坛,与200万技术人员互动交流 >>进入
gg配置oracle同步到sqlserver
源端目标端准备一张测试用的表。 oracle源端: drop table ggmgr.t1; create table ggmgr.t1( id int primary key, name varchar2(50), time date);
sqlserver目标端: begin transaction set quoted_identifier on set arithabort on set numeric_roundabort off set concat_null_yields_null on set ansi_nulls on set ansi_padding on set ansi_warnings on commit begin transaction go create table dbo.table_1 ( id numeric(18, 0) not null, name nvarchar(40) null, time date null ) on [primary] go alter table dbo.table_1 add constraint pk_table_1 primary key clustered ( id ) with( statistics_norecompute = off, ignore_dup_key = off, allow_row_locks = on, allow_page_locks = on) on [primary] go alter table dbo.table_1 set (lock_escalation = table) go commit
在线持续同步表
oracle端(配置extract进程) dblogin userid ggmgr,password oracle add trandata test.n
edit param e_erp extract e_erp userid ggmgr,password oracle setenv(oracle_sid=orcl) exttrail ./dirdat/dd table ggmgr.t1;
添加extract进程 add extract e_erp,tranlog,begin now 创建本地trail文件(并不是物理上真的创建),这个e_erp要之前就按这个名称添加了extract进程。 add exttrail ./dirdat/dd, extract e_erp
配置data pump进程 edit params d_erp extract d_erp userid ggmgr,password oracle rmthost 10.60.17.48,mgrport 7809 rmttrail d:\gg\dirdat\dd table ggmgr.t1;
add extract d_erp, exttrailsource /home/ora/gg/dirdat/dd add rmttrail d:\gg\dirdat\dd, extract d_erp
sqlserver端(配置replicat进程)
传送defgen工具定义文件
在sqlserve目标端,配置globals文件,指定用某个checkpoint表 /ggsci edit params ./globals checkpointtable master.dbo.gg_checkpoint_tab
globals文件必须在在$ggs_home目录下,即软件根目录下,如果已经存在一个,可以先move走它。
为目标端配置checkpoint table dblogin sourcedb mssql(这个名称,是我们定义在odbc数据源的那个代表某给sqlserver服务的描述符) add checkpointtable master.dbo.gg_checkpoint_tab
配置replicat进程 edit params r_erp replicat r_erp sourcedb mssql sourcedefs d:\gg\dirdef\defgen.def reperror default,discard discardfile ./dirrpt/r_erp.dsc,append,megabytes 50 map ggmgr.t1, target fwy.dbo.t1;
discardfile参数推荐用这个参数,对于数据库拒绝的数据,会反映到这个文件中
增加replicat进程 add replicat r_erp, exttrail d:\gg\dirdat\dd
然后用defgen工具,将表定义传送到目标端
源端跑起来 start e_bom start d_bom 目标端 start replicat r_bom view report r_erp
如果想过滤某些列,什么都不用做。例如源端有7个字段,目标端有6个,同名字段自动匹配,没的会自动去掉。但如果字段名有些一样,有些不同呢? map ggmgr.t3, target fwy.dbo.t3, colmap ( usedefaults, --意味着字段名相同就用默认的复制 target_col = source_col); --目标表字段名是target_col,从源端的字段名是source_col的字段处抽取。