说明
源端和目标端都是运行在Centos7上的Oracle11
准备工作
1.安装好Oracle 11 g
2.下载goldengate
网址1:http://www.oracle.com/technetwork/middleware/goldengate/downloads/index.html
网址2:edelivery.oracle.com
3.下载goldengate后解压,我解压到/home/oracle/goldengate11.2.1.0.3/ogg
打开数据库最小附加日志
SQL>select supplemental_log_data_min from v$database;
结果为NO,表示没有打开附加日志。使用以下命令将数据库附加日志打开:
SQL>alter database add supplemental log data;
切换日志以使附加日志生效:
SQL>ALTER SYSTEM ARCHIVE LOG CURRENT;
源库的准备
建立OGG数据库用户
– OGG需要从数据字典读取表结构
– 如Oracle日志中没有足够信息,则需通过flash back或者直接读取数据库记录(例如,
CLOB/BLOG/BINARY等)
OGG数据库用户权限
– CREATE USER goldengate IDENTIFIED BY goldengate DEFAULT TABLESPACE
USERS ;
– GRANT CONNECT TO goldengate;
– GRANT CREATE SESSION TO goldengate;
– GRANT ALTER SESSION TO goldengate;
– GRANT RESOURCE TO goldengate;
– GRANT SELECT ANY DICTIONARY TO goldengate;
– GRANT SELECT ANY TABLE TO goldengate;
– GRANT FLASHBACK ANY TABLE TO goldengate;
– GRANT ALTER ANY TABLE TO goldengate;
操作goldengate
1.进入安装goldengate的目录下,执行./ggsci
进入入命令行界面,左侧提示出现GGSCI (myhost) 1>
,表示进入成功。
注意:一定要在goldengate安装目录下执行./ggsci
,因为它要调用安装目录下的一些其它文件内容,否则可能执行不成功。
2.如果ggsci进入出错,设置一下环境变量:
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
3.在ggsci环境下创建GoldenGate子目录
GGSCI>create subdirs
该命令会在OGG安装目录下建立若干子目录,其中几个主要目录如下所示:
dirchk:用于存放各个进程的检查点
dirdat:用于存放数据队列文件
dirprm:用于存放各进程参数文件
dirrpt:用于存放各进程报告
dirpcs:存放各个正在运行的进程信息
4.为mgr进程配置参数
GGSCI>edit param mgr
会打开一个编辑窗口,在其中输入以下内容然后保存退出。
PORT 7809
5.启动mgr进程
GGSCI>start mgr
用info all查看是否启动成功
6.在GGSCI命令行中登录数据库,为所有要复制的数据表添加trandata
ggsci>dblogin userid goldengate, password goldengate的密码
ggsci>add trandata 要复制的用户名.要复制的表名
比如add trandata guapi.employee
7.添加exta进程,从数据库日志中抓取有效数据
GGSCI> add ext exta, tranlog, begin now
exta为进程名,一般为ext开头表示是extract进程,后面可以加1-2位字符标识;
tranlog表示要抽取数据库日志;
begin now表示从当前时间点开始抽取
8.如果是异地复制或者网络不稳定,建议首先抽取到本地,然后再单独配一个进程传输到目标。
创建完exta进程后,使用本地队列时为exta进程配置队列如下:
GGSCI> add exttrail /home/oracle/goldengate11.2.1.0.3/ogg/dirdat/la, ext exta, MEGABYTES 20
由于此时exta复制到了本地,还需要配置一个传输进程负责将数据原封不动的搬运到目标端:
GGSCI> add extract dpea, EXTTRAILSOURCE /home/oracle/goldengate11.2.1.0.3/ogg/dirdat/la
注意此时exttrail指定的是本地队列位置。
然后为该传输进程配置远程队列:
GGSCI> add rmttrail /home/oracle/goldengate11.2.1.0.3/ogg/dirdat/ra, ext dpea, MEGABYTES 20
其中队列位置是在目标主机上的位置
PS:上方路径的前缀/home/oracle/goldengate11.2.1.0.3/ogg
换成自己goldengate的安装目录
9.GGSCI>edit param exta
添加:
EXTRACT exta
setenv ( NLS_LANG = AMERICAN_AMERICA.AL32UTF8 )
setenv (ORACLE_SID = orcl)
USERID goldengate, PASSWORD goldengate的密码
EXTTRAIL /home/oracle/goldengate11.2.1.0.3/ogg/dirdat/la
dynamicresolution
table 要复制的用户名.该用户下的要复制的表名;
(如table guapi.employee;)
10.使用了data pump,还需要配置data pump进程dpea
GGSCI>edit param dpea
添加:
extract dpea
setenv ( NLS_LANG = AMERICAN_AMERICA.AL32UTF8 )
passthru
rmthost 目标库的ip地址,mgrport 7809, compress
rmttrail /home/oracle/goldengate11.2.1.0.3/ogg/dirdat/ra
dynamicresolution
(目标库的路径前缀不一定是/home/oracle/goldengate11.2.1.0.3/ogg)
table 要复制的用户名.该用户下的要复制的表名;
(如table guapi.employee;)
TABLE hq.acct;
其中:passthru表示本进程是一个传输进程data pump,无需跟数据库交互,只需要搬运数据即可;
因为data pump要传输数据到目标,所以需要配置rmthost和rmttrail指定目标主机和队列信息
11.启动源端所有进程
注:此时应当保证目标端mgr已经启动,否则可能dpea进程无法启动。
GGSCI>start ext *
表示启动所有的extract进程。
也可以使用start直接加进程名,如 start dpea
分别启动各个进程。
可以通过info all
查看各进程状态,正常启动后应当是running状态。
目标库的准备
1.打开数据库最小附加日志
SQL>select supplemental_log_data_min from v$database;
结果为NO,表示没有打开附加日志。使用以下命令将数据库附加日志打开:
SQL>alter database add supplemental log data;
切换日志以使附加日志生效:
SQL>ALTER SYSTEM ARCHIVE LOG CURRENT;
2.建立OGG数据库用户
– 通过sql将数据写入数据库
OGG目标数据库用户权限
– CREATE USER goldengate IDENTIFIED BY 密码 DEFAULT TABLESPACE USERS ;
– GRANT ALTER SESSION TO goldengate;
– GRANT CREATE SESSION TO goldengate;
– GRANT CONNECT TO goldengate;
– GRANT RESOURCE TO goldengate;
– GRANT SELECT ANY DICTIONARY TO goldengate;
– GRANT SELECT ANY TABLE TO goldengate;
– GRANT FLASHBACK ANY TABLE TO goldengate;
– GRANT INSERT ANY TABLE TO goldengate;
– GRANT UPDATE ANY TABLE TO goldengate;
– GRANT DELETE ANY TABLE TO goldengate;
3.进入安装goldengate的目录下,执行./ggsci
进入入命令行界面,左侧提示出现GGSCI (myhost) 1>
,表示进入成功。
注意:一定要在goldengate安装目录下执行./ggsci
,因为它要调用安装目录下的一些其它文件内容,否则可能执行不成功。
4.如果ggsci进入出错,设置一下环境变量:
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
5.在ggsci环境下创建GoldenGate子目录
GGSCI>create subdirs
该命令会在OGG安装目录下建立若干子目录,其中几个主要目录如下所示:
dirchk:用于存放各个进程的检查点
dirdat:用于存放数据队列文件
dirprm:用于存放各进程参数文件
dirrpt:用于存放各进程报告
dirpcs:存放各个正在运行的进程信息
6.为mgr进程配置参数
GGSCI>edit param mgr
会打开一个编辑窗口,在其中输入以下内容然后保存退出。
PORT 7809
7.启动mgr进程
GGSCI>start mgr
用info all查看是否启动成功
8.添加repa进程,将队列中的数据应用到目标库
GGSCI> add rep repa, exttrail /home/oracle/goldengate11.2.1.0.3/ogg/dirdat/ra, nodbcheckpoint
repa为进程名,一般为rep开头表示是replicat进程,后面可以加1-2位字符标识,一般与ext进程对应;
exttrail表示要抽取的数据队列,注意是目标端的队列位置;
nodbcheckpoint表示不使用数据库检查点。
9.GGSCI>edit param repa
添加:
replicat repa
setenv (NLS_LANG = AMERICAN_AMERICA.AL32UTF8)
setenv (ORACLE_SID = orcl)
userid goldengate, password goldengate密码
reperror default,abend
discardfile /home/oracle/goldengate11.2.1.0.3/ogg/dirrpt/repa.dsc,append, megabytes 10
assumetargetdefs
--allownoopupdates
dynamicresolution
map guapi.employee, target guapi.employee;
10.启动目标端投递进程
GGSCI>start rep *
表示启动所有的replicat进程。
也可以使用start直接加进程名,如 start repa
分别启动各个进程。
可以通过info all
查看各进程状态,正常启动后应当是running状态。
检查是否成功
1.可以通过在源端对应的用户下的对应的表进行增删改查,然后commit,然后在目标端的数据库查看是否有同步。
2.也可以在源端的gssci窗口中输入stats dpea
查看,目标端是stats repa