千家信息网

oracle ogg搭建

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,1.环境介绍项目源端目标端ip192.168.12.23192.168.22.24oracle sidorclorclgoldengate用户oracleoracleogg版本11.2.1.0.111
千家信息网最后更新 2026年11月01日oracle ogg搭建

1.环境介绍

项目

源端

目标端

ip

192.168.12.23

192.168.22.24

oracle sid

orcl

orcl

goldengate用户

oracle

oracle

ogg版本

11.2.1.0.1

11.2.1.0.1

操作系统版本

linux

linux


2. ogg基础环境配置

2.1创建ogg操作系统用户

两台服务器都需要创建ogg操作系统用户(此步骤非必须)。

useradd -u 1003 -g oinstall -G dba ogg1 passwd ogg

2.2修改OGG操作系统用户环境变量

PATH=$PATH:$HOME/bin

export PATH

umask 022

export ORACLE_HOSTNAME=segment2

export ORACLE_BASE=/u01/app/oracle

export ORACLE_SID=orcl

export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1

export TNS_ADMIN=$ORACLE_HOME/network/admin

exportPATH=.:${PATH}:$HOME/bin:$ORACLE_HOME/bin:$ORACLE_BASE/ogg

exportPATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin

exportLD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/lib

exportLD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib

exportLD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib

exportCLASSPATH=${CLASSPATH}:$ORACLE_HOME/JRE

exportCLASSPATH=${CLASSPATH}:$ORACLE_HOME/JRE/lib

export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib

exportCLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib

exportCLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib

exportLIBPATH=${CLASSPATH}:$ORACLE_HOME/lib:$ORACLE_HOME/ctx/lib

export ORACLE_OWNER=oracle

export SPFILE_PATH=$ORACLE_HOME/dbs

export ORA_NLS10=$ORACLE_HOME/nls/data

exportOGG_HOME=$ORACLE_BASE/ogg

2.3创建OGG安装目录

mkdir /ogg chown -Rogg:oinstall /ogg

2.4上传OGG安装介质

将OGG安装文件上传到两台服务器的OGG操作系统用户的家目录(默认为/home/ogg)。

fbo_ggs_Linux_x64_ora11g_64bit.tar

fbo_ggs_Linux_x64_ora11g_64bit.tar解包到/ogg目录(源和目标端都需要操作)

tar -xvf fbo_ggs_Linux_x64_ora11g_64bit.tar -C /ogg

2.5登录OGG测试

$./ggsci

解压安装后目录

[oracle@sourceogg]$ ls -l |grep ^d

drwxr-x---2 oracle oinstall 4096 Apr 23 2012 cfg

drwxr-x---2 oracle oinstall 4096 Apr 23 2012 dirjar

drwxr-x---2 oracle oinstall 4096 Apr 23 2012 dirprm

drwxr-x---7 oracle oinstall 4096 Apr 23 2012 UserExitExamples

GGSCI(source) 1> create subdirs

Creatingsubdirectories under current directory /u01/app/oracle/ogg

Parameterfiles /u01/app/oracle/ogg/dirprm: already exists

Reportfiles /u01/app/oracle/ogg/dirrpt: created

Checkpointfiles /u01/app/oracle/ogg/dirchk: created

Processstatus files /u01/app/oracle/ogg/dirpcs: created

SQLscript files /u01/app/oracle/ogg/dirsql: created

Databasedefinitions files /u01/app/oracle/ogg/dirdef: created

Extractdata files /u01/app/oracle/ogg/dirdat: created

Temporaryfiles /u01/app/oracle/ogg/dirtmp: created

Stdoutfiles /u01/app/oracle/ogg/dirout: created

文件路径

说明

/u01/app/oracle/ogg/dirprm

存放OGG参数各的配置信息

/u01/app/oracle/ogg/dirrpt

存放进程报告文件

/u01/app/oracle/ogg/dirchk

存放检查点文件

/u01/app/oracle/ogg/dirpcs

存放进程状态文件

/u01/app/oracle/ogg/dirsql

存放SQL脚本文件

/u01/app/oracle/ogg/dirdef

存放DEFGEN工具生成的数据定义


2.6建立OGG表空间

ORACLE建议使用单独的表空间存放OGG数据,表空间大小50M就可以,但是最好设置数据文件的自动扩展。

