oracle golden date-Virtualbox环境

摘要:本文档为本人学习 goldendate时的相关实验过程,仅供参考。

1 环境介绍

本文主要分介绍 OGG 的安装部署,下面是实验环境介绍。

实验规划:

项目

源环境

目标环境

操作系统

OEL 6.5 X86_64

OEL 6.5 X86_64

主机名

dbdream

stream

IP 地址

192.168.56.102

192.168.56.103

数据库及版本

ORACLE 11.2.0.4.0

ORACLE 11.2.0.4.0

数据库字符集

ZHS16GBK

ZHS16GBK

ORACLE SID

dbdream

stream

Goldengate 用户

ogg

ogg

Goldengate 版本

112101

112101

2 数据库相关操作

2.1 创建 ogg 操作系统用户

两台服务器都需要创建 ogg 操作系统用户(此步骤非必须,也可以使用 ORACLE 用户安装)。

useradd -u 1003 -g oinstall -G dba ogg

passwd WXHWXH

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

源端

export LD_LIBRARY_PATH=/u01/app/oracle/product/11.2.0/db_1/lib

export ORACLE_SID=dbdream

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1

export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/jdk/bin:$PATH

stty erase ^h

目标端

export LD_LIBRARY_PATH=/u01/app/oracle/product/11.2.0/db_1/lib

export ORACLE_SID=stream

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1

export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/jdk/bin:$PATH

stty erase ^h

运行下面的命令使变量生效。

source .bash_profile

2.3 创建 OGG 安装目录

两台服务器都需要做同样的操作。

mkdir /ogg

chown -R ogg:oinstall /ogg

2.4 上传 OGG 安装介质

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

ogg112101_fbo_ggs_Linux_x64_ora11g_64bit.zip

unzip ogg112101_fbo_ggs_Linux_x64_ora11g_64bit.zip 后

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-----------------------纯净系统到此,已经安装好数据库哦

-----------------------纯净系统到此,已经安装好数据库哦

-----------------------纯净系统到此,已经安装好数据库哦

-----------------------纯净系统到此,已经安装好数据库哦

启动linux系统后:记着用oracle用户启动监听和数据库:

su - oracle

lsnrctl start

sqlplus sys/WXHWXH AS SYSDBA

startup

2.5 登录 OGG 测试

su - ogg

cd /ogg

