- 最后登录
- 2017-5-4
- 在线时间
- 81 小时
- 威望
- 999
- 金钱
- 2391
- 注册时间
- 2013-9-11
- 阅读权限
- 150
- 帖子
- 1124
- 精华
- 5
- 积分
- 999
- UID
- 1220
|
1#
发表于 2013-10-11 23:12:34
|
查看: 9054 |
回复: 0
Oracle GOLDENGATE OGG for SQL Server 安装配置步骤
1. 源端软件安装
a) 必须使用具备administrator权限的用户安装和配置OGG;
b) 可以在任意位置建立OGG软件安装目录,例如d:\OGG。但所在磁盘必须有一定的空间,例如几个G到几十个G。
c) 使用管理员用户通过ftp等方式上传OGG软件并解压缩.
d) (可选,生产系统建议,测试系统不用)可以在根目录 下执行install addservice将OGG安装成为一个windows的服务。
2. 源端数据库配置
1) 对于Windows系统上要安装OGG首先在源端要安装Microsoft Visual C ++ 2005 SP1 Redistributable Package,可以在微软的网站上下载。
2) GoldenGate 的抽取进程和复制进程均通过ODBC(Open Database Connectivity)连接到SQL Server数据库,因此对数据库及软件进行配置之前应对ODBC进行相应的设置:
a) 打开控制面板,选择性能维护->管理工具->数据源(ODBC);
b) 选择系统DSN,添加SQL Server数据源名称OGG,选择合适的驱动;
SQL Server 2000: SQL Server driver
SQL Server 2005: SQL Native Client driver
SQL Server 2008: SQL Server Native Client 10.0 driver
c) 对新建SQL Server数据源进行设置,包括数据源名称,描述,及链接的SQL Server服务器;
d) 选择登陆方式,输入用户名,密码;
e) 更改默认数据库;
f) 进行连接测试;
g) 完成对SQL Server DSN的设置。
3) 在源端OGG命令行模式下为数据库表添加trandata
a) GGSCI>DBLOGIN SOURCEDB <DSN>, [USERID xxxxx, PASSWORD xxx]
注:SQL Server可以采用操作系统级认证或者数据库级认证,如果是操作系统级用户无需在此(包括extract/replicat参数中所有登录数据库的地方)写入userid/password,如果是数据库级登录则必须写入这两个参数。
b) GGSCI>ADD TRANDATA <owner>.<table>
4) 如果是sql server20005/2008,并且OGG之外没有其它应用使用sql server的复制功能,需要OGG来维护数据库日志的第二个截断点,需启用extract里面的MANAGESECONDARYTRUNCATIONPOINT参数。并且,对于SQL Server 2005 pre-CU6 forSP2, 必须stop and disable the Log Reader Agent job:
1. In SQL Server Management Studio, connect to the SQL Server 2005 instance.
2. Start SQL Server Agent (if not running).
3. Expand the SQL Server Agent folder.
4. Expand the Jobs folder.
5. Find the job that was created by the ADD TRANDATA command. The name shows the
server, the instance, and the database name, plus the number of the publication. It
looks similar to the following:
KTANCO\SQL2005-SQLLBE_SRC-1
6. Right click the job, and then select Stop Job.
7. Right click the job again, and then select Disable.
5) 将数据库设置为recovery model,进行全库备份
a) 启动SQL Server企业管理器;
b) 右键单击数据库名称,选择属性选项;
c) 选择option标签,在recovery(故障还原)下选择full(完全)模式;
d) 右键单击数据库名称,选择all task(所有任务),backup database备份数据库;
e) 在备份数据库窗口中,选择数据库完全模式,指定备份路径及备份文件名称,进行全库备份。
3. 生成源端的表定义文件
a) 在安装目录的dirprm下编辑defgen.prm,修改为所要复制的表。
defsfile ./ dirdef/mssql.def,purge
sourcedb OGGdb,userid OGG,password OGG
table dbo.tcustmer;
b) 在根目录下生成表定义文件,:
./defgen parameterfile ./dirprm/defgen.prm
c) 将生成的表定义文件(本例中是mssql.def)传输到目标端的OGG/dirdef下面,以备目标的replicat使用。
4. 创建子目录,上传参数文件
d) 在安装目录下运行OGG命令行控制界面:
./Ggsci
e) 在OGG命令行界面下创建子目录:
GGSCI> create subdirs
f) 通过ftp上传参数文件mgr, ext*, dpe*到dirprm文件夹中,手工通过edit param <进程名>编辑也可。
5. 配置GOLDENGATE 相关进程
a) 配置mgr进程
GGSCI>edit param mgr
port 7809
--AUTORESTART ER *, RETRIES 3, WAITMINUTES 2, RESETMINUTES 60
--PURGEOLDEXTRACTS ./dirdat/*, USECHECKPOINTS, MINKEEPDAYS 7
GGSCI>start mgr
Manager started.
b) 配置源端抽取进程
(注:从此步骤起,请定义自己的extract/data pump/replicat名称,以及exttrail和rmttrail名称。建议抽取日志的进程以extXX命名,在网络上传输数据的data pump进程以dpeXX格式命名,replicat以repXX格式命名;本地队列以./dirdat/tX命名,远程队列以./dirdat/rX命名。)
GGSCI>add ext extXX, tranlog, begin now
EXTRACT added.
GGSCI>add exttrail ./dirdat/tX, ext extXX, megabytes 50
EXTTRAIL added.
GGSCI>edit param extXX
extract extXX
sourcedb oggtest , userid sa ,password xxxx
TRANLOGOPTIONS MANAGESECONDARYTRUNCATIONPOINT
exttrail ./dirdat/tX
table dbo.custcardinfo1;
GGSCI>add ext dpeXX, exttrailsource ./dirdat/tX
EXTRACT added.
GGSCI>add rmttrail ./dirdat/rX, ext dpeXX, megabytes 50
RMTTRAIL added.
GGSCI>edit param dpeXX
extract dpeXX
passthru
rmthost 10.31.16.189,mgrport 7809
rmttrail ./dirdat/rX
dynamicresolution
table dbo.custcardinfo1;
6. 启动源端进程
a) 启动源端抓取进程:
GGSCI>start er *
b) 查看源端进程状态:
GGSCI>info er *
RUNNING
RUNNING
注:若目标端mgr进程未启动,则该步骤无法启动dpe*进程,需等目标端mgr进程启动后再启动。
7. 配置Oracle数据库的目标进程
a) 首先需要完成目标库的初始化和表结构调整。
i. 初始化可以通过透明网关等任意可行方法将sql server的历史数据导入到Oracle;
ii. Oracle数据库中的表结构应该与sql server一致,所有数据类型替换为Oracle的对应类型。
iii. 在目标表需加入以下字段:
from_branch varchar(30), //please add this column to PK
trans_id varchar(30),
commit_timestamp date,
commit_csn varchar(30),
last_op_flag char(1), //"I" for insert, "U" for update, "D" for delete.
last_time date, //表示该记录在目标端最后更新的时间,增量标识
iv. 修改主键,将from_branch字段加入到到原来的主键中去。
b) 配置目标端投递进程:
GGSCI>add rep repxx, exttrail ./dirdat/rX, nodbcheckpoint
c) 配置目标参数(不同来源的不同from_branch,本例以BJ表示北京为例):
replicat reptest
USERID goldengate, PASSWORD goldengate
--SETENV (NLS_LANG = "AMERICAN_AMERICA.ZHS16GBK")
SETENV (NLS_LANG = "SIMPLIFIED CHINESE_CHINA.ZHS16GBK")
--reperror default,discard
discardfile ./dirrpt/rep1.dsc,append
SOURCEDEFS ./dirdef/mssql.def //对于sql server到oracle需要使用sourcedefs
ALLOWDUPTARGETMAP
getinserts
ignoreupdates
ignoredeletes
--HANDLECOLLISIONS
map dbo.custcardinfo1, target system.custcardinfo2, &
COLMAP ( usedefaults , &
from_branch = "BJ", &
trans_id = @GETENV ("TRANSACTION", "TRANSACTIONID"), &
commit_timestamp = @GETENV ("GGHEADER", "COMMITTIMESTAMP"), &
commit_csn = @GETENV ("TRANSACTION", "CSN") , &
last_op_flag = "I" ,
last_time = @DATENOW ( )
) ,handlecollisions ;
--, keycols ( myid, from_branch );
--NOHANDLECOLLISIONS
ignoreinserts
getupdates
ignoredeletes
map dbo.custcardinfo1, target system.custcardinfo2, &
COLMAP ( usedefaults , &
from_branch = "BJ", &
trans_id = @GETENV ("TRANSACTION", "TRANSACTIONID"), &
commit_timestamp = @GETENV ("GGHEADER", "COMMITTIMESTAMP"), &
commit_csn = @GETENV ("TRANSACTION", "CSN") , &
last_op_flag = "U",
last_time = @DATENOW ( )
) ;
ignoreinserts
ignoreupdates
getdeletes
UPDATEDELETES
map dbo.custcardinfo1, target system.custcardinfo2, &
COLMAP ( usedefaults , &
from_branch = "BJ", &
trans_id = @GETENV ("TRANSACTION", "TRANSACTIONID"), &
commit_timestamp = @GETENV ("GGHEADER", "COMMITTIMESTAMP"), &
commit_csn = @GETENV ("TRANSACTION", "CSN") , &
last_op_flag = "D" ,
last_time = @DATENOW ( )
) ;
d) 启动目标端投递进程:
GGSCI>start repXX
观察数据是否正确复制到目标端。
|
|