Oracle 11G OGG安装配置全解


一. GoldenGate 概述
  GoldenGate现在是业内成熟的数据容灾与复制产品;GoldenGate是一种基于日志的结构化数据复制方式,它通过解析源数据库在线日志或归档日志获得数据的增删改变化(数据量只有日志的四分之一左右),再将这些变化应用到目标数据库,实现源数据库与目标数据库同步、双活。
二. GoldenGate 搭建
目标在linux系统下安装Oracle;利用GoldenGate 实现数据同步;可复制DML和DDL操作
环境如下:本环境目标端是源端的克隆; 
                                    源端                      目标端
操作系统                      CentOS6.9                 CentOS6.9
IP                                 172.16.1.139              172.16.1.140
数据库版本                   11.2.0.4.0                11.2.0.4.0
GoldenGate版本          11.2.1.0.1                11.2.1.0.1

2.1 创建GoldenGate 操作系统用户
    两台服务器都需要创建 ogg 操作系统用户(此步骤非必须,也可以使用ORACLE用户安装)。
useradd -u 1003 -g oinstall -G dba ogg
echo "ogg" | passwd --stdin ogg


2.2 修改 GoldenGate 系统用户环境变量,添加以下加粗的变量
[oracle@node139 ~]$ cat .bash_profile 
export PATH
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/11.2.0.4/dbhome_1
export ORACLE_SID=orcl
export ORACLE_TERM=vt100
export THREADS_FLAG=native
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export LANG=en_US
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
alias sqlplus='rlwrap sqlplus'
alias ggsci='rlwrap ggsci'
export PATH=$ORACLE_HOME/bin:$PATH
export PATH=/u01/ogg:$PATH
export LD_LIBRARY_PATH=/u01/ogg:$LD_LIBRARY_PATH


2.3 创建GoldenGate 安装目录
  两台服务器都需要做同样的操作。
mkdir -p /u01/ogg
chown -R oracle:oinstall /u01/ogg


2.4 安装GoldenGate
  两台服务器都需要操作。
unzip fbo_ggs_Linux_x64_ora11g_64bit.tar.zip
tar -xvf fbo_ggs_Linux_x64_ora11g_64bit.tar -C /u01/ogg/
chown -R oracle:oinstall /u01/ogg/
 
2.5 建立GoldenGate表空间
  两台服务器都需要操作: 建议使用单独的表空间存放GoldenGate 数据
su - oracle
#>sqlplus / as sysdba        
SQL> create tablespace tsp_ogg datafile '/u01/app/oracle/oradata/orcl/ogg01.dbf' size 100M autoextend on;


2.6 创建GoldenGate 用户并赋权
两台服务器都需要操作
SQL> create user ogg identified by ogg default tablespace tsp_ogg;
SQL> grant connect,resource,dba to ogg;
SQL> grant create table,create sequence to ogg;
SQL> grant execute on utl_file to ogg;

在目标端同样创建一次该用户,用来存放同步相关信息。

2.7 配置数据库(两台服务器都需要操作)
  由于GoldenGate 的原理是根据 Oracle 的日志进行抽取复制。为了保证日志的完整性;需要打开 Oracle 数据库归档;
查看源端数据库归档情况:
SQL> select log_mode,supplemental_log_data_min,force_logging from v$database;
LOG_MODE     SUPPLEME FOR
------------ -------- ---
NOARCHIVELOG NO       NO
修改如下:
SQL>shutdown immediate
SQL>startup mount
SQL>alter database archivelog;
SQL>alter database open;
SQL>alter database force logging;  --实际生产应用中,最好同时打开ORACLE的强制日志模式,以防止源数据库因直接路径加载忽略redo生成而导致这部分数据无法同步:
SQL>alter database add supplemental log data;  --开启最小附加日志模式


最后查询结果如下:
SQL> select NAME,OPEN_MODE,FORCE_LOGGING,SUPPLEMENTAL_LOG_DATA_MIN from v$database; --查看是否开启了最小附加日志模式
NAME   OPEN_MODE        FOR SUPPLEME
--------- -------------------- --- --------
ORA235   READ WRITE        YES YES


