打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
goldengate_安装配置指南
goldengate_安装配置指南
2011-09-23 14:56

解压安装包(用oracle用户来做,用root会出现权限问题)
$tar -xvf xxxx.tar
$ls -l      --检查全线问题
配置环境(两边都要配置)
$env          --查看环境变量LD_LIBRARY_PATH=/u01/app/oracle/prodcut/10.2.0/db_1/lib是否设置
$vi .profile设置
验证ggsci命令
$./ggsci
GGSCI>help     --可以查看gg的各种命令
新建一些目录
GGSCI>create subdirs      --不需要指定路径,默认在当前目录下(所以进入ggsci的时候,一定要在gg的当前目录)
新建出来的目录有:
name             Purpose
--dirchk          Checkpoint files存放检查点(Checkpoint)文件
                       (和Oracle的checkpoint含义不同,如oralce的一个实例失败,从最近一次的checkpoint开始recorver, oracle的一次
                       checkpoint是让dbwrt进程把被修改的数据从数据缓冲区中写入数据文件。而OGG的checkpoint是OGG捕捉了很多事务日志,哪些
                       被传输了,哪些未被传输。每隔一段时间,执行一次checkpoint,之前的所有数据都要传送过去。如果soure or target db断电了,
                       那下次启动的时候,就要支持断点续传,那那个断点位置就是最后一次OGG执行checkpoint的位置)
--dirdat          GoldenGate trails,  存放Trail与Extract文件
--dirdef          Data Definition files,过DEFGEN工具生成的源或目标的数据定义文件
--dirprm        Parameter files, 存放参数文件
--dirpcs         Process status files, 存放进程状态文件
--dirrpt           Report files, 存放进程报告文件
--dirsql          SQL script files,存放SQL脚本文件
--dirtmp        Temporary files,当事务所需要的内存超过已分配内存时,缺省存储于此
5.Configure Oracle Database for Goldengate                                                   
5.1 Create Goldengate User  -- 创建Goldengate用户
[oracle@grid_ogg] sqlplus /as sysdba
Create user ogg for both source system and target system, and grant appropriate privileges
--创建源端和目标端的用户,并授予权限
Create tablespace tbs_gguser datafile '/u01/app/oracle/oradata/gguser.dbf' size 50m autoextend on
--gg建议创建一个50M的表空间个gg的用户作为默认表空间
Create usr ogg identified by ogg default tablespace tbs_ggusre temporary tablespace temp quota unlimited on tbs_gguser
--创建一个ogg用户用户
grant CONNECT, RESOURCE to ogg;      --内部的角色
grant CREATE SESSION, ALTER SESSION to ogg;     --这两个可以省略,CONNECTION,RESOURCE已经包含了
grant SELECT ANY DICTIONARY, SELECT ANY TABLE to ogg;    --可以看所有的数据字典,可以看所有的表的权限
grant ALTER ANY TABLE to ogg;
grant FLASHBACK ANY TABLE to ogg;
grant EXECUTE on DBMS_FLASHBACK to ogg;     --执行xxx包的权限
--在源端创建两张同步的测试表
SQL>conn soctt/tigger
SQL>select * from emp_egg;
SQL>seelct * from dept_egg;


目标端:建立相同的用户,表空间,权限,并授予测试表的DML权限
Create user ogg for both source system and target system, and grant appropriate privileges
Create tablespace tbs_gguser datafile '/u01/app/oracle/oradata/gguser.dbf' size 50m autoextend on
Create usr ogg identified by ogg default tablespace tbs_ggusre temporary tablespace temp quota unlimited on tbs_gguser
grant CONNECT, RESOURCE to ogg;
grant CREATE SESSION, ALTER SESSION to ogg;
grant SELECT ANY DICTIONARY, SELECT ANY TABLE to ogg;
grant CREATE TABLE to ogg;
--Create empty test table and grant DML privilege to GG user
SQL>connect scott/tigger
SQL>grant INSERT,UPDATE, DELETE on socktt.emp_ogg to ogg
SQL>grant INSERT,UPDATE,DELETE  on socott.dept_ogg to ogg