[ogg@dbdream 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 (dbdream) 1>

如果 LD_LIBRARY_PATH 变量设置正确,会像上面演示一样正确进入命令行,如果提示找不到 so 文件,就

需要查看 LD_LIBRARY_PATH 变量是否正确设置。

2.6 建立 OGG 表空间

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

首先创建目录:/u01/app/gatedata  权限777

exit

sqlplus sys/WXHWXH AS SYSDBA

SQL> create tablespace ogg datafile '/u01/app/gatedata/ogg01.dbf' size 50M autoextend on;

Tablespace created.

2.7 创建 OGG 用户

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

User created.

2.8 为 OGG 用户授权

ogg用户的一些权限必须显示方式授权,否则会报错ORA-04098: trigger 'SYS.GGS_DDL_TRIGGER_BEFORE' is invalid and failed re-validation

SQL> grant CONNECT, RESOURCE to ogg;

Grant succeeded.

SQL> grant SELECT ANY DICTIONARY, SELECT ANY TABLE to ogg;

Grant succeeded.

SQL> grant ALTER ANY TABLE to ogg;

Grant succeeded.

SQL> grant FLASHBACK ANY TABLE to ogg;

Grant succeeded.

SQL> grant EXECUTE on DBMS_FLASHBACK to ogg;

Grant succeeded.

SQL> grant insert any table to ogg;

Grant succeeded.

SQL> grant update any table to ogg;

Grant succeeded.

SQL> grant delete any table to ogg;

Grant succeeded.

SQL> GRANT CREATE TABLE,CREATE SEQUENCE TO OGG;---必须显示授权,否则无法执行@/ogg/ddl_setup.sql。

Grant succeeded.

DDL,需要:增加如下权限:

grant execute on utl_file to ogg;

UTL_FILE是oracle提供的一个标准的工具包,用来读写文件使用;--utl_file包授权,添加执行权限

不同的需求,OGG 用户需要的权限也不一样,上面的权限基本可以支持大多数情况的数据复制,如上面的权限不足,需根据实际需求授权。

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

SQL> select NAME,OPEN_MODE,FORCE_LOGGING,SUPPLEMENTAL_LOG_DATA_MIN from v$database;

NAME OPEN_MODE FOR SUPPLEME

--------- -------------------- --- --------

DBDREAM READ WRITE NO NO

上面显示数据库的附加日志和 force log 都没有开启,使用下面的命令开启。

SQL> alter database force logging;

Database altered.

SQL> alter database add SUPPLEMENTAL log data;

Database altered.

SQL> select NAME,OPEN_MODE,FORCE_LOGGING,SUPPLEMENTAL_LOG_DATA_MIN from v$database;

NAME OPEN_MODE FOR SUPPLEME

--------- -------------------- --- --------

DBDREAM READ WRITE YES YES

2.10 运行 OGG 支持 DDL 脚本-ogg用户

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

sqlplus / as sysdba

 

@marker_setup.sql

@ddl_setup.sql

@role_setup.sql

@ddl_enable.sql

如果没有在 OGG 的安装目录登录数据库,需要指定脚本的位置,比如我的 OGG 安装目录为/ogg。

su - ogg

cd /ogg----------------必须到安装目录

 

sqlplus / as sysdba---这个哦

@/ogg/marker_setup.sql

@/ogg/ddl_setup.sql

@/ogg/role_setup.sql

@/ogg/ddl_enable.sql

GRANT GGS_GGSUSER_ROLE TO ogg;  ------------授权,并且要授给GoldenGate用户操作DDL复制相关对象的权限!!!!!!!

 

NOTE:@/ogg/ddl_setup.sql无法执行,建议执行@/ogg/ddl_disable.sql,然后再执行@/ogg/ddl_setup.sql

提示输入:Enter Oracle GoldenGate schema name:  输入ogg即可

2.11 创建 OGG 的管理目录

在正式配置 OGG 之前,首先需要创建 OGG 的管理目录,源端和目标端都需要创建,登录 OGG,只需要执行 create subdirs 命令就可以了。

源端:

[ogg@dbdream 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 (dbdream) 1> create subdirs

Creating subdirectories under current directory /ogg

Parameter files

/ogg/dirprm: already exists

Report files

/ogg/dirrpt: created

Checkpoint files

/ogg/dirchk: created

Process status files

/ogg/dirpcs: created

SQL script files

/ogg/dirsql: created

Database definitions files

/ogg/dirdef: created

Extract data files

/ogg/dirdat: created

Temporary files

/ogg/dirtmp: created

Stdout files

/ogg/dirout: created

目标端:

[ogg@dbdream 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 (dbdream) 1> create subdirs

Creating subdirectories under current directory /ogg

Parameter files

/ogg/dirprm: already exists

Report files

/ogg/dirrpt: created

Checkpoint files

/ogg/dirchk: created

Process status files

/ogg/dirpcs: created

SQL script files

/ogg/dirsql: created

Database definitions files

/ogg/dirdef: created

Extract data files

/ogg/dirdat: created

Temporary files

/ogg/dirtmp: created

Stdout files

/ogg/dirout: created

各目录用途如下表:

名字

用途

dirprm

存放 OGG 参数各的配置信息

dirrpt

存放进程报告文件

dirchk

存放检查点文件

dirpcs

存放进程状态文件

dirsql

存放 SQL 脚本文件

dirdef

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

dirdat

存放 Trail 文件,也就是 Capture 进程捕获的日志文件

dirtmp

当事物需要的内存超过已分配内存时,默认存储在这个目录

3 OGG复制流程

之前所做的只是准备工作,现在就可以正式配置 OGG 了,在配置 OGG 之前,先看下 OGG 的复制流程,OGG

和其他传统复制软件一样,也是通过源端捕获/挖掘 ORACLE 的日志信息,目标端根据源端送过来的日志信息进行重塑,实现源端-目标端数据同步,可以参考下图。

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

4 建立测试表

源端基于 SCOTT 用户的 EMP 和 DEPT 表建立 EMP_OGG 和 DEPT_OGG 测试表,包含数据。

exit

sqlplus sys/WXHWXH AS SYSDBA;

alter user scott account unlock;

passwd tiger;

alter user scottidentified by tiger;

exit

sqlplus scott/tiger

SQL> create table emp_ogg as select * from emp;

Table created.

SQL> create table dept_ogg as select * from dept;

Table created.

目标端基于 SCOTT 用户的 EMP 和 DEPT 表建立 EMP_OGG 和 DEPT_OGG 测试表,不包含数据。

SQL> create table emp_ogg as select * from emp where 1=2;

Table created.

SQL> create table dept_ogg as select * from dept where 1=2;

Table created.

源端和目标端分别在 EMP_OGG 和 DEPT_OGG 测试表上建立主键(或唯一键)。

SQL> alter table EMP_OGG add constraint PK_EMPNO_OGG primary key (EMPNO);

Table altered.

SQL> alter table DEPT_OGG add constraint PK_DEPTNO_OGG primary key (DEPTNO);

Table altered.

4.2 源端添加表级 TRANDATA

添加表级的 trandata 可以理解为需要将哪些用户的哪些表和目标库同步,其实也是添加表级的 supplemental log,但是只有上文打开的 minimal supplemental log 后,这个才生效。

使用建立的 OGG 用户从 OGG 登录源端数据库。

cd /ogg

 

./ggsci

GGSCI (dbdream) 2> DBLOGIN USERID ogg, PASSWORD WXHWXH

Successfully logged into database.

源端添加表级TRANDATA,本案例使用 EMP_OGG 和 DEPT_OGG 表。

GGSCI (dbdream) 3> add trandata scott.emp_ogg

Logging of supplemental redo data enabled for table SCOTT.EMP_OGG.

GGSCI (dbdream) 4> add trandata scott.dept_ogg

Logging of supplemental redo data enabled for table SCOTT.DEPT_OGG.

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

GGSCI (dbdream) 5> INFO TRANDATA scott.*

Logging of supplemental redo log data is disabled for table SCOTT.BONUS. Logging of supplemental redo log data is disabled for table SCOTT.DEPT. Logging of supplemental redo log data is enabled for table SCOTT.DEPT_OGG. Columns supplementally logged for table SCOTT.DEPT_OGG: DEPTNO.

Logging of supplemental redo log data is disabled for table SCOTT.EMP. Logging of supplemental redo log data is enabled for table SCOTT.EMP_OGG.

Columns supplementally logged for table SCOTT.EMP_OGG: SAL, HIREDATE, MGR, COMM, DEPTNO, ENAME, EMPNO, JOB. Logging of supplemental redo log data is disabled for table SCOTT.SALGRADE.

5 相关进程

5.1 配置 MGR 管理进程

源端:

GGSCI (dbdream) 8> EDIT PARAMS MGR

加入以下两行内容

PORT 7809

PURGEOLDEXTRACTS /ogg/dirdat, USECHECKPOINTS

目标端:

GGSCI (stream) 2> EDIT PARAMS MGR

加入以下两行内容

PORT 7809

PURGEOLDEXTRACTS /ogg/dirdat, USECHECKPOINTS

参数说明:

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

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

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

USECHECKPOINTS:使用检查点队列。

本实验只用到上述参数,MGR 其他参数详见下表,摘自 OGG 官方文档。

Manager parameters: General

名字

用途

CHARSET

Speci

fies a multibyte character set for the process to use

instead of the operating system default when reading the

parameter file.

COMMENT

Allows insertion of comments in a parameter file.

SOURCEDB

Specifies a data source name as part of the login

information.

USERID

Provides login information for Manager when it needs to

access the database.

SYSLOG

Filters the types of Oracle GoldenGate messages that are

written to the system logs.

Manager parameters: Port management

名字

用途

DYNAMICPORTLIST

Specifies the ports that Collector can dynamically allocate.

PORT

Establishes the TCP/IP port number on which Manager listens

for requests.

Manager parameters: Process management

名字

用途

AUTORESTART

Specifies processes to be restarted by Manager after a

failure.

AUTOSTART

Specifies processes to be started when Manager starts.

BOOTDELAYMINUTES

Determines how long after system boot time Manager delays

until performing main processing activities. This parameter

supports Windows.

UPREPORT

Determines how often process heartbeat messages are reported.

Manager parameters: Event management

名字

用途

DOWNCRITICAL

Reports processes that stopped gracefully or abnormally.

DOWNREPORT

Controls the frequency for reporting stopped processes.

LAGCRITICAL

Specifies a lag threshold that is considered critical and

generates a warning to the error log.

LAGINFO

Specifies a lag threshold at which an informational message

is reported to the error log.

LAGREPORT

Sets an interval for reporting lag time to the error log.

Manager parameters: Maintenance

名字

用途

CHECKMINUTES

Determines how often Manager cycles through maintenance

activities.

PURGEDDLHISTORY

Purges rows from the Oracle DDL history table when they are

no longer needed.

 

PURGEDDLHISTORYALT

Purges rows from the alternate Oracle DDL history table that keeps track of partition IDs that are associated with a table ID.

PURGEMARKERHISTORY

Purges Oracle marker table rows that are no longer needed.

PURGEOLDEXTRACTS

Purges trail data that is no longer needed.

PURGEOLDTASKS

Purges Extract and Replicat tasks after a specified period of time.

STARTUPVALIDATIONDELAY[CSECS]

Sets a delay time after which Manager checks that processes are still running after startup.

配置完 MGR 管理进程后,就可以启动 MGR 管理进程(源端和目标端都需要启动)。

GGSCI (dbdream) 9> start mgr

Manager started.

可以通过 INFO 命令查看进程的状态(最好每次启动时在两端都查看下)。

GGSCI (dbdream) 10> info mgr

Manager is running (IP port dbdream.7809).

5.2 配置初始化数据进程

5.2.1 源端进程的建立

由于在创建测试表的时候,源端的测试表有数据,而目标端的测试表只有结构,没有数据,所以需要初始

化目标端的数据,所谓初始化,就是让目标端的数据和源端的数据在这个时间点是一模一样的,所以初始化工

作并不需要一定使用 OGG,也可以使用 EXP、EXPDP、SQLLOAD 等其他工具,本文主要介绍如何使用 OGG 进行数

据初始化,下面在源端配置捕获进程 EINI_1。

GGSCI (dbdream) 11> ADD EXTRACT EINI_1, SOURCEISTABLE

EXTRACT added.

查看 EINI_1 进程状态。

GGSCI (dbdream) 12> INFO EXTRACT *, TASKS

EXTRACT

EINI_1

Initialized

2012-11-13 22:45   Status STOPPED

Checkpoint

Lag

Not

Available

Log Read Checkpoint

Not

Available

First Record

Record 0

Task

SOURCEISTABLE

由于只是添加了捕获进程 EINI_1,还没有进行配置和启动这个进程,所以现在的状态是 STOPPED 状态。

源端编辑捕获进程 EINI_1。

GGSCI (dbdream) 13> EDIT PARAMS EINI_1 --加入以下内容

EXTRACT EINI_1

SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)

USERID ogg, PASSWORD WXHWXH

RMTHOST 192.168.56.103, MGRPORT 7809

RMTTASK REPLICAT, GROUP RINI_1

TABLE scott.EMP_OGG;

TABLE scott.DEPT_OGG;

参数介绍:

EXTRACT EINI_1:说明这是 EXTRACT 进程,名字是 EINI_1 SETENV:SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)环境变量,一定要设置和数据库字符集一样,否则可能会乱码

指定extract启动时使用oracle的相关环境变量

USERID:数据库 OGG 用户 --- 登陆哪台数据库抓取日志

PASSWORD:数据库用户 OGG 的密码

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

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

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

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

编辑好捕获进程 EINI_1 后,还需要在目标端配置 REPLICAT 应用进程,名字要和源端的捕获进程 EINI_1 里面 R MTTASK REPLICAT 参数配置的一样,也就是还需要在目标端配置 RMTTASK REPLICAT RINI_1

5.2.2 配置目标端 REPLICAT 进程

目标端:

GGSCI (stream) 7> EDIT PARAMS RINI_1 --加入以下内容

REPLICAT RINI_1

SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)

