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