oracleogg搭建

 

创新互联建站是由多位在大型网络公司、广告设计公司的优秀设计人员和策划人员组成的一个具有丰富经验的团队,其中包括网站策划、网页美工、网站程序员、网页设计师、平面广告设计师、网络营销人员及形象策划。承接:网站建设、成都做网站、网站改版、网页设计制作、网站建设与维护、网络推广、数据库开发,以高性价比制作企业网站、行业门户平台等全方位的服务。

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端无法自动处理。

验证数据


本文题目:oracleogg搭建
本文路径:http://pwwzsj.com/article/godsig.html