SQL>create tablespace ogg datafile'/u01/app/oracle/oradata/orcl/ogg01.dbf'size 50M autoextend on

2.7创建OGG用户

SQL>create user ogg identified by ogg default tablespace ogg;

2.8为OGG用户授权

OGG用户需要以下权限,也有人为了省事,直接给OGG用户DBA权限。

SQL> grant CONNECT, RESOURCE to ogg;

SQL> grant SELECT ANY DICTIONARY, SELECT ANY TABLEto ogg;

SQL> grant ALTER ANY TABLE to ogg;

SQL> grant FLASHBACK ANY TABLE to ogg;

SQL> grant EXECUTE on DBMS_FLASHBACK to ogg;

SQL> grant insert any table to ogg;

SQL> grant update any table to ogg;

SQL>grant delete any table to ogg;

2.9打开源数据库的附加日志和force log

SQL> selectNAME,OPEN_MODE,FORCE_LOGGING,SUPPLEMENTAL_LOG_DATA_MIN from v$database;

SQL> alter database force logging;

SQL> alter database add SUPPLEMENTAL log data;

SQL> select NAME,OPEN_MODE,FORCE_LOGGING,SUPPLEMENTAL_LOG_DATA_MINfrom v$database;

2.10运行OGG支持DDL脚本

如果要让OGG支持DDL操作,还需要额外运行几个脚本,这些脚本是OGG带的而不是ORACLE带的,在OGG的安装目录都可以找到,如果在OGG的安装目录登录数据库,可以直接@加脚本的名字,源端与目标端都需要运行

如下:

sqlplus / as sysdba

GRANT CREATE TABLE,CREATE SEQUENCE TO OGG;

权限配置以后.要重新执行

SQL>@ddl_setup

SQL>@role_setup

SQL> grantGGS_GGSUSER_ROLE to ogg;

SQL>@ddl_enable

3.OGG配置

3.1OGG原理及数据制造

创建测试数据

源数据库

@demo_ora_create.sql

@demo_ora_insert.sql

目标数据

@demo_ora_create.sql


3.2源端添加表级TRANDATA

添加表级的trandata可以理解为需要将哪些用户的哪些表和目标库同步,其实也是添加表级的

supplemental log,但是只有上文打开的minimal supplemental log后,这个才生效。

GGSCI (oggsource) 2> dbloginuserid ogg,password ogg

GGSCI (dbdream) 3> add trandata hr.tcustmer;

GGSCI (dbdream) 4> add trandata scott.dept_ogg

成功添加表级TRANDATA后,可以通过INFO命令查看哪些表被添加了TRANDATA.

INFO TRANDATA scott.*

3.4目标和源端配置MGR管理进程

GGSCI (stream) 2> EDITPARAMS MGR 加入以下两行内容

PORT 7809

PURGEOLDEXTRACTS /ogg/dirdat,USECHECKPOINTS

参数说明:

PORT 7809:OGG管理进程监控端口。

PURGEOLDEXTRACTS:清除不需要的trail文件。

/ogg/dirdat:trail文件存放位置。

USECHECKPOINTS:使用检查点队列。

start mgr

GGSCI (oggtarget) 4> info mgr

文件存放路径$OGG_HOME/dirprm

3.5配置初始化数据进程(此步骤非必须,可以由其他方式完成)

由于在创建测试表的时候,源端的测试表有数据,而目标端的测试表只有结构,没有数据,所以需要初始化目标端的数据,所谓初始化,就是让目标端的数据和源端的数据在这个时间点是一模一样的,所以初始化工作并不需要一定使用OGG,也可以使用EXP、EXPDP、SQLLOAD等其他工具,

本文主要介绍如何使用OGG进行数据初始化,

下面在源端配置捕获进程EINI_1。

GGSCI (dbdream) 11> ADD EXTRACT EINI_1, SOURCEISTABLE--------------源端加同步进程

GGSCI (dbdream) 12> INFO EXTRACT *, TASKS EXTRACT

GGSCI (dbdream) 13> EDIT PARAMS EINI_1

EXTRACT EINI_1

SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)

setenv (ORACLE_SID=dbdream)

userid ogg, passwordogg

RMTHOST 192.168.12.203, MGRPORT 7839

RMTTASK REPLICAT, GROUP RINI_1-----目标端名字一定要对应