ASSUMETARGETDEFS

USERID ogg, PASSWORD WXHWXH

DISCARDFILE /ogg/dirrpt/RINIaa.dsc, PURGE

MAP scott.*, TARGET scott.*;

add replicat RINI_1,specialrun----------------------建议还是编辑完后直接执行吧

参数介绍:

REPLICAT RINI_1:说明这是 REPLICAT 应用进程,名字叫 RINI_1 SETENV:语言变量,同捕获进程 EINI_1

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

数,详见 OGG 官方文档。

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

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

MAP:源端捕获的表的名字

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

5.2.3 初始化数据

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

GGSCI (dbdream) 14> START EXTRACT EINI_1

Sending START request to MANAGER ...

EXTRACT EINI_1 starting

目标端执行一下 info rini_1 detail,如果出现下面的内容,就不用执行add replicat RINI_1,specialrun,否则目标端执行add replicat RINI_1,specialrun----------------------建议还是编辑完后直接执行吧

REPLICAT   RINI_1    Initialized   2016-03-31 14:50   Status STOPPED

Checkpoint Lag       00:00:00 (updated 00:11:54 ago)

Log Read Checkpoint  Not Available

Task                 SPECIALRUN

  Extract Source                          Begin             End             

  Not Available                           * Initialized *   First Record    