5.2. Enable supplemental log mode(打开附加日志模式) in source system(源数据库是否打开supplemental log)
--这里的库级的附加日志区别于表级的附加日志(见trandata的说明)
--supplemental log意思是说除了relog以外的一些额外的redolog,也是放在redlog文件中,如要修改一个表,oracle记录更多的
一些列的该表的信息记录到redolog中,这些信息对OGG是非常重要的.
check supplemental log mode is enabled or not by following query
SQL>select SUPPLEMENTAL_LOG_DATA_MIN from v$database;
if not, enable it
SQL>alter database add supplemental log data
SQL>alter system switch logfile

5.3 Enable archive log mode(打开归档日志模式) in source system(在源端打开归档日志模式--必须要做)
因为OGG的捕捉进程比oracle的进程级别低,从redo log中捕捉不到的日志,要到archive log中捕捉
enable archive log mode
[oracle@db_ogg]sqlplus /as sysdba
SQL>alter system set log_archive_dest='/u01/app/oracle/oradata/arch'        --要考虑如何定期清理归档日志的内容,否则会占用磁盘
SQL>shutdown immediate
SQL>startup mount
SQL>alter database archivelog   --打开/alter database noarchivelog  --关闭归档日志
SQL>alter database open
SQL>archive log list;

SQL>select name from v$ARCHIVED_LOG WHERE FIRST_NAME =
          (SELECT MAX(FIRST_TIME) FROM v$ARCHIVED_LOG)