TABLE SCOTT.EMP_OGG;

TABLE SCOTT.DEPT_OGG;

EXTRACT EINI_1:说明这是EXTRACT进程,名字是EINI_1 SETENV:

环境变量,一定要设置和数据库字符集一样,否则可能会乱码

USERID:数据库OGG用户 PASSWORD:数据库用户OGG的密码

RMTHOST:目标端地址,如果在/etc/hosts文件里已经设置解析,可以写主机名 MGRPORT:

目标端MGR管理进程监听的端口RMTTASK REPLICAT:

目标端REPLICAT应用进程的组和名字

TABLE:源端要初始化数据的表的名字

B、配置目标端REPLICAT进程

---------------------特别留意名字为源端配置的名

add replicatRINI_1,specialrun------目标端添加同步进程

EDIT PARAMS RINI_1

--加入以下内容

REPLICAT RINI_1

SETENV(NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)

ASSUMETARGETDEFS

USERID ogg, PASSWORD ogg

DISCARDFILE /u01/app/oracle/ogg/dirrpt/RINIaa.dsc, PURGE

MAP scott.*, TARGET scott.*;

REPLICAT RINI_1:说明这是REPLICAT应用进程,名字叫RINI_1

SETENV:语言变量,同捕获进程EINI_1

ASSUMETARGETDEFS:告诉OGG目标端和源端需要同步的表的结构完全一致,不需要OGG去检查表的结构,包括表名、字段名、字段类型、字段长度等,如果目标端和源端同步的表的结构不一样,需要使用SOURCEDEFS参数,

USERID、PASSWORD:同捕获进程EINI_1参数介绍

DISCARDFILE:错误信息存放位置及命名规则

MAP:源端捕获的表的名字

TARGET:目标端同步的表的名字,可以不在同一SCHEMA

C、初始化数据-----源端

配置好目标端的应用进程RINI_1后,就可以启动源端的捕获进程进行捕获数据了,而目标端的应用进程RINI_1不需要手动去启动,也就是说目标端RINI_1进程不需要管。

ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION = TRUE SCOPE=BOTH;

GGSCI (oggsource asogg@dbdream) 17> START EXTRACT EINI_1

GGSCI (oggsource as ogg@dbdream) 17>VIEW REPORT EINI_1

可以看到初始化是正确的。初始化之后,上文提到的初始化进程(EINI_1、RINI_1)自动停止,因为通常情况下初始化数据工作只会做一次。可以通过INFO命令查看进程的状态。

INFO EXTRACT EINI_1-------------源端

INFO REPLICAT RINI_1-------目标端

3.6源端和目标端配置OGG的检查点

此步骤不是必须的,但是为了让OGG网络中断、服务器宕机、掉电等在突发情况也能正确断点续传,ORACLE建议配置OGG的检查点队列。

GGSCI (stream) 2> EDIT PARAMS ./GLOBALS

CHECKPOINTTABLE ogg.ggschkpt

这就告诉OGG检查点存放到OGG用户下的GGSCHKPT表中,但是还需要使用OGG用户登录数据库,创建检查点表,此时需要退出OGG,重新登录,否则可能会遇到下面的错误。

[ogg@oggsource ogg]$ ./ggsci

GGSCI (oggsource) 1> dblogin userid ogg,password ogg

GGSCI (oggsource as ogg@dbdream) 2> ADD CHECKPOINTTABLE

[ogg@dbdream ogg]$ sqlplus ogg/ogg

No checkpoint table specified. Using GLOBALS specification(ogg.ggschkpt)...

Successfully created checkpoint table ogg.ggschkpt.

此时用OGG登录数据库,就可以看到OGG创建的检查点表。

SQL> select * from tab;

3.7源端配置捕获进程

$ edit param ext1

EXTRACT ext1

SETENV(ORACLE_HOME="/oracle/app/product/11.2/db")

SETENV (ORACLE_SID="orcl")

SETENV(NLS_LANG="AMERICAN_AMERICA.ZHS16GBK")

USERID ogg password ogg

EXTTRAIL ./dirdat/ext1/sd

gettruncates

DDL INCLUDE MAPPED , OBJTYPE 'TABLE' &

INCLUDE MAPPED OBJTYPE 'INDEX'

table scott.*;

add extract ext1 tranlog, begin now