2.8 运行GoldenGate 支持 DDL 脚本
  如果要让GoldenGate 支持DDL操作,还需要额外运行几个脚本,这些脚本是OGG带的而不是 Oracle 带的,在GoldenGate 的安装目录都可以找到,源端与目标端都需要运行,如下: 


在11.2.0.4.0版本;需要添加以下设置
ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION = TRUE SCOPE=BOTH;


进入OGG目录执行以下脚本:


[oracle@oraclesrc ~]$ cd /u01/ogg

SQL> @marker_setup.sql

Marker setup script
You will be prompted for the name of a schema for the Oracle GoldenGate database objects.
NOTE: The schema must be created prior to running this script.
NOTE: Stop all DDL replication before starting this installation.

Enter Oracle GoldenGate schema name:ogg
Marker setup table script complete, running verification script...
Please enter the name of a schema for the GoldenGate database objects:
Setting schema name to OGG


MARKER TABLE
-------------------------------
OK


MARKER SEQUENCE
-------------------------------
OK


Script complete.


SQL> @ddl_setup.sql


Oracle GoldenGate DDL Replication setup script


Verifying that current user has privileges to install DDL Replication...


You will be prompted for the name of a schema for the Oracle GoldenGate database objects.
NOTE: For an Oracle 10g source, the system recycle bin must be disabled. For Oracle 11g and later, it can be enabled.
NOTE: The schema must be created prior to running this script.
NOTE: Stop all DDL replication before starting this installation.
Enter Oracle GoldenGate schema name:ogg
Working, please wait ...
Spooling to file ddl_setup_spool.txt


Checking for sessions that are holding locks on Oracle Golden Gate metadata tables ...


Check complete.

Using OGG as a Oracle GoldenGate schema name

Working, please wait ...

DDL replication setup script complete, running verification script...
Please enter the name of a schema for the GoldenGate database objects:
Setting schema name to OGG


CLEAR_TRACE STATUS:


Line/pos             Error
-------------------- -----------------------------------------------------------------
No errors            No errors


CREATE_TRACE STATUS:


Line/pos             Error
-------------------- -----------------------------------------------------------------
No errors            No errors


TRACE_PUT_LINE STATUS:


Line/pos             Error
-------------------- -----------------------------------------------------------------
No errors            No errors


INITIAL_SETUP STATUS:


Line/pos             Error
-------------------- -----------------------------------------------------------------
No errors            No errors


DDLVERSIONSPECIFIC PACKAGE STATUS:


Line/pos             Error
-------------------- -----------------------------------------------------------------
No errors            No errors


DDLREPLICATION PACKAGE STATUS:


Line/pos             Error
-------------------- -----------------------------------------------------------------
No errors            No errors


DDLREPLICATION PACKAGE BODY STATUS:


Line/pos             Error
-------------------- -----------------------------------------------------------------
No errors            No errors


DDL IGNORE TABLE
-----------------------------------
OK


DDL IGNORE LOG TABLE
-----------------------------------
OK


DDLAUX  PACKAGE STATUS:


Line/pos             Error
-------------------- -----------------------------------------------------------------
No errors            No errors


DDLAUX PACKAGE BODY STATUS:


Line/pos             Error
-------------------- -----------------------------------------------------------------
No errors            No errors


SYS.DDLCTXINFO  PACKAGE STATUS:


Line/pos             Error
-------------------- -----------------------------------------------------------------
No errors            No errors


SYS.DDLCTXINFO  PACKAGE BODY STATUS:


Line/pos             Error
-------------------- -----------------------------------------------------------------
No errors            No errors


DDL HISTORY TABLE
-----------------------------------
OK


DDL HISTORY TABLE(1)
-----------------------------------
OK


DDL DUMP TABLES
-----------------------------------
OK


DDL DUMP COLUMNS
-----------------------------------
OK