5.4 Enable force logging(强制日志模式) in source system(
因为当我们对oracle进行数据操作的时候,有时为了提高效率,会用no logging模式,不产生日志,这样操作更快
但是带来的问题是,不再产生redo log日志,这样导致无法做recovery, gg也无法捕捉到日志.
所以在gg备份的情况下,配置成强制需要生成redo log的模式(no logging失效)
Check force logging mode is enabled or not by following query
SQL>SELECT force logging FROM v$database
if not, enable it
SQL>alter database force logging

--在源端设置哪些表被加入到TRANDATA
Enable transaction data change capture for these two table in source system
GGSCI>DBLOGIN USERID ogg, PASSWORD ogg   #dblogin是OGG里面的一个命令
GGSCI>ADD TRANDATA scott.EMP_OGG                #ADD TRANDATA是将源端和目标端的两张对应表执行第一次同步(即初始化同步操作)
GGSCI>ADD TRANDATA scott.DEPT_OGG              #删除表补全日志
如果该表没有主键或唯一索引,那么指定唯一标示的字段,否则会用所有的字段来标示,同时其还有字段列数限制
GGSCI>ADD TRANDATA OWNER.table_name, nokey, cols(column,column,....)
Verify that supplemental logging has been turned on for these tables (验证一下归档日志是否确实被打开)
GGSCI>INFO TRANDATA scott.emp*                       #查看scott用户中以emp开头的表是否打开了trandata设置,是否会执行初始化同步
Logging of supplemental redo log data is disabled[未打开](enabled[已打开])for table SCOTT.EMP1
附加解释:这里的TRANDATA和5.2的alter database add supplemental log data的区别是只有在库级的附加日志打开的情况下,表级的
附加日志才有效果。
表级补全日志需要在库级最小补全日志打开的情况下才起作用,只开启库级最小补全日志,redolog记录的信息还不够全面,必须再使用
add trandata开始表级的补全日志以获得必要的信息。
需要同步的表必须设置本步骤的补全日志,否则后面数据可能不能同步成功
6. Configure Goldengate Manager Process                                                           
6.1 Configure MGR in source System
远端配置管理进程
Create the manager parameter file
GGSCI>EDIT PARAMS MGR
PORT 7809               #最好用1024以上的端口,不要和其它端口冲突
PURGEOLDEXTRACTS  ./dirdat, USECHECKPOINTS      #在当前的路径下面建立dirdat文件夹,作为跟踪的数据文件
GGSCI>START MGR
GGSCI>INFO MGR
6.2 Configure MGR in target system
Create the manager parameter file
GGSCI>EDIT PARAMS MGR
Use the editor to assign a port
PORT 7809
PURGEOLDEXTRACTS ./dirdat USECHECKPOINTS
GGSCI>START MGR
GGSCI>INFO MGR











8 Configure Extract Process in Source system(配置远端进程)                                    

8.1 Edit extract process paramter(在源端配置Extract抽取进程)
GGSCI>EDIT PARAMS EXT01
EXTRACT EXT01
SETENV(NLS_LANG=AMERICAN_AMERICAN.ZHS16GBK)
USERID ogg, PASSWORD ogg
EXTTRAIL ./dirdat/aa               #跟踪文件,dirdat目录下以aa为前缀(aa000001,aa000002,....)
TABLE scott.EMP_OGG         #本EXT01的extract进程抽取哪些表。 一个capture可以同步多张表
TABLE scott.DEPT_OGG      #如果某个表的改变量非常大,可以独立一个capture进程只负责这一个表

Please note that 'aa' is prefix for local trail file
Execute the following commands in source system to add Primary Extract group
GGSCI>ADD EXTRACT EORA_1, TRANLOG, BEGIN NOW      #BEGIN NOW是同步传输,可以用某个函数,可以定时传输(异步化)

8.2 Define Goldengate local trail
#定义一个EXTTRAIL文件,给EORA_1这个EXTRACT进程使用,大小为5M
GGSCI>ADD EXTTRAIL ./dirdat/aa, EXTRACT EORA_1 MEGABYTES 5

8.3 Start primary Extract process
GGSCI>START EXTRACT EORA_1
Verify extract process is running or not
GGSCI>INFO EXTRACT EORA_1
EXTRACT EORA_1 Last Started 2010-12-12 07:55 Status RUNNING
Checkpoint Lag 00:00:48(updated 00:00:03 ago)
Log Read Checkpoint Oracle Redo Logs
 2010-12-12 07:55:06 Seqno 74, RBA 1562128

#(1)Seqno 74是Redo log的日志号,用select * from v$log可以查看到
GROUP#  THREAD#   SEQUENCE#   BYTES    MEMBERS   ARC   STATUS
#(2)RBA
Oracle的checkpoint有三种类型:
1是全局,
2是增量的:设置一个参数mttr,比如说600秒做一个checkpoint,oracle每隔600秒做一次checkpoint,把600秒以前的
          所有发生该表的所有数据块从缓冲区写入数据文件,发生checkpoint的这个位置就是RBA
3是部分:部分的只有对表空间进行备份的时候才会放)
注释: Goldengate中的RBA和Oracle的RBA虽然不同,但是相关。Oracle发生一次RBA, gg也会强制做一次传输,
把这段时间以来未传输数据传输一次.

--配置完成后,可以通过ps -ef|grep ogg来查看对应的进程(EORA_1)是否在运行
Now Goldengate will generate local trail file 'aa000000' under dirdat in source system
$ll /ogg/dirdat/         #罗列出所有的'aa'开头的文件aaxxxxxxxxx

9 Configure pump process in source system(在远端配置pump进程)                              
9.1 edit data pump process parameter
GGSCI>EDIT PARAMS PORA_1
EXTRACT PORA_1
SETENV(NLS_LANG=AMERICAN_AMERICA_ZHS16GBK)
PASSTHRU                           #做什么事情,PASSTHRU传输HRU
RMTHOST grid, MGRPORT 7809    #传到grid这台机器上的7809端口
RMTTRAIL ./dirdat/pa     #grid这台机器上的dirdata目录中以paxxxx开头的数据文件中
TABLE scott.EMP_OGG                #传输哪些表
TALBE scott.DEP_OGG

Add data pump Extract group(在源端配置一个本地的trail队列)
GGSCI>ADD EXTRACT PORA_1 EXTTRAILSOURCE ./dirdat/aa   #添加一个PORA_1,从哪里读取什么文件传输到哪里去

Verify results:
GGSCI>INFO EXTRACT PORA_1