启动源端的捕获进程 EINI_1 后,正常情况下(如果配置没问题),源端的数据已经传送到目标端了,可以

通过 VIEW 命令查看源端捕获进程 EINI_1 的工作状态。

GGSCI (dbdream) 11> VIEW REPORT EINI_1

--在最后部分会看到

Output to RINI_1:

From Table SCOTT.EMP_OGG:

#

inserts:

14

#

updates:

0

#

deletes:

0

#

discards:

0

From Table SCOTT.DEPT_OGG:

#

inserts:

4

#

updates:

0

#

deletes:

0

#

discards:

0

REDO Log Statistics

Bytes parsed

0

Bytes output

3056

如果配置正确,会看到上面的日志,日志会告诉你在目标端 SCOTT.EMP_OGG 表 INSERT 了 14 条记录,SCOT T.DEPT_OGG 表 INSERT 了 4 条记录。如果在上面日志的最后部分出现 ERROR,就需要去检查 OGG 的安装目录下的 ggserr.log 日志,这个日志相当于数据库的告警日志。

5.2.4 验证初始化数据

登录目标端数据库,查看初始化是否成功。

SQL> select * from emp_ogg;

EMPNO

ENAME

JOB

MGR

HIREDATE

SAL

COMM

DEPTNO

----------