DDL DUMP LOG GROUPS
-----------------------------------
OK


DDL DUMP PARTITIONS
-----------------------------------
OK


DDL DUMP PRIMARY KEYS
-----------------------------------
OK


DDL SEQUENCE
-----------------------------------
OK


GGS_TEMP_COLS
-----------------------------------
OK


GGS_TEMP_UK
-----------------------------------
OK


DDL TRIGGER CODE STATUS:


Line/pos             Error
-------------------- -----------------------------------------------------------------
No errors            No errors


DDL TRIGGER INSTALL STATUS
-----------------------------------
OK


DDL TRIGGER RUNNING STATUS
----------------------------------------------------------------------
ENABLED


STAYMETADATA IN TRIGGER
----------------------------------------------------------------------
OFF


DDL TRIGGER SQL TRACING
----------------------------------------------------------------------
0


DDL TRIGGER TRACE LEVEL
----------------------------------------------------------------------
0


LOCATION OF DDL TRACE FILE
------------------------------------------------------------------------------------------------------------------------
/u01/app/oracle/diag/rdbms/orasrc/orasrc/trace/ggs_ddl_trace.log


Analyzing installation status...




STATUS OF DDL REPLICATION
------------------------------------------------------------------------------------------------------------------------
SUCCESSFUL installation of DDL Replication software components


Script complete.


SQL> @role_setup.sql


GGS Role setup script


This script will drop and recreate the role GGS_GGSUSER_ROLE
To use a different role name, quit this script and then edit the params.sql script to change the gg_role parameter to the preferred name. (Do not run the script.)


You will be prompted for the name of a schema for the GoldenGate database objects.
NOTE: The schema must be created prior to running this script.
NOTE: Stop all DDL replication before starting this installation.


Enter GoldenGate schema name:ogg
Wrote file role_setup_set.txt


PL/SQL procedure successfully completed.




Role setup script complete


Grant this role to each user assigned to the Extract, GGSCI, and Manager processes, by using the following SQL command:


GRANT GGS_GGSUSER_ROLE TO <loggedUser>


where <loggedUser> is the user assigned to the GoldenGate processes.


SQL> grant GGS_GGSUSER_ROLE to ogg;    


Grant succeeded.


SQL> @ddl_enable.sql;


Trigger altered.


至此DDL同步配置完成。
 
注:
如果某项脚本执行错误,需要重新执行时,先要执行清除的脚本:
@ddl_remove
@marker_remove 


三. GoldenGate单向复制流程配置
  现在就可以正式配置OGG了,在配置OGG之前,先看下OGG的复制流程,OGG和其他传统复制软件一样,也是通过源端捕获/挖掘ORACLE的日志信息, 目标端根据源端传送过来的日志信息进行重塑,实现源端-目标端数据同步,可以参考下图。


注意:只有commit之后的日志信息才会被Capture进程捕获,未提交的事务OGG不会捕获。


3.1 创建GoldenGate 的工作目录 
  源端和目标端都需要创建,登录GoldenGate,只需要执行create subdirs命令就可以了。
[oracle@node139 ogg]$cd /u01/ogg
[oracle@node139 ogg]$ ggsci  --进入GoldenGate命令窗口模式
Oracle GoldenGate Command Interpreter for Oracle
Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230_FBO
Linux, x64, 64bit (optimized), Oracle 11g on Apr 23 2012 08:32:14
Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved.
GGSCI (node139) 1> create subdirs  --建立子目录
Creating subdirectories under current directory /data/ogg
Parameter files                /data/ogg/dirprm: already exists
Report files                   /data/ogg/dirrpt: created
Checkpoint files               /data/ogg/dirchk: created
Process status files           /data/ogg/dirpcs: created
SQL script files               /data/ogg/dirsql: created
Database definitions files     /data/ogg/dirdef: created
Extract data files             /data/ogg/dirdat: created
Temporary files                /data/ogg/dirtmp: created
Stdout files                   /data/ogg/dirout: created