9.2 Add GoldenGate remote trail in Source system(在源端配置一个远程的tail队列)
GGSCI>ADD RMTTRAIL ./dirdata/pa, EXTRACT PORA_1, MEGABYTES 5
Start Data pump process>
GGSCI>START EXTRACT PORA_1
Verify the result
GGSCI>INFO EXTRACT PORA_1

Now Goldengate will generate remote trail file "pa000000" under dirdat in Target system:
$ll dirdata/

10 Configure replicat process in target system(在目标端配置接收进程)                                   
10.1 Create GLOBALS parameter in target system
Edit GLOBALS(supper case)parameter file to Indlcate checkpoint table(首先在目标端配置一个参数文件)
GGSCI>EDIT PARAMS ./GLOBALS
CHECKPIINT TABLE ogg.ggschkpt   #配置一个参数,配置一个checkpoint表,是ogg用户的一个表
Verify
$ll GLOBALS
For GLOBALS configuration table effect, we must exit GGSCI session
GGSCI>exit    #这里要退出来,下面的ADD CHECKPOINTTABLE才能执行公共,否则会报CHECKPOINTTABLE不存在
ADD replicat checkpoint table in target system
GGSCI>DBLOGIN USERID ogg, PASSWORD ogg
GGSCI>ADD CHECKPOINTTABLE

10.2 Edit Delivery process parameter
Add Replicat group
GGSCI>ADD REPLICATE RORA_1, EXTTRAIL ./dirdat/pa   #要指明提取的队列文件(源端会把数据发送到这里)
Edit replicat process RORA_1 parameter
GGSCI>EDIT PARAM RORA_1     #编辑配置文件,告诉他做什么
REPLICAT RORA_1
SETENV(NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
USERID ogg, PASSWORD ogg
HANDLECOLLISIONS
ASSUMETARGETDEFS
DISCARDFILE ./dirrpt/RORA_aa.DSG, PURGE
MAP scott.emp_ogg, TARGET scott.emp_ogg
MAP scott.dep_ogg, TARGET scott.dep_ogg

Note:In the MAP statement, the first owner/schema is for the source and the second for the target
Start Replicat process
GGSCI>START REPLICATE RORA_1
GGSCI>INFO REPLICATE RORA_1

验证过程:在源库里面做数据操作(如delete,update,insert)等,通过count(*)比较记录数是否相同

11 Limitation(限制)                                                                                         
11.1 Column with differs iin different encoding(字符集)
In zhs16gbk encoding, two bytes represents one chinese character, However, IN AL32UTF8
encoding three bytes rpresents one chines character, Therefore, If we INSERT 10 chiness
characters in source system(zh216gbk), which actually occupies 20 bytes, it will
become 30 bytes in target system(AL32UTF8),if the column maximum width is 20 bytes,
the Insert operation can succeed in source system, but fail in target system

List detail about process; info replicat pora_1 showch     --showch show channel看更详细的信息,数据诊断是用

#测试,将目标端系统关机,然后在源端删除一些数据,然后在启动目标端系统
$sqlplus as sysdba
startup
#启动监听,启动数据库,然后切换到ogg目录
ggsci进入
start mgr
start replicat rora_1
此时用select count(*)比较两边的结果是否一致
如果发现不一致,那我们如何诊断
在源端:
GGSCI>info extract eora_1, showch
看到其RBA的号码
在目标端:
GGSCI>info replicat rora_1, showch
看到其RBA的号码,发现不一致
再看源端pump
GGSCI>info extract pora_1, showch
看到 status ABENDED (意思是无为状态,因为之前传输发现目标端被关闭了,就进入睡眠状态,发现gg不会自动重新激活)
所以这里重启启动一下pora_1进程
GGSCI>start extract pora_1
GGSCI>info extract pora_1, showch
看到状态成为running状态
再到目标端看看,发现数据记录数已经一致(传输成功了)

  

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
OGG12c Integrated Native DDL
oracle+goldengate安装以及单向复制配置doc
GoldenGate OGG常见问题及解决方法
OracleOggan安装并测试同步数据步骤!
Oracle GoldenGate安装配置教程
GoldenGate 单向复制配置方法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服