------ --------- ----

---------

--------- --------

----------

7369

SMITH

CLERK

7902 17-DEC-80 800

20

7499

ALLEN

SALESMAN

7698

20-FEB-81 1600

300

30

7521

WARD

SALESMAN

7698 22-FEB-81 1250

500

30

7566

JONES

MANAGER

7839 02-APR-81 2975

20

7654

MARTIN

SALESMAN

7698

28-SEP-81 1250

1400

30

7698

BLAKE

MANAGER

7839 01-MAY-81 2850

30

7782

CLARK

MANAGER

7839 09-JUN-81 2450

10

7788

SCOTT

ANALYST

7566 19-APR-87 3000

20

7839

KING

PRESIDENT

17-NOV-81 5000

10

7844

TURNER

SALESMAN

7698 08-SEP-81 1500

0

30

7876

ADAMS

CLERK

7788 23-MAY-87 1100

20

7900

JAMES

CLERK

7698 03-DEC-81 950

30

7902

FORD

ANALYST

7566

03-DEC-81

3000

20

7934

MILLER CLERK

7782

23-JAN-82

1300

10

14 rows selected.

SQL> select * from dept_ogg;

DEPTNO

DNAME

LOC

----------

-------------- -------------

10

ACCOUNTING

NEW YORK

20