3.2 在目标端添加CheckPoint 表
  为了保证源和目标端在传数据的时候不会重复或者少传,在目标端添加checkpoin表。
操作如下:
GGSCI (oracledest) 3> dblogin userid ogg@oradest,password ogg
Successfully logged into database.
GGSCI (oracledest) 4> add checkpointtable ogg.checkpoint
Successfully created checkpoint table ogg.checkpoint.


3.3 源端配置 MGR 进程组
  在源端和目标端都必须运行一个MGR进程组;负责启动GoldenGate进程,以及启动动态进程,管理trail文件,错误信息。
  运行ggsci程序;输入 “EDIT PARAMS MGR” 编辑参数文件:
[ogg@node139 ogg]$ ggsci
Oracle GoldenGate Command Interpreter for Oracle
Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230_FBO
Linux, x64, 64bit (optimized), Oracle 11g on Apr 23 2012 08:32:14
Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved.
GGSCI (node139) 1> EDIT PARAMS MGR   --配置GoldenGate主进程参数
 输入内容如下:
PORT 7809
DYNAMICPORTLIST 7800-8000
AUTORESTART EXTRACT *, WAITMINUTES 2, RESETMINUTES 5
PURGEOLDEXTRACTS /u01/ogg/dirdat, USECHECKPOINTS, MINKEEPDAYS 3;


说明:
 PORT:指定服务监听端口;默认端口为7809
 DYNAMICPORTLIST:动态端口:可以制定最大256个可用端口的动态列表,当指定的端口不可用时,管理进程将会从列表中选择一个可用的端口,源端和目标段的Collector、Replicat、GGSCI进程通信也会使用这些端口
 AUTORESTART:自动重启参数设置:本处设置表示每2分钟尝试重新启动所有EXTRACT进程;以后5分钟清零。
 PURGEOLDEXTRACTS:定期清理trail文件设置:本处设置表示对于超过3天的trail文件进行删除


 启动MGR进程
GGSCI (node139) 2> start mgr
Manager started.
GGSCI (node139) 3> info mgr  --查看进程状态
Manager is running (IP port node139.7809).


3.4 源端配置 Extract进程
  负责抓取需要传输数据;下面在源端配置抽取进程。
测试登录数据库:
GGSCI (oraclesrc) 4> dblogin userid ogg@orcl,password ogg   --GoldenGate中登录ORACLE数据库
Successfully logged into database.


GGSCI (node139) 1> EDIT PARAMS EORA_1
输入内容如下:

