您的当前位置:首页正文

oracle ogg配置文档

来源:华拓网


说明:

源端:

操作系统:oracle_linux_5.6_32

数据库:oracle_10.2.0.1_32

goldengate:for_10g_x86

目标端:

操作系统:oracle_linux_5.6_32

数据库:oracle_10.2.0.1_32

goldengate:for_10g_x86

注意:

本实验是模拟在同平台同版本上面安装和配置OGG,并实现简单的DML复制,至于复杂的其他方面

希望大家能自己多多实验。

作者:

姓名:oracle_zsx。

QQ:1468815296。

配置步骤:

1、

检查源端和目标端正确的IP解析:

源端:

[root@gg1 ~]# cat /etc/hosts

# Do not remove the following line, or various programs

# that require network functionality will fail.

127.0.0.1 localhost.localdomain localhost

::1 localhost6.localdomain6 localhost6

192.168.1.71 gg1

目标端:

[root@gg2 ~]# cat /etc/hosts

# Do not remove the following line, or various programs

# that require network functionality will fail.

127.0.0.1 localhost.localdomain localhost

::1 localhost6.localdomain6 localhost6

192.168.1.72 gg2

2、

设置LD_LIBRARY_PATH,为了安装OGG所用的动态链接库。如果没有配置这个路径的话,在安装OGG的过程

中会报找不到动态链接库的错误,用户可以自己尝试一下。

源端:

[root@gg1 ~]# su - oracle

[oracle@gg1 ~]$ vi .bash_profile

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1

export SQLPATH=/home/oracle/labs

export PATH=$ORACLE_HOME/bin:$PATH

export nls_lang=american_america.zhs16gbk

export ORACLE_SID=ogg

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib

[oracle@gg1 ~]$ source .bash_profile

目标端:

[root@gg2 ~]# su - oracle

[oracle@gg2 ~]$ vi .bash_profile

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1

export SQLPATH=/home/oracle/labs

export PATH=$ORACLE_HOME/bin:$PATH

export nls_lang=american_america.zhs16gbk

export ORACLE_SID=ogg

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib

[oracle@gg2 ~]$ source .bash_profile

3、

在源端创建专用的表空间、schema、并授权。

create tablespace goldengate datafile

'/data/oracle/oradata/orcl/goldengate01.dbf' size 100m autoextend on;

create user goldengate identified by goldengate default tablespace goldengate temporary tablespace temp;

grant connect to goldengate;

grant alter any table to goldengate;

grant alter session to goldengate;

grant create session to goldengate;

grant flashback any table to goldengate;

grant select any dictionary to goldengate;

grant select any table to goldengate;

grant resource to goldengate;

grant select any transaction to goldengate;

4、

检查源端数据库是否在归档模式,强烈建议在归档模式。

SQL> archive log list

Database log mode Archive Mode

Automatic archival Enabled

Archive destination /arch

Oldest online log sequence 1

Next log sequence to archive 3

Current log sequence 3

5、

源端:

添加附加日志来唯一标识一行记录,要在数据库级别打开最小开关。为了减少整个数据库添加附加日志,以及减少归档量,

goldengate建议复制哪些对象,就添加哪些表的附加日志(我们到时候是拿hr用户下的表来实验)。

检查:

SQL> select supplemental_log_data_min from v$database;

SUPPLEME

--------

NO

打开:

SQL> alter database add supplemental log data;

Database altered.

再次查看:

SQL> select supplemental_log_data_min from v$database;

SUPPLEME

--------

YES

切换日志组,使附加日志开关生效。

SQL> alter system switch logfile;

System altered.

解释:

在正常情况下,oracle是用rowid来唯一标示一行记录的,但goldengate这里不够,需要打开附加日志。

6、

我们先安装和配置goldengate,安装比较简单,解压之后下一步测试。

[root@gg1 ogg]# unzip ogg112101_fbo_ggs_Linux_x86_ora10g_32bit.zip

[root@gg1 ogg]# tar -xvf fbo_ggs_Linux_x86_ora10g_32bit.tar

[root@gg1 ogg]# chown -R oracle:oinstall /ogg/

注意:

自己要下载正确的软件。

7、

测试安装成功,只需进入命令行,就表明安装是成功的。