RESEARCH

DALLAS

30

SALES

CHICAGO

40

OPERATIONS

BOSTON

可以看到初始化是正确的。初始化之后,上文提到的初始化进程(EINI_1、RINI_1)自动停止,因为通常

情况下初始化数据工作只会做一次。可以通过 INFO 命令查看进程的状态。源端:

GGSCI (dbdream) 9> INFO EXTRACT EINI_1

EXTRACT

EINI_1

Last Started 2012-11-14 02:03   Status STOPPED

Checkpoint

Lag

Not Available

Log Read Checkpoint

Table SCOTT.DEPT_OGG

2012-11-14 02:03:22  Record 4

Task

SOURCEISTABLE

目标端:

GGSCI (stream) 1> INFO REPLICAT RINI_1

REPLICAT

RINI_1

Initialized   2012-11-14 20:30   Status STOPPED

Checkpoint

Lag

00:00:00 (updated 03:16:37 ago)

Log Read Checkpoint

Not Available

Task

SPECIALRUN

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

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

源端和目标端都需配置。

GGSCI (stream) 2> EDIT PARAMS ./GLOBALS

--加入以下信息

CHECKPOINTTABLE ogg.ggschkpt

若支持DDL:

CHECKPOINTTABLE ogg.ggschkpt

GGSCHEMA ogg

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

GGSCI (stream) 4> ADD CHECKPOINTTABLE

ERROR: Missing checkpoint table specification.

退出 OGG,重新登录,并使用 OGG 用户登录数据库,源端和目标端都需要执行。

GGSCI (stream) 5> exit [ogg@stream 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 (stream) 1> dblogin userid ogg,password WXHWXH

Successfully logged into database.

只需要执行 ADD CHECKPOINTTABLE 命令,OGG 会自动在 ORACLE 的 OGG 用户下创建检查点,源端和目标端

需要执行。

GGSCI (stream) 2> ADD CHECKPOINTTABLE

No checkpoint table specified, using GLOBALS specification (ogg.ggschkpt)...

Successfully created checkpoint table ogg.ggschkpt.

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

[ogg@dbdream ogg]$ sqlplus ogg/WXHWXH

SQL*Plus: Release 11.2.0.3.0 Production on Wed Nov 14 13:10:55 2012

Copyright (c) 1982, 2011, Oracle. All rights reserved.

Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production

With the Partitioning option

SQL> select * from tab;

TNAME TABTYPE CLUSTERID

------------------------------ ------- ----------

GGSCHKPT

TABLE

GGSCHKPT_LOX

TABLE

5.4 源端配置捕获进程

-----------(检查点进程/捕获进程/PUMP/同步进程)---表级别的实际上就这个4个

现在已经可以配置数据同步了,下面在源端配置捕获进程。

GGSCI (dbdream) 10> EDIT PARAMS EORA_1 --加入以下内容

EXTRACT EORA_1

SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)

USERID ogg, PASSWORD WXHWXH

EXTTRAIL /ogg/dirdat/aa

TABLE scott.EMP_OGG;

TABLE scott.DEPT_OGG;

参数介绍:

以上参数基本都在上文提过,这里不在重复,说下 EXTTRAIL 参数,EXTTRAIL 参数是 TRAIL 队列文件存放

的路径和命名格式,TRAIL 文件可以理解为存放捕获进程捕获的日志文件。此时还需要将捕获进程 EORA_1 添加

OGG。

若DDL:

EXTRACT EORA_1

SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)

USERID ogg, PASSWORD WXHWXH

EXTTRAIL /ogg/dirdat/aa

ddl include all

TABLE scott.*;

