首页 > 代码库 > GG配置Oracle同步到SQLServer

GG配置Oracle同步到SQLServer

 

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的字段处抽取。