[oracle@gg1 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, x86, 32bit (optimized), Oracle 10g on Apr 23 2012 07:06:02

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

GGSCI (gg1) 1>

GGSCI (gg1) 1> info all

Program Status Group Lag at Chkpt Time Since Chkpt

MANAGER STOPPED

注意:

表示安装成功。

8、

在目标端也安装成功。

[root@gg2 ogg]# unzip ogg112101_fbo_ggs_Linux_x86_ora10g_32bit.zip

[root@gg2 ogg]# tar -xvf fbo_ggs_Linux_x86_ora10g_32bit.tar

[root@gg2 ogg]# chown -R oracle:oinstall /ogg/

[oracle@gg2 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, x86, 32bit (optimized), Oracle 10g on Apr 23 2012 07:06:02

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

GGSCI (gg2) 1> info all

Program Status Group MANAGER STOPPED

9、

配置源端和目标端的管理进程。

源端:

GGSCI (gg1) 2> create subdirs

GGSCI (gg1) 3> edit params mgr

port 7839

DYNAMICPORTLIST 7840-7850

Lag at Chkpt Time Since Chkpt

AUTOSTART EXTRACT *

AUTORESTART EXTRACT *

PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 7

LAGREPORTHOURS 1

LAGINFOMINUTES 30

LAGCRITICALMINUTES 45

GGSCI (gg1) 6> start mgr

Manager started.

GGSCI (gg1) 7> info all

Program Status Group Lag at Chkpt MANAGER RUNNING GGSCI (gg1) 8> info mgr

Manager is running (IP port gg1.7839).

Time Since Chkpt

目标端:

GGSCI (gg2) 2> create subdirs

GGSCI (gg2) 3> edit params mgr

port 7839

DYNAMICPORTLIST 7840-7850

AUTOSTART EXTRACT *

AUTORESTART EXTRACT *

PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 7

LAGREPORTHOURS 1

LAGINFOMINUTES 30

LAGCRITICALMINUTES 45

启动配置的管理进程

GGSCI (gg2) 4> start mgr

Manager started.

查看是否正在运行的管理进程,如果不是running请查看自己的原因。

GGSCI (gg2) 5> info all

Program Status Group Lag at Chkpt MANAGER RUNNING 查看刚刚设置的端口号有没有问题

GGSCI (gg2) 6> info mgr

Manager is running (IP port gg2.7839).

参数分析:

第一行表示管理进程的端口号。

第二行是接收进程使用的是动态接口列表的端口。

其他参数请大家自己有兴趣分析。

10、

Time Since Chkpt

源端:

查看要复制的表的日志信息是完整的,确保是logging。把nologing变成logging。

select owner||'.'||table_name table_name,logging

from dba_tables

where owner='HR';

TABLE_NAME LOG

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

HR.REGIONS NO

HR.LOCATIONS NO

HR.DEPARTMENTS NO

HR.JOBS NO

HR.EMPLOYEES NO

HR.JOB_HISTORY NO

HR.COUNTRIES

SQL> alter table HR.REGIONS logging;

Table altered.

SQL> alter table HR.LOCATIONS logging;

Table altered.

SQL> alter table HR.DEPARTMENTS logging;

Table altered.

SQL> alter table HR.JOBS logging;

Table altered.

SQL> alter table HR.EMPLOYEES logging;

Table altered.

SQL> alter table HR.JOB_HISTORY logging;

Table altered.

SQL> alter table HR.COUNTRIES logging;

Table altered.

11、

源端:

配置hr下面表的表级附加日志。配置登陆用户。并检查日志是否添加成功。

以goldengate这个schema登陆数据库。

GGSCI (gg1) 10> dblogin userid goldengate, password goldengate

Successfully logged into database.

查看:

GGSCI (gg1) 11> info trandata hr.*

Logging of supplemental redo log data is disabled for table HR.COUNTRIES.

Logging of supplemental redo log data is disabled for table HR.DEPARTMENTS.

Logging of supplemental redo log data is disabled for table HR.EMPLOYEES.

Logging of supplemental redo log data is disabled for table HR.JOBS.

Logging of supplemental redo log data is disabled for table HR.JOB_HISTORY.

Logging of supplemental redo log data is disabled for table HR.LOCATIONS.

Logging of supplemental redo log data is disabled for table HR.REGIONS.

注意:

发现是disable,还没有添加成功,继续下一步。

添加:

GGSCI (gg1) 12> add trandata hr.*

Logging of supplemental redo data enabled for table HR.COUNTRIES.

Logging of supplemental redo data enabled for table HR.DEPARTMENTS.

Logging of supplemental redo data enabled for table HR.EMPLOYEES.

Logging of supplemental redo data enabled for table HR.JOBS.

Logging of supplemental redo data enabled for table HR.JOB_HISTORY.

Logging of supplemental redo data enabled for table HR.LOCATIONS.

Logging of supplemental redo data enabled for table HR.REGIONS.

注意:

现在成功了,是enable的。

12、

配置源端的抓取进程。

GGSCI (gg1) 13> add extract ext_demo, tranlog, begin now, threads 1

EXTRACT added.

GGSCI (gg1) 14> info all

Program Status Group Lag at Chkpt Time Since Chkpt

MANAGER RUNNING

EXTRACT STOPPED EXT_DEMO 00:00:00 00:00:09

参数分析:

tranlog:表示数据抓取的来源是数据库的redo数据。

begin now:表示我们在启动这个抓取进程的就去抓取数据。

threads 1:表示我们数据库有多少个redo threads,单实例基本上是1或者不设,rac就自己设置了,

配置过RAC的基本都了解。

13、

添加源端的队列文件。

GGSCI (gg1) 15> add EXTTRAIL ./dirdat/r1, extract ext_demo,megabytes 100

EXTTRAIL added.

分析:

./dirdat:表示trail文件的目录

r1:trail文件的前缀

extract ext_demo:值指定给那个进程用的(ext_demo)。

megabytes 100:文件大小是100m

14、

编辑我们刚刚在源端配置的抓取进程的参数:

GGSCI (gg1) 16> edit param ext_demo

EXTRACT ext_demo

setenv (ORACLE_SID=ogg)

setenv (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)

userid goldengate,password goldengate

REPORTCOUNT EVERY 1 MINUTES, RATE

numfiles 5000

DISCARDFILE ./dirrpt/ext_demo.dsc,APPEND,MEGABYTES 1000

DISCARDROLLOVER AT 3:00

exttrail ./dirdat/r1,megabytes 100

dynamicresolution

TRANLOGOPTIONS EXCLUDEUSER goldengate

TRANLOGOPTIONS convertucs2clobs

TABLE HR.*;

分析:

setenv (ORACLE_SID=ogg):指定oracle的sid,单机环境下可以不设或者bashprofile文件中设置了默认的

也可以不设,但是集群环境就要指定了,这里我们强烈建议指定。

setenv (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK):源端数据库的字符集,一定要跟数据库中匹配。

userid goldengate,password goldengate:告诉抓取进程是通过这个用户登陆数据库的。

exttrail ./dirdat/r1,megabytes 100:与我们上面配置抓取进程的设置要一致,路径和大小嘛。

TABLE HR.*:最重要的,告诉抓取进程抓取的是哪些用户哪些表的数据。

15、

启动抓取进程:(确认自己的配置没有问题,否则进程可能不是running)

GGSCI (gg1) 26> info all

Program Status Group Lag at Chkpt Time Since Chkpt

MANAGER RUNNING

EXTRACT STOPPED EXT_DEMO 00:00:00 00:37:12

GGSCI (gg1) 27> start ext_demo

Sending START request to MANAGER ...

EXTRACT EXT_DEMO starting

GGSCI (gg1) 28> info all

Program Status Group Lag at Chkpt Time Since Chkpt

MANAGER RUNNING

EXTRACT RUNNING EXT_DEMO 00:00:00 00:00:10

16、

配置datapump进程,将抓取数据传到目标主机。负责TCPIP通讯。

GGSCI (gg1) 31> add extract dpe_demo, exttrailsource ./dirdat/r1

EXTRACT added.

输出:目标主机怎么写,也是定义datapumo进程的输出。

GGSCI (gg1) 33> add rmttrail ./dirdat/t1,EXTRACT dpe_demo,MEGABYTES 100

RMTTRAIL added.

分析:

exttrailsource:抓取进程的来源,因为这个进程不否则到数据库中取抓取,所以抓取的来源

是通过抓取进程已经生成好的trail文件中的内容。

17、

配置datapump进程参数:

GGSCI (gg1) 34> edit param dpe_demo

extract dpe_demo

dynamicresolution

passthru

rmthost 192.168.1.72, mgrport 7839, compress

rmttrail ./dirdat/t1

numfiles 5000

TABLE HR.*;

启动,如果有问题,状态不能为running,可以查看相应的日志在自己安装的ogghome目录下。

GGSCI (gg1) 37> start dpe_demo

Sending START request to MANAGER ...

EXTRACT DPE_DEMO starting

GGSCI (gg1) 38> info all

Program Status Group Lag at Chkpt Time Since Chkpt

MANAGER RUNNING

EXTRACT RUNNING DPE_DEMO 00:00:00 00:12:10

EXTRACT RUNNING EXT_DEMO 00:00:00 00:00:07

分析:

passthru:上面已经说过不需要连接数据库,所以用这个指令。

rmthost:目标主机的IP地址,就是说我们的rmttrail进程发送到的主机。

mgrport:目标主机管理进程的端口号,我们上面已经配置了。

compress:在传输的过程中启用压缩。

rmttrail:路径和文件与上面配置的一致。

TABLE HR.*:上面说过,哪些表的redo信息传输。

日志所在地:

[oracle@gg1 ogg]$ vi ggserr.log

18、

测试goldengate能否抓取数据:

SQL> update employees set salary=salary+1000;

107 rows updated.

SQL> commit;

Commit complete.

查看是否生成文件:

[oracle@gg1 ogg]$ ll dirdat

total 16

-rw-rw-rw- 1 oracle oinstall 13721 Dec 12 03:47 r1000000

查看目标端是否也生成:

[oracle@gg2 ogg]$ ls -l dirdat

total 16

-rw-rw-rw- 1 oracle oinstall 13743 Dec 12 03:47 t1000000

注意:

是可以的,大小是非0。

19、

目标端:

创建golengate软件使用的schema,并授权一些必要的特殊权限,注意与源端有所区别,保证我们能DML。

create tablespace goldengate datafile

'/u01/app/oracle/oradata/ogg/goldengate01.dbf' size 100m autoextend on;

create user goldengate identified by goldengate default tablespace goldengate temporary tablespace temp;

grant connect to goldengate;

grant alter any table to goldengate;

grant alter session to goldengate;

grant create session to goldengate;

grant flashback any table to goldengate;

grant select any dictionary to goldengate;

grant select any table to goldengate;

grant resource to goldengate;

grant insert any table to goldengate;

grant update any table to goldengate;

grant delete any table to goldengate;

grant create any index to goldengate;

grant select any transaction to goldengate;

20、

目标端:

为replicat进程创建checkpoint表:

GGSCI (gg2) 1> dblogin userid goldengate,password goldengate

Successfully logged into database.

GGSCI (gg2) 2> add checkpointtable goldengate.rep_demo_ckpt

Successfully created checkpoint table goldengate.rep_demo_ckpt.

21、

配置目标端replicate进程:

GGSCI (gg2) 3> add replicat rep_demo,exttrail ./dirdat/t1,checkpointtable goldengate.rep_demo_ckpt

REPLICAT added.

分析:

exttrail:表示这个进程获取数据的来源是什么地方,是我们源端rmttrail所设置过的。

22、

配置目标端replicate参数:

GGSCI (gg2) 5> edit param rep_demo

REPLICAT rep_demo

SETENV (ORACLE_SID=ogg)

SETENV (NLS_LANG = \"AMERICAN_AMERICA.ZHS16GBK\")

USERID goldengate,PASSWORD goldengate

REPORTCOUNT EVERY 30 MINUTES, RATE

REPERROR DEFAULT, ABEND

numfiles 5000

--HANDLECOLLISIONS

assumetargetdefs

DISCARDFILE ./dirrpt/rep_demo.dsc, APPEND, MEGABYTES 1000

ALLOWNOOPUPDATES

MAP HR.*, TARGET HR.*;

分析:

重要的地方与上面基本一致,有兴趣可以查查其他参数的信息。

MAP:源端和目标端的对应。

23、

目标端:

启动并查看replicate进程是否运行:

GGSCI (gg2) 6> start rep_demo

GGSCI (gg2) 2> info all

Program Status Group Lag at Chkpt Time Since Chkpt

MANAGER RUNNING

REPLICAT RUNNING REP_DEMO 00:00:00 01:22:45

24、

测试数据,在源端复制到目标端。

源端:

SQL> conn hr/hr

Connected.

SQL> update employees set salary=5000;

107 rows updated.

SQL> commit;

Commit complete.

SQL> select salary from employees;

SALARY

----------

5000

5000

5000

5000

5000

5000

5000

5000

5000

5000

5000

......

107 行

目标端:

SQL> select salary from employees;

SALARY

----------

5000

5000

5000

5000

5000

5000

5000

5000

5000

5000

5000

....

107行。

25、

测试数据同步,表明已经配置完成goldengate,并实现了单向DML复制。

因篇幅问题不能全部显示,请点此查看更多更全内容