GGSCI (dbdream) 11> ADD EXTRACT EORA_1, TRANLOG, BEGIN NOW

EXTRACT added.

GGSCI (dbdream) 12> ADD EXTTRAIL /ogg/dirdat/aa, EXTRACT EORA_1, MEGABYTES 5

EXTTRAIL added.

上面的两个命名告诉 OGG,捕获进程从启动起开始捕获,捕获数据保存到 TRAIL 文件,及 TRAIL 文件的路径、命名格式,单个 TRAIL 文件最大大小。

现在就可以启动源端捕获进程 EORA_1 了。

GGSCI (dbdream) 13> START EXTRACT EORA_1

Sending START request to MANAGER ...

EXTRACT EORA_1 starting

使用 INFO 命令查看 EORA_1 进程是否是 RUNNING 状态。

GGSCI (dbdream) 14> INFO EXTRACT EORA_1

EXTRACT

EORA_1

Last Started 2012-11-14 02:06   Status RUNNING

Checkpoint Lag

00:00:58 (updated 00:00:08 ago)

Log Read Checkpoint

Oracle Redo Logs

2012-11-14 02:05:58  Seqno 19, RBA 38097424

SCN 0.0 (0)

5.5 源端配置 PUMP 传输进程

此步骤也是非必须的,如果不配置传输进程,OGG 会通过 EXTRACT 进程传输 TRAIL 队列文件,但是和检查点队列一样,为了保证断点续传 ORACLE 建议配置 PUMP 传输进程。

GGSCI (dbdream) 15> EDIT PARAMS PORA_1 --加入以下内容

EXTRACT PORA_1

SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)

PASSTHRU

RMTHOST 192.168.56.103, MGRPORT 7809

RMTTRAIL /ogg/dirdat/pa

TABLE scott.EMP_OGG;

TABLE scott.DEPT_OGG;

   对方IP和端口

     passthru参数控制Extract process的模式,当为PASSTHRU时,不检查表的定义,仅当source 和target 对象的结构一样,并没有map或者filter 时使用,不检查表定义,可以加快处理的速度。

DDL:

EXTRACT PORA_1

SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)

PASSTHRU

RMTHOST 192.168.56.103, MGRPORT 7809

RMTTRAIL /ogg/dirdat/pa

TABLE scott.*;

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

GGSCI (dbdream) 16> ADD EXTRACT PORA_1, EXTTRAILSOURCE /ogg/dirdat/aa

EXTRACT added.

此时用 INFO 命令可以看到 PUMP 进程 PORA_1 的状态。

GGSCI (dbdream) 17> INFO EXTRACT PORA_1

EXTRACT

PORA_1

Initialized

2012-11-14 02:10   Status STOPPED

Checkpoint Lag

00:00:00 (updated 00:00:10 ago)

Log Read Checkpoint

File /ogg/dirdat/aa000000

First Record

RBA 0

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

GGSCI (dbdream) 18> ADD RMTTRAIL /ogg/dirdat/pa, EXTRACT PORA_1, MEGABYTES 5

RMTTRAIL added.

下面就可以启动 PUMP 进程 PORA_1 了,启动后看下 PORA_1 的状态。

GGSCI (dbdream) 19> START EXTRACT PORA_1

Sending START request to MANAGER ...

EXTRACT PORA_1 starting --查看状态

GGSCI (dbdream) 20> INFO EXTRACT PORA_1

EXTRACT

PORA_1

Last

Started

2012-11-14 02:11   Status RUNNING

Checkpoint

Lag

00:00:00 (updated 00:00:03 ago)

Log Read Checkpoint

File

/ogg/dirdat/aa000000

First Record

RBA 0

此时在目标端/ogg/dirdat/目录下,就会看到由源端 PUMP 进程 PORA_1 传输过来的 TRAIL 文件。

[ogg@stream dirdat]$ pwd

/ogg/dirdat

[ogg@stream dirdat]$ ls

pa000000

[ogg@stream dirdat]$

5.6 目标端配置同步进程 RORA_3