ADD EXTTRAIL ./dirdat/ext1/sd EXTRACT ext1, MEGABYTES 100-----注意是相对路径

start ext1

ADD EXTRACT EORA_2, TRANLOG, BEGIN NOW

ADD EXTTRAIL /u01/app/oracle/ogg/dirdat/zz,EXTRACT EORA_2, MEGABYTES 5

3.7配置源端的PUMP进程

添加PUMP进程PORA_1到OGG,并指定本地的TRAIL文件。

edit pram dp1

EXTRACT dp1

PASSTHRU

DYNAMICRESOLUTION

RMTHOST 192.168.12.24 ,MGRPORT 7809

RMTTRAIL ./dirdat/ext2/sd

DISCARDFILE./dirrpt/dp2.dsc,APPEND,MEGABYTES 100

DISCARDROLLOVER AT 6:00

REPORTROLLOVER AT 6:00

REPORTCOUNT EVERY 1 HOURS,RATE

TABLE scott.*;

ADD EXTRACT dp1, EXTTRAILSOURCE./dirdat/ext1/sd

INFO EXTRACT dp2

ADD RMTTRAIL ./dirdat/ext1/sd, EXTRACT dp1, MEGABYTES100-----注意相对路径

ADD EXTRACT PORA_1, EXTTRAILSOURCE /u01/app/oracle/ogg/dirdat/pa

为PUMP进程PORA_1指定将本地TRAIL文件传输到目标端后保存成目标端TRAIL文件的名字。

ADD RMTTRAIL /u01/app/oracle/ogg/dirdat/pa, EXTRACTPORA_1, MEGABYTES 5

START EXTRACT dp1

GGSCI (oggsource as ogg@dbdream) 36>INFO EXTRACT dp1

注意路径存在和环境变量相关内容

3.8目标端配置同步进程RORA_1

edit param rep1

REPLICAT rep1

SETENV (ORACLE_HOME ="/u01/app/oracle/product/11.2.0/db_1" )

SETENV (ORACLE_SID = "orcl")

SETENV (NLS_LANG ="AMERICAN_AMERICA.ZHS16GBK")

USERID ogg, PASSWORD ogg

--HANDLECOLLISIONS

ASSUMETARGETDEFS

DISCARDFILE ./dirrpt/rep2.dsc ,append,megabytes 10

---SOURCEDEFS./dirdef/def.def

DDL INCLUDE MAPPED , OBJTYPE 'TABLE' &

INCLUDE MAPPED OBJTYPE 'INDEX'

MAP SCOTT.EMP_OGG ,TARGET SCOTT.EMP_OGG ;

MAP SCOTT.DEPT_OGG ,TARGET SCOTT.DEPT_OGG ;

ADD REPLICAT rep1, EXTTRAIL ./dirdat/ext1/sd

START REPLICAT rep1

注意参数

ERROR OGG-00423 Could not find definitionfor source.person

In the Replicat param Please tryASSUMETARGETDEFS , if source and target have same table structure..

if both the structures are different ,generate the source definition and use SOURCEDEFS in Replicate Param.

handcollisions被注释了,也就是说当target端缺失delete 、update数据时,target端无法自动处理。

验证数据

数据 目标 进程 配置 文件 用户 名字 端的 数据库 检查 检查点 同步 目录 操作系统 参数 环境 系统 脚本 路径 测试 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 百单网互联网科技有限公司怎么样 山东特亿宝互联网科技有限公司 湖南永感互联网科技有限公司 麻工互联网科技 互联网科技开发公司 华宇互联网科技 顺网科技2021年互联网排名 深圳互联网科技怎么样 互联网教育科技公司vipkid 小米互联网科技园设置 以后互联网后是啥科技 现代互联网科技股 华服互联网科技官网 互联网科技有哪些公司 互联网科技与管理 互联网为啥属于高科技 互联网科技公司营业执照怎么办理 美国五大互联网科技公司市值多少 互联网金融金融科技 武汉亿视互联网科技有限公司 互联网黑科技 美国互联网保险保险科技 无锡溥仪互联网科技有限公司 互联网科技热点资讯 中国互联网公司排名锤子科技 工业互联网展湾科技股份有限公司 山东有哪些互联网科技公司 有人说阿里系是互联网科技企业 山东蛋芒互联网科技有限公司 北京品多多互联网科技有限公司
0