EXTRACT EORA_1 
SETENV (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
USERID ogg@orcl, PASSWORD ogg
EXTTRAIL /u01/ogg/dirdat/aa
gettruncates             
TABLE hr.*;
 
说明:
EXTRACT EORA_1  --抽取进程名
USERID ogg@orcl, PASSWORD ogg  --连接本机DB的帐号密码
EXTTRAIL /u01/ogg/dirdat/aa   --远程队列的位置 
gettruncates                        --抓取truncate数据
TABLE hr.*;  --需要抽取的表,可以使用通配符
 
 在源端用 add extract 命令创建 extract 组;用add exttrail 命令创建本地 trail 文件
GGSCI (node139) 2> ADD EXTRACT EORA_1, TRANLOG, BEGIN NOW
EXTRACT added.


GGSCI (node139) 3> ADD EXTTRAIL /u01/ogg/dirdat/aa, EXTRACT EORA_1, MEGABYTES 5  
EXTTRAIL added.


启动 extract 进程;在 ggsci 中:可以使用 add, alter, cleanup, delete, info, kill命令管理extract进程
GGSCI (node139) 21> START EXTRACT EORA_1


Sending START request to MANAGER ...
EXTRACT EORA_1 starting


GGSCI (node139) 25> INFO EORA_1


EXTRACT    EORA_1    Last Started 2019-12-02 00:38   Status RUNNING
Checkpoint Lag       00:00:00 (updated 00:00:02 ago)
Log Read Checkpoint  Oracle Redo Logs
                     2019-12-02 00:39:11  Seqno 9, RBA 20785152
                     SCN 0.1047835 (1047835)


GGSCI (node139) 22> INFO ALL


Program     Status      Group       Lag at Chkpt  Time Since Chkpt


MANAGER     RUNNING                                          
EXTRACT     RUNNING     EORA_1      00:01:02      00:00:01   


3.5 在源端配置 Pump 进程
  extract进程负责将抓取的数据写入本地trail文件;而需要Pump进程把trail文件传输到目标端。使用 EDIT PARAMS PORA_1 添加配置文件
GGSCI (node139) 6> EDIT PARAMS PORA_1
EXTRACT PORA_1
SETENV (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
PASSTHRU
RMTHOST 172.16.1.140, MGRPORT 7809 
RMTTRAIL /u01/ogg/dirdat/pa 
TABLE hr.*; 

说明:
RMTHOST 172.16.1.140, MGRPORT 7809  --目标数据库服务器地址和GG服务端口号
RMTTRAIL /u01/ogg/dirdat/pa   --然后给这个提取进程配置远端队列位置,即RMTTRAIL
TABLE hr.*;  --需要抽取的表,可以使用通配符
 


 用 add extract 指定本地 trail 文件
GGSCI (node139) 7> ADD EXTRACT PORA_1, EXTTRAILSOURCE /u01/ogg/dirdat/aa
EXTRACT added.
 用 add rmttrail 指定远程 trail 文件
GGSCI (node139) 8> ADD RMTTRAIL /u01/ogg/dirdat/pa, EXTRACT PORA_1, MEGABYTES 5
RMTTRAIL added.
启动 pump 进程
GGSCI (node139) 9> START EXTRACT PORA_1
Sending START request to MANAGER ...
EXTRACT PORA_1 starting


GGSCI (node139) 11> info all


Program     Status      Group       Lag at Chkpt  Time Since Chkpt


MANAGER     RUNNING                                          
EXTRACT     RUNNING     EORA_1      00:00:00      00:00:07   
EXTRACT     RUNNING     PORA_1      00:00:00      00:00:02
此时extl进程running则表示已成功运行,这时开始会在前面指定的目标端队列位置生成trail文件。如果进程出错,
可以使用view report PORA_1查看错误信息。


3.6目标端配置 MGR 进程组
  在源端和目标端都必须运行一个MGR进程组;负责启动GoldenGate进程,以及启动动态进程,管理trail文件,错误信息。
  运行ggsci程序;输入 “EDIT PARAMS MGR” 编辑参数文件:
[ogg@oracle221 ogg]$ cd /u01/ogg
[ogg@oracle221 ogg]$ ggsci
Oracle GoldenGate Command Interpreter for Oracle
Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230_FBO
Linux, x64, 64bit (optimized), Oracle 11g on Apr 23 2012 08:32:14


Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved.


GGSCI (oracle221) 1> EDIT PARAMS MGR   --配置GoldenGate主进程参数
 输入内容如下:


PORT 7809
DYNAMICPORTLIST 7800-8000
AUTORESTART EXTRACT *, WAITMINUTES 2, RESETMINUTES 5
PURGEOLDEXTRACTS /u01/ogg/dirdat, USECHECKPOINTS, MINKEEPDAYS 3;

说明:
 PORT:指定服务监听端口;默认端口为7809
 DYNAMICPORTLIST:动态端口:可以制定最大256个可用端口的动态列表,当指定的端口不可用时,管理进程将会从列表中选择一个可用的端口,源端和目标段的Collector、Replicat、GGSCI进程通信也会使用这些端口
 AUTORESTART:自动重启参数设置:本处设置表示每2分钟尝试重新启动所有EXTRACT进程;以后5分钟清零。
 PURGEOLDEXTRACTS:定期清理trail文件设置:本处设置表示对于超过3天的trail文件进行删除


 启动MGR进程
GGSCI (oracle221) 2> start mgr
Manager started.
GGSCI (oracle221) 3> info mgr  --查看进程状态
Manager is running (IP port node139.7809).


 
3.7 配置目标端的Replicat 进程
测试登录数据库:
GGSCI (oracle221) 4> dblogin userid ogg@orcl,password ogg   --GoldenGate中登录ORACLE数据库
Successfully logged into database.


#添加checkpoint
GGSCI (oracle221) 4> add checkpointtable ogg.checkpoint
Successfully created checkpoint table ogg.checkpoint. 


Replicat进程运行于目标端;负责将源端传过来的 trail 文件;在目标端数据库应用。实现源端和目标端数据同步。
GGSCI (oracle221) 2> EDIT PARAMS RORA_1
REPLICAT RORA_1
SETENV (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
USERID ogg@orcl, PASSWORD ogg 
HANDLECOLLISIONS
ASSUMETARGETDEFS 
gettruncates 
DISCARDFILE /u01/ogg/dirrpt/RORA_aa.rpt, append
MAP hr.*, TARGET hr.*; 


说明:
REPLICAT RORA_1  --复制进程名
gettruncates                                               --复制truncate操作
USERID ogg@orcl, PASSWORD ogg  --目标数据库的帐号密码
MAP hr.*, TARGET hr.*;  --映射关系,注意target前必须留一个空格


在目标端使用 add replicat 添加 Replicat 进程
GGSCI (oracle221) 8> add replicat RORA_1, exttrail /u01/ogg/dirdat/pa  checkpointtable ogg.checkpoint
REPLICAT added.


 使用 start replicat 启动 Replicat 进程
GGSCI (oracle221) 11> start REPLICAT RORA_1  --开启复制进程


Sending START request to MANAGER ...
REPLICAT RORA_1 starting


GGSCI (oracle221) 12> info all


Program     Status      Group       Lag at Chkpt  Time Since Chkpt


MANAGER     RUNNING                                          
REPLICAT    RUNNING     RORA_1      00:00:00      00:00:00  


四. 配置 DDL 同步
  在前面我们已经配置GoldenGate 支持DDL脚本;其中有创建 Trigger;DDL跟DML 复制机制不同;DML复制是基于redo log。其DDL复制原理是基于Trigger;它扑捉DDL操作记录在中间表;Extract读取中间表DDL操作;Pump投递到目标端;目标端在应用DDL语句。
4.1 运行GoldenGate 支持 DDL 脚本
  源,目标数据库前面已经操作了 ;请查看上面的配置方法(2.8 运行GoldenGate 支持 DDL 脚本)
4.2 关闭 Oracle 的recyclebin
  在执行上一步操作有一个温馨提示:‘NOTE: For an Oracle 10g source, the system recycle bin must be disabled. For Oracle 11g and later, it can be enabled.’
 GoldenGate10G DDL不支持Oracle回收站功能;本文提供的GoldenGate版本是11G;该操作也略;


关闭Oracle回收站功能
alter system set recyclebin=off scope=both;


4.3 源端配置
 指定DDL复制的用户
GGSCI (node139) 19> view params ./GLOBALS


GGSCHEMA OGG


停MGR,Extract进程; 
stop extract eora_1
stop  mgr


配置Extract配置文件;在配置文件添加一下内容:
EDIT PARAMS EORA_1


DDL INCLUDE ALL
DDLOPTIONS ADDTRANDATA,REPORT


4.4 目标端配置
 停MGR,Replicat进程;
stop REPLICAT RORA_1
stop  mgr


 配置Replicat配置文件;在配置文件添加一下内容:
EDIT PARAMS RORA_1
DDL INCLUDE MAPPED
DDLOPTIONS REPORT


配置完成;在重启各进程进行验证。
源端:
start  mgr
start extract eora_1
目标端:
start  mgr
start  REPLICAT RORA_1
分割线
感谢打赏
江西数库信息技术有限公司
YWSOS.COM 平台代运维解决方案
 评论
 发表评论
姓   名:

Powered by AKCMS