GGSCI (stream) 5> add replicat RORA_3 exttrail /ogg/dirdat/pa,checkpointtable ogg.ggschkpt

REPLICAT added.

目标端编辑 RORA_3 进程。

GGSCI (stream) 7> edit params RORA_3

--加入以下内容

REPLICAT RORA_3

SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)

USERID ogg, PASSWORD WXHWXH

HANDLECOLLISIONS

ASSUMETARGETDEFS

DISCARDFILE /ogg/dirrpt/RORA_aa.DSC, PURGE

MAP scott.emp_ogg, TARGET scott.emp_ogg;

MAP scott.DEPT_OGG, TARGET scott.DEPT_OGG;

最后的封号必须有!!!!否则有报错

ERROR   OGG-00396  Oracle GoldenGate Delivery for Oracle, rora_3.prm:  Command not terminated by semi-colon.

DDL:

REPLICAT RORA_3

SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)

USERID ogg, PASSWORD WXHWXH

HANDLECOLLISIONS

ASSUMETARGETDEFS

DISCARDFILE /ogg/dirrpt/RORA_aa.DSC, PURGE

ddl include all

MAP scott.*, TARGET scott.*;

目标端编辑同步进程 RORA_1 后,就可以启动 RORA_1 进程。

GGSCI (stream) 5> START REPLICAT RORA_3

START REPLICAT RORA_1

Sending START request to MANAGER ...

REPLICAT RORA_1 starting

启动 RORA_1 进程后,查看进程状态。

GGSCI (stream) 6> INFO REPLICAT RORA_3

REPLICAT

RORA_1

Last Started

2012-11-15 00:08   Status RUNNING-------------------到这一步运行不起来

Checkpoint

Lag

00:00:00 (updated 00:00:05 ago)

Log Read Checkpoint

File /ogg/dirdat/pa000000

First Record

RBA 0

6 验证 OGG 复制

成功配置并启动以上进程后,就可以验证 OGG 数据同步了,最简单的测试就是修改源库同步的表的数据,测试需要测试 DML 和 DDL,本文此部分省略,可以参考下一篇文章《OGG 补丁安装》。

 

附录重启数据库后goldgate的操作

 

重启数据库后:

1.启动数据库和监听;

2.源库和目标库启动MGR 管理进程:su - ogg

WXHWXH

cd /ogg

./ggsci

scott  passwd:tiger

GGSCI (dbdream) 9> start mgr

GGSCI (dbdream) 10> info mgr

3.源端配置捕获进程

GGSCI (dbdream) 13> START EXTRACT EORA_1

GGSCI (dbdream) 14> INFO EXTRACT EORA_1

4.源端配置 PUMP 传输进程

GGSCI (dbdream) 19> START EXTRACT PORA_1

GGSCI (dbdream) 20> INFO EXTRACT PORA_1

5.目标端配置同步进程 RORA_1

GGSCI (stream) 5> START REPLICAT PORA_3

GGSCI (stream) 6> INFO REPLICAT PORA_3

6.目标库

GGSCI (stream) 7> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                            

REPLICAT    RUNNING     PORA_3      00:00:00      00:00:09   

7.源库

GGSCI (dbdream) 9> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                           

EXTRACT     RUNNING     EORA_1      00:00:00      00:00:04    

EXTRACT     RUNNING     PORA_1      00:00:00      00:00:07   

启动linux系统后:记着用oracle用户启动监听和数据库:

su - oracle

lsnrctl start

sqlplus sys/WXHWXH AS SYSDBA

startup

su - ogg

WXHWXH

cd /ogg

./ggsci

scott  passwd:tiger

报错日志在:/ogg 目录   ggserr.log

START REPLICAT RORA_3-----------------同步进程(目标机)

START EXTRACT PORA_1-----------------传送进程(源机)

START EXTRACT EORA_1-----------------抽取进程(源机)

START mgr

STOP REPLICAT RORA_3

STOP EXTRACT PORA_1

STOP EXTRACT EORA_1

STOP mgr

猜你喜欢

转载自blog.csdn.net/w892824196/article/details/79236184