oracle goldgate 支付宝测试配置脚本内部资料.docx
《oracle goldgate 支付宝测试配置脚本内部资料.docx》由会员分享,可在线阅读,更多相关《oracle goldgate 支付宝测试配置脚本内部资料.docx(16页珍藏版)》请在冰豆网上搜索。
![oracle goldgate 支付宝测试配置脚本内部资料.docx](https://file1.bdocx.com/fileroot1/2023-2/24/d74a0b04-cd75-4a98-ba4f-73e01c2df932/d74a0b04-cd75-4a98-ba4f-73e01c2df9321.gif)
oraclegoldgate支付宝测试配置脚本内部资料
附录
附录A:
系统准备
防火墙端口
开通源端←→目标端之间的防火墙,策略为打开目标端网络的7809到7810、7840到7850之间的端口。
在两台主机中分别安装Oracle数据库,并导入核心数据用于压力测试。
源数据库准备
1.创建GoldenGate数据库用户goldengate
CREATEUSERgoldengateIDENTIFIEDBYgoldengatedefaulttablespaceusers;
GRANTdbaTOgoldengate;
2.检查源端数据库是否为归档模式,若为非归档模式,将其改为归档模式
archiveloglist;
3.检查源端数据库附加日志是否打开
selectsupplemental_log_data_minfromv$database;
将数据库附加日志打开
alterdatabaseaddsupplementallogdata;
切换日志以使附加日志生效:
ALTERSYSTEMARCHIVELOGCURRENT;
4.如果数据库是9i版本的话检查
showparameterlog_parallelism
在9i此参数必须是1,通过如下命令设置:
altersystemsetlog_parallelistm=1scope=spfile;
重新启动数据库,使参数生效。
5.为需要复制的数据表添加TRANDATA即增加表级SupplementalLog
Shell>ggsci
GGSCI>DBLOGINUSERIDgoldengate,PASSWORDgoldengate
GGSCI>ADDTRANDATA.
对于字段数目大于32的表格,需要在SQLPLUS命令中执行如下命令:
ALTERTABLEDWTEST.TEST_TRADE_1ADDSUPPLEMENTALLOGGROUPTEST_TRADE_1_1(ID,OUT_TRADE_NO,TRADE_NO,SELLER_ACCOUNT,SELLER_LOGIN_EMAIL,SELLER_USER_ID,BUYER_ACCOUNT,BUYER_LOGIN_EMAIL,BUYER_USER_ID,SELLER_TYPE,BUYER_TYPE,TRADE_FROM,TRADE_EMAIL,OPERATOR_ROLE,TRADE_STATUS,ADDITIONAL_TRD_STATUS,TRADE_TYPE,TOTAL_FEE,SERVICE_FEE_RATIO,SERVICE_FEE)always;
ALTERTABLEDWTEST.TEST_TRADE_1ADDSUPPLEMENTALLOGGROUPTEST_TRADE_1_2(CURRENCY,SELLER_ACTION,BUYER_ACTION,GMT_CREATE,SELLER_FULLNAME,BUYER_FULLNAME,SELLER_NICK,BUYER_NICK,GOODS_TITLE,GMT_LAST_MODIFIED_DT,GATHERING_TYPE,STOP_TIMEOUT,BUYER_MARKER,SELLER_MARKER,BUYER_MARKER_MEMO,SELLER_MARKER_MEMO,CHANNEL,PRODUCT,PAY_CHANNEL)always;
目标数据库准备
创建GoldenGate数据库用户goldengate
CREATEUSERgoldengateIDENTIFIEDBYgoldengatedefaulttablespaceusers;
GRANTdbaTOgoldengate;
源与目标GoldenGate的安装准备
1.在指定位置建立GoldenGate安装目录,并确认该目录属组为oracle:
dba
2.通过ftp上传GoldenGate软件包到安装目录,并解压缩
gzip–d*.gz
tarxvf*.tar
3.在安装目录下执行./ggsci命令进入命令行界面,创建GoldenGate子目录
createsubdirs
4.在GGSCI命令行界面下编辑全局参数文件GLOBALS
editparam./GLOBALS
输入下列内容,其中goldengate为复制而建立的数据库用户:
GGSCHEMAgoldengate
5.编辑mgr进程参数
editparammgr
port7809
DYNAMICPORTLIST7840-7850
autorestarter*,retries5,waitminutes1
purgeoldextracts/tmp/goldengate/ggs/dirdat/*,usecheckpoints,minkeepdays7
6.启动Mgr进程
startmgr
Mgrisrunning!
7.目标端需要继续安装GoldengateFileAdapterforGreenplum,通过ftp上传FileAdapter软件包到安装目录,并解压缩
gzip–d*.gz
tarxvf*.tar
附录B:
场景1配置命令
1.源端添加EXTRACT进程extu1:
a)addextractextu1,tranlog,beginnow
b)editparamextu1
extractextu1
setenv(ORACLE_SID="ggdb")
useridgoldengate,passwordgoldengate
exttrail/opt/oracle/oradata/dirdat/u1
discardfile./dirrpt/extu1.dsc,append
numfiles3000
EOFDELAYCSECS10
dynamicresolution
tablescott.*;
tabledwtest.*;
c)addexttrail/tmp/goldengate/ggs/dirdat/,extractextu1,megabytes100
2.源端添加DataPump进程dmpu1:
a)addextractdmpu1,exttrailsource./dirdat/u1
b)editparamdmpu1
extractdmpu1
passthru
RMTHOST172.17.126.24,MGRPORT7809,compress
RMTTRAIL./dirdat/u1
EOFDELAYCSECS10
dynamicresolution
numfiles3000
tablescott.*;
tabledwtest.*;
c)addrmttrail./dirdat/u1,extractdmpu1,megabytes100
3.目标端添加应用进程repu1:
a)addreprepu1,./dirdat/u1nodbcheckpoint
b)editparamrepu1
replicatrepu1
useridgoldengate,passwordgoldengate
sqlexec"Altersessionsetconstraints=deferred"
batchsql
--handlecollisions
reperrordefault,abend
discardfile./dirrpt/repu1.dsc,append,megabytes100m
EOFDELAYCSECS10
assumetargetdefs
allownoopupdates
dynamicresolution
numfiles3000
MAPscott.*,TARGETscott.*;
mapscott.tb8,targetscott.tb8,colmap(h=a,i=b,j=c,k=d,l=e);
mapdwtest.*,targetscott.*;
附录C:
场景2配置命令
1.源端添加EXTRACT进程extf1:
a)addextractextf1,tranlog,beginnow,threads1
b)editparamextf1
extractextf1
setenv(ORACLE_SID="ggdb")
useridgoldengate@primarydb,passwordgoldengate
exttrail./dirdat/f1
discardfile./dirrpt/extf1.dsc,append
numfiles3000
eofdelaycsecs10
dynamicresolution
TRANLOGOPTIONSALTARCHIVELOGDEST/opt/oracle/oradata/arch/goldengate
TRANLOGOPTIONSARCHIVEDLOGONLY
TABLEDWTEST.TEST_TRADE_1;
TABLEDWTEST.TEST_TRADE_2;
TABLEDWTEST.TEST_TRADE_3;
TABLEDWTEST.TEST_TRADE_4;
c)addexttrail./dirdat/f1,extractextf1,megabytes100
2.源端添加DataPump进程dmpf1:
a)addextractdmpf1,exttrailsource./dirdat/f1
b)editparamdmpf1
extractdmpf1
passthru
RMTHOST172.17.126.24,MGRPORT7809
RMTTRAIL./dirdat/f1
TABLEDWTEST.TEST_TRADE_1;
TABLEDWTEST.TEST_TRADE_2;
TABLEDWTEST.TEST_TRADE_3;
TABLEDWTEST.TEST_TRADE_4;
c)addrmttrail./dirdat/f1,extractdmpf1,megabytes100
3.目标端添加应用进程ffw:
a)addextractffw,exttrailsource./dirdat/f1
b)editparamffw
extractffw
SETENV(GG_USEREXIT_PROPFILE="ffwriter.properties")
SOURCEDEFS./dirdef/f1.def
CUSEREXIT./flatfilewriter.soCUSEREXIT
EXTTRAIL/data1/software/goldengate/dirdat/v1
GETUPDATEBEFORES
TABLEDWTEST.TEST_TRADE_1;
TABLEDWTEST.TEST_TRADE_2;
TABLEDWTEST.TEST_TRADE_3;
TABLEDWTEST.TEST_TRADE_4;
c)addexttrail./dirdat/vf1,extractffw
最后配置Goldengate安装目录下的ffwriter.properties属性文件,控制输出数据文件的格式。
具体参数见附录E。
备注:
生成表定义文件命令(导出到文本文件需要执行,如果目标为数据库但表结构不同也需要执行)
在ggsci命令下输入如下命令“
GGSCI>Editparamdefgen
DEFSFILE./dirdat/f1.def
USERIDdwtest@primarydb,PASSWORDdwtest
TABLEDWTEST.*;
TABLESCOTT.*;
在shell命令行下执行defgen命令生成表定义文件f1.def
Shell>defgenparamfile./dirprm/defgen.prm
把生成的f1.def文件(在dirdef目录下)ftp到目标服务器Goldengate安装目录下的dirdef子目录即可。
附录D:
场景3配置命令
4.源端添加EXTRACT进程ext01:
a)addextractext01,tranlog,begin2009-12-0910:
30:
00,threads1
b)editparamext01
extractext01
useridgoldengate@primarydb,passwordgoldengate
exttrail./dirdat/e1
discardfile./dirrpt/exte1.dsc,append
numfiles3000
eofdelaycsecs10
dynamicresolution
TRANLOGOPTIONSALTARCHIVELOGDEST/opt/oracle/oradata/arch/goldengate
TRANLOGOPTIONSARCHIVEDLOGONLY
TABLEDWTEST.TEST_TRADE_5;
TABLEDWTEST.TEST_TRADE_6;
TABLEDWTEST.TEST_TRADE_7;
TABLEDWTEST.TEST_TRADE_8;
c)addexttrail./dirdat/e1,extractext01,megabytes100
5.源端添加DataPump进程dmpe1:
a)addextractdmpe1,exttrailsource./dirdat/e1
b)editparamdmpe1
REPLICATrep01
USERIDscott,PASSWORDSCOTT
sqlexec"Altersessionsetconstraints=deferred"
batchsql
reperrordefault,abend
HANDLECOLLISIONS
ASSUMETARGETDEFS
DISCARDFILE./dirrpt/rep01.DSC,PURGE
EOFDELAYCSECS10
allownoopupdates
dynamicresolution
numfiles3000
MAPDWTEST.TEST_TRADE_5,TARGETSCOTT.TEST_TRADE_5,KEYCOLS(TRADE_NO);
MAPDWTEST.TEST_TRADE_6,TARGETSCOTT.TEST_TRADE_6,KEYCOLS(TRADE_NO);
MAPDWTEST.TEST_TRADE_7,TARGETSCOTT.TEST_TRADE_7,KEYCOLS(TRADE_NO);
MAPDWTEST.TEST_TRADE_8,TARGETSCOTT.TEST_TRADE_8,KEYCOLS(TRADE_NO);
c)addrmttrail./dirdat/e1,extractdmpe1,megabytes100
6.目标端添加应用进程rep01:
a)addreplicatrep01,exttrail./dirdat/e1
b)editparamrep01
REPLICATrep01
USERIDscott,PASSWORDSCOTT
HANDLECOLLISIONS
ASSUMETARGETDEFS
DISCARDFILE./dirrpt/rep01.DSC,PURGE
MAPDWTEST.TEST_TRADE_5,TARGETSCOTT.TEST_TRADE_5,KEYCOLS(TRADE_NO);
MAPDWTEST.TEST_TRADE_6,TARGETSCOTT.TEST_TRADE_6,KEYCOLS(TRADE_NO);
MAPDWTEST.TEST_TRADE_7,TARGETSCOTT.TEST_TRADE_7,KEYCOLS(TRADE_NO);
MAPDWTEST.TEST_TRADE_8,TARGETSCOTT.TEST_TRADE_8,KEYCOLS(TRADE_NO);
附录E:
数据文件控制属性说明
GoldenGateFileAdapterforGreenplum提供了两个文件,用来生成数据文件。
其中ffwriter.properties中有多个文件格式控制属性,通过设置这些属性,即可以控制生成文件的格式。
主要属性如下:
dsvwriter.includecolnames=false
是否在字段值前放置字段名称,缺省为false
dsvwriter.files.onepertable=true
每个表格各生成一个文件,还是所有数据放入一个文件,缺省为true
dsvwriter.files.data.rootdir=./dirout
数据文件输出目录
dsvwriter.files.data.ext=_data.dsv
已就绪的数据文件扩展名
dsvwriter.files.data.tmpext=_data.dsv.temp
处理中的数据文件
dsvwriter.files.data.rollover.time=1800
数据文件由“处理中”切换为“就绪”的最大时间(秒)
dsvwriter.files.data.rollover.size=104857600
数据文件由“处理中”切换为“就绪”的最大文件尺寸(KB)
dsvwriter.files.data.norecords.timeout=1800
当无记录写入时,最多等待时间(秒)即切换数据文件为“就绪”,缺省120秒
dsvwriter.files.rolloveronshutdown=true
当本属性为true时,如果Extract进程停止,则所有空白“处理中”文件被删除,所有有数据的“处理中”文件切换为“就绪”文件。
当本属性为false时,如果Extract进程停止,则所有空白“处理中”文件被删除,所有有数据的“处理中”文件状态不变。
dsvwriter.dsv.fielddelim.chars=|
数据文件中的字段分隔符
dsvwriter.dsv.linedelim.chars=\n
数据文件中的行终结符号
dsvwriter.dsv.quotes.chars="
数据文件中的引号符号
dsvwriter.dsv.quotes.escaped.chars=""
数据文件中的escape符号
dsvwriter.metacols=opcode,timestamp
数据文件中每行数据之前的元数据:
Opcode-I,U与D代表Insert,Update和Delete
Timestamp-记录的提交时间戳
dsvwriter.metacols.opcode.insert.chars=I
数据文件中代表Insert操作的字符
dsvwriter.metacols.opcode.update.chars=U
数据文件中代表Update操作的字符
dsvwriter.metacols.opcode.delete.chars=D
数据文件中代表Delete操作的字符
dsvwriter.files.formatstring=pump_%s_%t_%d_%05n
数据文件名字格式:
%s-schema
%t-table
%d-timestamp
%05n-5位序号
附录F:
测试SQL脚本样例
创建测试表格Test_Trade_1到Test_Trade_8,表结构均相同:
CREATETABLETEST_TRADE_1
(IDNUMBER(11,0)NOTNULLENABLE,
OUT_TRADE_NOVARCHAR2(64),
TRADE_NOVARCHAR2(64)NOTNULLENABLE,
SELLER_ACCOUNTVARCHAR2(100)NOTNULLENABLE,
SELLER_LOGIN_EMAILVARCHAR2(100)NOTNULLENABLE,
SELLER_USER_IDVARCHAR2(16),
BUYER_ACCOUNTVARCHAR2(100)NOTNULLENABLE,
BUYER_LOGIN_EMAILVARCHAR2(100)NOTNULLENABLE,
BUYER_USER_IDVARCHAR2(16),
SELLER_TYPENUMBER(2,0),
BUYER_TYPENUMBER(2,0),
TRADE_FROMVARCHAR2(100),
TRADE_EMAILVARCHAR2(100),
OPERATOR_ROLECHAR
(1)NOTNULLENABLE,
TRADE_STATUSVARCHAR2(50)NOTNULLENABLE,
ADDITIONAL_TRD_STATUSVARCHAR2(50),
TRADE_TYPEVARCHAR2(4)NOTNULLENABLE,
TOTAL_FEENUMBER(15,0)DEFAULT0NOTNULLENABLE,
SERVICE_FEE_RATIONUMBER(5,3),
SERVICE_FEENUMBER(15,0)DEFAULT0NOTNULLENABLE,
CURRENCYVARCHAR2(3),
SELLER_ACTIONVARCHAR2(200),
BUYER_ACTIONVARCHAR2(200),
GMT_CREATEDATEDEFAULTSYSDATENOTNULLENABLE,
SELLER_FULLNAMEVARCHAR2(256)DEFAULT'',
BUYER_FULLNAMEVARCHAR2(256)DEFAULT'',
SELLER_NICKVARCHAR2(100)DEFAULT''NOTNULLENABLE,
BUYER_NICKVARCHAR2(100)DEFAULT''NOTNULLENABLE,
GOODS_TITLEVARCHAR2(256),
GMT_LAST_MODIFIED_DTDATE,
GATH