一篇很详细很全的OGG配置文档

1 GoldenGate简要说明

GoldenGate现在是业内成熟的数据容灾与复制产品,经过多年的发展与完善,现在已经成为业内事实上的标准之一。

GoldenGate软件是一种基于日志的结构化数据复制软件,它通过解析源数据库在线日志或归档日志获得数据的增删改变化,再将这些变化应用到目标数据库,实现源数据库与目标数据库同步。

1.1 Golden Gate技术结构

GoldenGate软件的技术结构如图1.1所示:

图1.1GoldenGate技术架构图

从图中可以看到:GoldenGate主要包含Manager进程、Extract进程、Pump进程、Replicat进程,下面对其一一说明:

Manager进程是GoldenGate的控制进程,它主要作用有以下几个方面:启动、监控、重启GoldenGate的其他进程,报告错误及时间,分配数据存储空间,发布阀值报告等。

Extract进程运行在数据库源端,负责从源端数据表或日志中捕获数据。Extract进程利用其内在的checkpoint机制,周期性地检查并记录其读写的位置,通常是写入到本地的trail文件。这种机制是为了保证如果Extract进程终止或者操作系统宕机,我们重启Extract进程后,GoldenGate能够恢复到以前的状态,从上一个断点处继续往下运行,而不会有任何数据损失。

Pump进程运行在数据库源端,其作用非常简单。如果源端使用了本地trail文件,那么Pump进程就会把Trail文件以数据块的形式通过TCP/IP协议发送到目标端,我们下面的配置都是这种方式。Pump进程本质是Extract进程的一种特殊形式,如果不使用Trail文件,那么Extract进程在抽取完数据后,直接投递到目标端。

与Pump进程相对应的叫Server Collector进程,这个进程不需要引起我们关注,因为在实际操作过程中无需对其进行任何配置,它运行在目标端,任务就是把Extract/Pump进程投递过来的数据块重新组装成Trail文件。

Replicat进程运行在目标端,是数据投递的最后一站,负责读取目标端Trail文件中的内容,并将解析其解析为DML或DDL语句,然后应用到目标数据库中。

1.2 Golden Gate拓扑结构

GoldenGate提供了灵活的应用方案,基于其先进、灵活的技术架构可以根据用户需求组成各种拓扑结构,如图1.2所示:

图1.2GoldenGate应用方案示意图

根据实际需求情况,我们需要进行的是一对一复制,且只是复制部分表数据,所以这里仅探讨一对一复制的安装配置,而且对于DDL复制的支持这里也不做研究。

2 单机à单机复制配置

2.1 环境简介

性质
IP
系统
ORACLE版本
源端
10.122.0.110
AIX 5.3
10.2.0.1
目标端
10.122.0.113
WINDOWS 2003
10.2.0.1
2.2 源端安装GoldenGate

创建GoldenGate安装目录并解压安装文件

unzip ogg112101_ggs_AIX_ppc_ora10.2_64bit.zip

tar –xf ggs_AIX_ppc_ora10.2_64bit.tar

注意:使用的安装包一定要与平台一致

设置环境变量

在用户参数文件中添加以下内容:

export GGATE_HOME=/u01/oracle/oracle/ogg

export LIBPATH=$GGATE_HOME:$ORACLE_HOME/lib

注意:添加后需使参数文件生效

HP及LINUX平台下用LD_LIBRARY_PATH替换LIBPATH

安装GoldenGate

进入OGG控制台创建OGG工作目录

然后在安装目录下执行 ./ggsci 进入OGG控制台

执行命令 createsubdirs创建工作目录,显示如下:

GGSCI (NDSCDB1)1> create subdirs

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

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

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

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

Process statusfiles /u01/oracle/oracle/ogg/dirpcs: created

SQL scriptfiles /u01/oracle/oracle/ogg/dirsql:created

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

Extract datafiles /u01/oracle/oracle/ogg/dirdat: created

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

Stdout files /u01/oracle/oracle/ogg/dirout: created

2.3 目标端安装GoldenGate

建立OGG安装目录,然后将压缩包解压到目录中,进入cmd控制台,创建工作目录,

操作步骤显示如下:

2.4 配置源端数据库

数据库模式配置

源端数据库必须开启归档模式

Alter databasearchivelog;

开启最小附加日志

Alter databaseadd supplemental log data;

使用SELECT SUPPLEMENTAL_LOG_DATA_MIN FROM V$DATABASE;

可查看是否开启了最小附加日志;

源端数据库创建GoldenGate数据库用户并授权:(我们这里以ogg为例,使用其他亦可)

create user ogg identified by oracle defaulttablespace DATA_OL;

grant connect,resource,unlimited tablespace to ogg;

grant executeon utl_file to ogg;

grant select any dictionary,select any table to ogg;

grant alter any table to ogg;

grant flashback any table to ogg;

grant execute onDBMS_FLASHBACK to ogg;

添加表级transdata

GGSCI (NDSCDB1) 2>dblogin userid ogg,password oracle

Successfully logged intodatabase.

GGSCI(NDSCDB1) 3> add trandata olive.ol$_objects

Logging of supplemental redo dataenabled for table OLIVE.OL$_OBJECTS.

2.5 配置源端进程组

配置管理进程mgr:

GGSCI(NDSCDB1) 1> edit param mgr

(粘贴下面这段配置)

PORT 7839

DYNAMICPORTLIST 7840-7939

--AUTOSTART ER *

AUTORESTART EXTRACT *,RETRIES5,WAITMINUTES 3

PURGEOLDEXTRACTS./dirdat/*,usecheckpoints,minkeepdays 3

LAGREPORTHOURS 1

LAGINFOMINUTES 30

LAGCRITICALMINUTES 45

MANAGER进程参数配置说明:

PORT:指定服务监听端口;这里以7839为例,默认端口为7809

DYNAMICPORTLIST:动态端口:可以制定最大256个可用端口的动态列表,当指定的端口不可用时,管理进程将会从列表中选择一个可用的端口,源端和目标段的Collector、Replicat、GGSCI进程通信也会使用这些端口;

COMMENT:注释行,也可以用--来代替;

AUTOSTART:指定在管理进程启动时自动启动哪些进程;

AUTORESTART:自动重启参数设置:本处设置表示每3分钟尝试重新启动所有EXTRACT进程,共尝试5次;

PURGEOLDEXTRACTS:定期清理trail文件设置:本处设置表示对于超过3天的trail文件进行删除。

LAGREPORT、LAGINFO、LAGCRITICAL:

定义数据延迟的预警机制:本处设置表示MGR进程每隔1小时检查EXTRACT的延迟情况,如果超过了30分钟就把延迟作为信息记录到错误日志中,如果延迟超过了45分钟,则把它作为警告写到错误日志中。

启动管理进程:

GGSCI(NDSCDB1) 2> start mgr

Managerstarted.

查看进程状态可发现 MANAGER状态为 RUNNING:

GGSCI(NDSCDB1) 3> info all

Program Status Group Lag at Chkpt Time Since Chkpt

MANAGER RUNNING

配置抽取进程:

GGSCI(NDSCDB1) 12> add extract extnd,tranlog,begin now

EXTRACTadded.

GGSCI(NDSCDB1) 14> add exttrail ./dirdat/nd,extract extnd,megabytes 100

EXTTRAILadded.

Megabytes:指定队列大小,本处设置表示100M。

GGSCI(NDSCDB1) 15> edit params extnd

(粘贴下面这段配置)

EXTRACTextnd

setenv(NLS_LANG = "AMERICAN_AMERICA.UTF8")

SETENV(ORACLE_HOME = "/u01/oracle/oracle/product/10.2.0/db_1")

SETENV(ORACLE_SID = "ndtest")

USERIDogg,PASSWORD oracle

--GETTRUNCATES

REPORTCOUNTEVERY 1 MINUTES,RATE

DISCARDFILE./dirrpt/extnd.dsc,APPEND,MEGABYTES 1024

--THREADOPTIONS MAXCOMMITPROPAGATIONDELAY 60000 IOLATENS60000

DBOPTIONS ALLOWUNUSEDCOLUMN

WARNLONGTRANS2h,CHECKINTERVAL 3m

EXTTRAIL./dirdat/nd

--TRANLOGOPTIONSEXCLUDEUSER USERNAME

FETCHOPTIONSNOUSESNAPSHOT

TRANLOGOPTIONS CONVERTUCS2CLOBS

TABLEolive.ol$_objects

添加传输进程,配置参数

GGSCI(NDSCDB1) 2> add extract dpend,exttrailsource ./dirdat/nd

EXTRACTadded.

GGSCI(NDSCDB1) 3> add rmttrail F:\ogg\dirdat\nd,EXTRACT DPEND

RMTTRAILadded.

GGSCI(NDSCDB1) 4> edit params dpend

(粘贴下面这段配置)

EXTRACTdpend

SETENV(NLS_LANG = "AMERICAN_AMERICA.UTF8")

USERIDogg,PASSWORD oracle

PASSTHRU

RMTHOST10.122.0.113,MGRPORT 7839,compress

RMTTRAILF:\ogg\dirdat\nd

TABLEolive.ol$_objects;

抽取进程和传输进程其实都是EXTRACT进程,也可以配置在一个进程完成这两个功能,但是当网络传输有问题时,这样抽取也就不能继续运行了,所以推荐分开配置为两个进程;

EXTRACT进程参数配置说明:

SETENV:配置系统环境变量

USERID/ PASSWORD:指定OGG连接数据库的用户名和密码,这里使用3.4部分中创建的数据库用户OGG;

COMMENT:注释行,也可以用--来代替;

TABLE:定义需复制的表,后面需以;结尾

TABLEEXCLUDE:定义需要排除的表,如果在TABLE参数中使用了通配符,可以使用该参数指定排除掉得表。

GETUPDATEAFTERS|IGNOREUPDATEAFTERS:

是否在队列中写入后影像,缺省复制

GETUPDATEBEFORES| IGNOREUPDATEBEFORES:

是否在队列中写入前影像,缺省不复制

GETUPDATES|IGNOREUPDATES:

是否复制UPDATE操作,缺省复制

GETDELETES|IGNOREDELETES:

是否复制DELETE操作,缺省复制

GETINSERTS|IGNOREINSERTS:

是否复制INSERT操作,缺省复制

GETTRUNCATES|IGNORETRUNDATES:

是否复制TRUNCATE操作,缺省不复制;

RMTHOST:指定目标系统及其GoldengateManager进程的端口号,还用于定义是否使用压缩进行传输,本例中的compress为压缩传输;

RMTTRAIL:指定写入到目标断的哪个队列;

EXTTRAIL:指定写入到本地的哪个队列;

SQLEXEC:在extract进程运行时首先运行一个SQL语句;

PASSTHRU:禁止extract进程与数据库交互,适用于Data Pump传输进程;

REPORT:定义自动定时报告;

STATOPTIONS:定义每次使用stat时统计数字是否需要重置;

REPORTCOUNT:报告已经处理的记录条数统计数字;

TLTRACE:打开对于数据库日志的跟踪日志;

DISCARDFILE:定义discardfile文件位置,如果处理中油记录出错会写入到此文件中;

DBOPTIONS:指定对于某种特定数据库所需要的特殊参数;

TRANLOGOPTIONS:指定在解析数据库日志时所需要的特殊参数,例如:对于裸设备,可能需要加入以下参数 rawdeviceoggset 0

WARNLONGTRANS:指定对于超过一定时间的长交易可以在gsserr.log里面写入警告信息,本处配置为每隔3分钟检查一次场交易,对于超过2小时的进行警告;

2.6 配置目标数据库

目标库创建GoldenGate数据库用户并授权:

createuser ogg identified by oracle default tablespace DATA_OL;

grantconnect,unlimited tablespace to ogg;

grantexecute on utl_file to ogg;

grantselect any dictionary,select any table to ogg;

grantalter any table to ogg;

grantflashback any table to ogg;

grantexecute on DBMS_FLASHBACK to ogg;

grantinsert any table to ogg;

grantdelete any table to ogg;

grantupdate any table to ogg;

添加checkpoint表

然后在参数文件中输入

GGSCHEMAogg

CHECKPOINTTABLEogg.checkpoint

2.7 配置目标端进程组

配置管理进程

配置复制进程

REPLICAT进程参数配置说明:

ASSUMETARGETDEFS:假定两端数据结构一致使用此参数;

SOURCEDEFS:假定两端数据结构不一致,使用此参数指定源端的数据结构定义文件,该文件需要由GlodenGate工具产生。

MAP:用于指定源端与目标端表的映射关系;

MAPEXCLUDE:用于使用在MAP中使用*匹配时排除掉指定的表;

REPERROR:定义出错以后进程的响应,一般可以定义为两种:

ABEND,即一旦出现错误即停止复制,此为缺省配置;

DISCARD,出现错误后继续复制,只是把错误的数据放到discard文件中。

DISCARDFILE:定义discardfile文件位置,如果处理中油记录出错会写入到此文件中;

SQLEXEC:在进程运行时首先运行一个SQL语句;

GROUPTRANSOPS:将小交易合并成一个大的交易进行提交,减少提交次数,降低系统IO消耗。

MAXTRANSOPS:将大交易拆分,每XX条记录提交一次。

2.8 启动进程进行数据同步

启动源端进程组

启动抽取进程和传输进程:

start extnd

start dpend

启动后使用info all查看进程状态,正常status应该RUNNING,显示如下:

GGSCI (NDSCDB1)11> info all

Program Status Group Lag at Chkpt Time Since Chkpt

MANAGER RUNNING

EXTRACT RUNNING DPEND 00:00:00 00:15:32

EXTRACT RUNNING EXTND 00:00:00 00:00:04

启动目标端进程

start repnd

显示如下:

到此OGG的安装配置就完成了,可以进行数据同步测试了。

3 RACà单机复制配置

3.1 环境简介

性质
IP
系统
ORACLE版本
源端
10.123.112.201/10.123.112.202
LINUX rhel5 64位
10.2.0.1
目标端
10.123.112.235
LINUX rhel5 32位
10.2.0.1
3.2 源端安装OCFS2集群文件系统

RAC环境中为了实现高可用性,需将OGG安装在集群文件系统中,这样OGG可以访问RAC中的所有节点,我们这里测试采用OCFS2文件系统。

从http://oss.oracle.com下载与LINUX内核相符的OCFS2 RPM包

LINUX下执行uname –r查看系统内核版本 eg:

[oracle@node2ocfs]$ uname -r

2.6.18-92.el5

使用ROOT用户安装OCFS2的RPM包

[root@node1ocfs]# rpm -ivh ocfs2-tools-1.2.7-1.el5.x86_64.rpm \

ocfs2console-1.2.7-1.el5.x86_64.rpm\

ocfs2-2.6.18-92.el5-1.2.9-1.el5.x86_64.rpm

进入OCFS2控制台界面

[root@node1 ~]#ocfs2console

在出现的窗体中选择[Clucster]-[ConfigureNodes]在"NodeConfiguration"对话框中,输入2个专用互连的节点名、IP 地址、端口号后,选择 [Clucster]-[PropagateCluster Configuration] ,提示"Finished"。

配置后的信息显示如下:

在集群中的所有节点上以 root 用户帐户的身份运行以下命令
export PATH=$PATH:/sbin:/usr/sbin
/etc/init.d/o2cb enable

创建ocfs2文件系统,其中-N选项用于指明最多允许多少个节点同时使用此文件系统:

mkfs -t ocfs2-N 2 /dev/sdh1

挂载分区:

mount /dev/sdh1/ggate

配置启动自动载入(所有节点):
export PATH=$PATH:/sbin:/usr/sbin
chkconfig --add o2cb
/etc/init.d/o2cb configure
在/etc/rc.local增加入下内容:

chown -Roracle:dba /ggate
chmod -R 775 /ggate

3.3 源端安装GoldenGate

在GoldenGate安装目录(OCFS2目录/ggate)解压安装文件

unzipogg112101_fbo_ggs_Linux_x64_ora10g_64bit.zip

tar–xvf fbo_ggs_Linux_x64_ora10g_64bit.tar

设置环境变量

在用户参数文件中添加以下内容:

exportGGATE_HOME=/ggate

exportLD_LIBRARY_PATH=$GGATE_HOME:$ORACLE_HOME/lib

注意:添加后需使参数文件生效

安装GoldenGate

进入OGG控制台创建OGG工作目录

然后在安装目录下执行 ./ggsci 进入OGG控制台

执行命令 createsubdirs创建工作目录,显示如下:

GGSCI(node1) 1> create subdirs

Creatingsubdirectories under current directory /ggate

Parameterfiles /ggate/dirprm:already exists

Reportfiles /ggate/dirrpt:created

Checkpointfiles /ggate/dirchk:created

Processstatus files /ggate/dirpcs: created

SQLscript files /ggate/dirsql:created

Databasedefinitions files /ggate/dirdef: created

Extractdata files /ggate/dirdat: created

Temporaryfiles /ggate/dirtmp:created

Stdoutfiles /ggate/dirout:created

3.4 目标端安装GoldenGate

环境相同,安装方法与4.3一致,仅仅是安装位置不同,安装过程略,注意安装包与平台一致。

3.5 配置源端数据库

数据库模式配置

源端数据库必须开启归档模式

Alterdatabase archivelog;

开启最小附加日志

Alterdatabase add supplemental log data;

使用SELECTSUPPLEMENTAL_LOG_DATA_MIN FROM V$DATABASE;

可查看是否开启了最小附加日志;

源端数据库创建GoldenGate数据库用户并授权:(我们这里以ogg为例,使用其他亦可)

createuser ogg identified by oracle default tablespace DATA_OL;

grantconnect,select any table to ogg;

grantalter any table to ogg;

grantflashback any table to ogg;

grantexecute on DBMS_FLASHBACK to ogg;

添加表级transdata

GGSCI(node1) 1> dblogin userid ogg,password oracle

Successfullylogged into database.

GGSCI(node1) 2> add trandata SCOTT.DEPT

Loggingof supplemental redo data enabled for table SCOTT.DEPT.

GGSCI(node1) 3> add trandata SCOTT.EMP

Loggingof supplemental redo data enabled for table SCOTT.EMP.

3.6 配置源端进程组

配置管理进程mgr:

GGSCI(node1) 1> edit param mgr

(粘贴下面这段配置)

PORT7839

DYNAMICPORTLIST7840-7939

--AUTOSTARTER *

AUTORESTARTEXTRACT *,RETRIES 5,minkeepdays 3

LAGREPORTHOURS1

LAGINFOMINUTES30

LAGCRITICALMINUTES45

参数说明均与单点配置相同,参考3.5部分

启动管理进程:

GGSCI(node1) 2> start mgr

Managerstarted.

GGSCI(node1) 3> info all

Program Status Group Lag at Chkpt Time Since Chkpt

MANAGER RUNNING

配置抽取进程:

GGSCI(node1) 6> add extract extnd,begin now,threads 2

EXTRACTadded.

GGSCI(node1) 7> add exttrail ./dirdat/nd,megabytes 100

EXTTRAILadded.

GGSCI(node1) 8> edit params extnd

(粘贴下面这段配置)

EXTRACTextnd

SETENV(NLS_LANG = "AMERICAN_AMERICA.UTF8")

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

USERID ogg@RAC,PASSWORDoracle

--GETTRUNCATES

REPORTCOUNTEVERY 1 MINUTES,CHECKINTERVAL 3m

EXTTRAIL./dirdat/nd

--TRANLOGOPTIONSEXCLUDEUSER USERNAME

FETCHOPTIONSNOUSESNAPSHOT

TRANLOGOPTIONS CONVERTUCS2CLOBS

TABLEscott.dept;

TABLEscott.emp;

注意:threads与RAC节点数相同即可,RAC中不再使用ORACLE_SID设置,而使用USERID ogg@RAC,注意两个节点均可连接数据库。

添加传输进程,配置参数

GGSCI(node1) 2> add extract dpend,exttrailsource ./dirdat/nd

EXTRACTadded.

GGSCI(node1) 3> add rmttrail /uo1/app/ogg/dirdat/nd,EXTRACT DPEND

RMTTRAILadded.

GGSCI(node1) 4> edit params dpend

(粘贴下面这段配置)

EXTRACTdpend

SETENV(NLS_LANG = AMERICAN_AMERICA.UTF8)

USERID ogg@RAC,PASSWORDoracle

PASSTHRU

RMTHOST10.123.112.235,compress

RMTTRAIL/uo1/app/ogg/dirdat/nd

TABLEscott.dept;

TABLEscott.emp;

3.7 配置目标数据库

目标库创建GoldenGate数据库用户并授权:

createuser ogg identified by oracle default tablespace USERS;

grantconnect,select any table to ogg;

grantalter any table to ogg;

grantflashback any table to ogg;

grantexecute on DBMS_FLASHBACK to ogg;

grantinsert any table to ogg;

grantdelete any table to ogg;

grantupdate any table to ogg;

添加checkpoint表

GGSCI(sun.linux) 2> edit params GLOBALS

然后在参数文件中输入

GGSCHEMAogg

CHECKPOINTTABLEogg.checkpoint

GGSCI(sun.linux) 4> dblogin userid ogg,password oracle

Successfullylogged into database.

GGSCI(sun.linux) 5> add checkpointtable ogg.checkpoint

Successfullycreated checkpoint table ogg.checkpoint.

3.8 配置目标端进程组

配置MGR参数

GGSCI(sun.linux) 6> edit params mgr

(粘贴下面这段配置)

PORT7839

DYNAMICPORTLIST7840-7939

--AUTOSTARTER *

AUTORESTARTEXTRACT *,minkeepdays 3

LAGREPORTHOURS1

LAGINFOMINUTES30

LAGCRITICALMINUTES45

配置复制队列

GGSCI(sun.linux)8> add replicat repnd,exttrail/uo1/app/ogg/dirdat/nd,checkpointtable ogg.checkpoint

REPLICATadded.

GGSCI(sun.linux) 10> edit params repnd

(粘贴下面这段配置)

REPLICATrepnd

SETENV(NLS_LANG = AMERICAN_AMERICA.UTF8)

USERIDogg,PASSWORD oracle

ASSUMETARGETDEFS

REPERRORdefault,discard

discardfile./dirrpt/repnd.dsc,append,megabytes 50

mapscott.,target pmsbi.;

3.9 启动进程进行数据同步

启动源端进程组

启动抽取进程和传输进程:

startextnd

startdpend

启动后使用info all查看进程状态,正常status应该RUNNING,显示如下:

GGSCI(node1) 19> info all

Program Status Group Lag at Chkpt Time Since Chkpt

MANAGER RUNNING

EXTRACT RUNNING DPEND 00:00:00 00:00:09

EXTRACT RUNNING EXTND 00:00:00 00:00:04

启动目标端进程

startrepnd

显示如下:

GGSCI(sun.linux) 2> info all

Program Status Group Lag at Chkpt Time Since Chkpt

MANAGER RUNNING

REPLICAT RUNNING REPND 00:00:00 00:00:03

到此RAC到单点OGG的安装配置就完成了,可以进行数据同步测试了。

4 RACà单机下的HA配置

第4部分的RACà单机的配置仅仅完成了数据复制的功能,不包含高可用的配置,当运行GoldenGate的节点出现故障时复制功能就将终止,如何使复制功能继续可用呢,有如下两种方式:

4.1 节点故障的手工处理方式

因为GoldenGate 安装在共享目录下,我们可以通过任一个节点连接到共享目录,启动GoldenGate运行界面。如果其中一个节点失败,导致GoldenGate进程中止,可以直接手工在另外一个节点启动进程组即可。

4.2 GoldenGate的HA配置

我们可以通过使用CRS来管理GoldenGate资源组,并且使用RAC的vip连接到GoldenGate,一旦数据库的某一个节点宕掉,Oracleclusterware将自动切换到另一个可用节点。

添加一个应用程序VIP资源

为GoldenGate vip资源创建一个profile

[oracle@node1ggate]$ cd $ORA_CRS_HOME/bin

[oracle@node1bin]$ pwd

/u01/app/oracle/product/10.2.0/crs_1/bin

[oracle@node1 bin]$crs_profile –create ggvip –t application \

–a /u01/app/oracle/product/10.2.0/crs_1\

-o oi=eth0,ov=192.168.73.203,on=255.255.255.0

其中:ggvip为创建的应用程序vip的名字

把这个资源注册到CRS:

[oracle@node1 bin]$crs_register ggvip

把vip 的所有权给root,在root用户下执行:

[root@node1 bin]#./crs_setperm ggvip –o root

为oracle用户分配启动这个资源的权限:

[root@node1 bin]#./crs_setperm ggvip –u user:oracle:r-x

通过oracle用户启动这个资源:

[oracle@node1bin]$ crs_start ggvip

Attempting tostart ggvip on member node1

Start ofggvip on member node1 succeeded.

查看资源状态显示如下:

[oracle@node1bin]$ crs_stat ggvip -t

Name Type Target State Host

ggvip application ONLINE ONLINE node1

创建一个action程序

action程序我们这里放到共享磁盘上,action程序最少需要可以接受三个参数:start,stop,check

start和stop:返回0成功,1 失败;

check :返回0表示GoldenGate在运行,1 表示不运行;

下面为示例程序 gg_action.scr的内容:

#!/bin/sh

#set the OracleGoldengate installation directory

exportGGS_HOME=/ggate

#set the oraclehome to the database to ensure GoldenGate will get the

#rightenvironment settings to be able to connect to the database

exportORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1

#specify delayafter start before checking for successful start

start_delay_secs=5

#Include theGoldenGate home in the library path to start GGSCI

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

#check_processvalidates that a manager process is running at the PID

#thatGoldenGate specifies.

check_process() {

if ( [ -f"${GGS_HOME}/dirpcs/MGR.pcm" ] )

then

pid=cut -f8"${GGS_HOME}/dirpcs/MGR.pcm"

if [ ${pid} = ps -e |grep ${pid} |grep mgr|cut -d " " -f2 ]

then

#manager process is running on the PID exitsuccess

exit 0

else

if [ ${pid} = ps -e |grep ${pid} |grep mgr|cut -d " " -f1 ]

then

#manager process is running on the PID exitsuccess

exit 0

else

#manager process is not running on the PID

exit 1

fi

fi

else

#manager is not running because there is noPID file

exit 1

fi

}

#call_ggsci isa generic routine that executes a ggsci command

call_ggsci () {

ggsci_command=$1

ggsci_output=`${GGS_HOME}/ggsci << EOF

${ggsci_command}

exit

EOF`

}

case $1 in

'start')

#start manager

call_ggsci 'start manager'

#there is a small delay between issuing thestart manager command

#and the process being spawned on the OS.wait before checking

sleep ${start_delay_secs}

#check whether manager is running and exitaccordingly

check_process

;;

'stop')

#attempt a clean stop for all non-managerprocesses

#call_ggsci 'stop er *'

#ensure everything is stopped

call_ggsci 'stop er *!'

#call_ggsci 'kill er *'

#stop manager without (y/n) confirmation

call_ggsci 'stop manager!'

#exit success

exit 0

;;

'check')

check_process

;;

'clean')

#attempt a clean stop for all non-managerprocesses

#call_ggsci 'stop er *'

#ensure everything is stopped

#call_ggsci 'stop er *!'

#in case there are lingering processes

call_ggsci 'kill er *'

#stop manager without (y/n) confirmation

call_ggsci 'stop manager!'

#exit success

exit 0

;;

'abort')

#ensure everything is stopped

call_ggsci 'stop er *!'

#in case there are lingering processes

call_ggsci 'kill er *'

#stop manager without (y/n) confirmation

call_ggsci 'stop manager!'

#exit success

exit 0

;;

esac

添加一个应用程序profile

[oracle@node1 ggate]$cd $ORA_CRS_HOME/bin

[oracle@node1bin]$ pwd

/u01/app/oracle/product/10.2.0/crs_1/bin

[oracle@node1 bin]$crs_profile –create GG_app –t application \

–r ggvip –a/ggate/gg_action.scr –o ci=10

其中:-r ggvip表示ggvip必须在GoldenGate启动之前运行,

-a /ggate/gg_action.scr指定action 脚本的位置,在每个节点必须都可用

–o ci=10:检查的时间间隔设置为10

把这个资源注册到CRS:

[oracle@node1 bin]$crs_register GG_app

把vip 的所有权给root,在root用户下执行:

[root@node1 bin]#./crs_setperm ggvip –o oracle

为oracle用户分配启动这个资源的权限:

[root@node1 bin]#./crs_setperm GG_app –u user:oracle:r-x

通过oracle用户启动这个资源:

[oracle@node1bin]$ crs_start GG_app

Attempting tostart GG_app on member node1

Start ofGG_app on member node1 succeeded.

查看资源状态显示如下:

[oracle@node1bin]$ crs_stat GG_app -t

Name Type Target State Host

GG_app application ONLINE ONLINE node1

测试节点迁移

在测试环境中可以使用crs_relocate –fGG_app使它强行漂移:过程显示如下:

[oracle@node1~]$ crs_stat -t

Name Type Target State Host

GG_app application ONLINE ONLINE node1

ggvip application ONLINE ONLINE node1

ora....AC1.srv application ONLINE ONLINE node1

ora....AC2.srv application ONLINE ONLINE node2

ora.RAC.RAC.cs application ONLINE ONLINE node2

ora....C1.inst application ONLINE ONLINE node1

ora....C2.inst application ONLINE ONLINE node2

ora.RAC.db application ONLINE ONLINE node1

ora....E1.lsnr application ONLINE ONLINE node1

ora.node1.gsd application ONLINE ONLINE node1

ora.node1.ons application ONLINE ONLINE node1

ora.node1.vip application ONLINE ONLINE node1

ora....E2.lsnr application ONLINE ONLINE node2

ora.node2.gsd application ONLINE ONLINE node2

ora.node2.ons application ONLINE ONLINE node2

ora.node2.vip application ONLINE ONLINE node2

[oracle@node1 ~]$ crs_relocate -f GG_app

Attempting to stop GG_app on member node1

Stop of GG_app on member node1 succeeded.

Attempting to stop ggvip on member node1

Stop of ggvip on member node1 succeeded.

Attempting to start ggvip on member node2

Start of ggvip on member node2 succeeded.

Attempting to start GG_app on member node2

Start of GG_app on member node2 succeeded.

[oracle@node1~]$ crs_stat -t

Name Type Target State Host

GG_app application ONLINE ONLINE node2

ggvip application ONLINE ONLINE node2

ora....AC1.srv application ONLINE ONLINE node1

ora....AC2.srv application ONLINE ONLINE node2

ora.RAC.RAC.cs application ONLINE ONLINE node2

ora....C1.inst application ONLINE ONLINE node1

ora....C2.inst application ONLINE ONLINE node2

ora.RAC.db application ONLINE ONLINE node1

ora....E1.lsnr application ONLINE ONLINE node1

ora.node1.gsd application ONLINE ONLINE node1

ora.node1.ons application ONLINE ONLINE node1

ora.node1.vip application ONLINE ONLINE node1

ora....E2.lsnr application ONLINE ONLINE node2

ora.node2.gsd application ONLINE ONLINE node2

ora.node2.ons application ONLINE ONLINE node2

ora.node2.vip application ONLINE ONLINE node2

可以看到GoldenGate成功转移到2节点运行了。

5 常见错误及解决方法

5.1 OGG-00446

启动源端抽取进程extnd,ggserr.log错误显示如下:

2012-08-1711:11:38 ERROR OGG-00446 Oracle GoldenGate Capture for Oracle,extnd.prm: Could not find archived log for sequence45835 thread 1 under default destinations SQL <SELECT name FROM v$archived_log WHEREsequence# = :ora_seq_no AND thread#= :ora_thread AND resetlogs_id =:ora_resetlog_id AND archived ='YES' AND deleted = 'NO' AND name not like '+%' AND standby_dest = 'NO' >,errorretrieving redo file name for sequence 45835,archived = 1,use_alternate =0Not able to establish initial position for begin time 2012-08-15 17:28:28.

导致原因:早期归档日志被删除或已备份,导致找不到归档日志文件;

处理方法:

将备份的归档日志恢复到归档日志目录下,即可解决错误;

测试库可以指定抽取进程从某个时间点开始读取日志,跳过已删除的归档日志文件,命令如下:alterextract extnd,begin 2012-8-16 16:38;

5.2 OGG-01223

启动源端传输进程DPEND,ggserr.log错误显示如下:

2012-08-1711:43:50 WARNING OGG-01223 Oracle GoldenGate Capture for Oracle,dpend.prm: TCP/IP error 79 (Connectionrefused).

2012-08-1711:45:01 WARNING OGG-01223 Oracle GoldenGate Capture for Oracle,dpend.prm: TCP/IP error 79 (Connectionrefused).

导致原因:因为目标端110上MGR进程没有启动,导致报错

处理方法:

在目标端启动startmgr启动进程后,再启动源端的传输进程DPEND,错误消失,文件顺利传输过来了。

正常的日志如下:

2012-08-1714:31:51 INFO OGG-00993 Oracle GoldenGate Capture for Oracle,dpend.prm: EXTRACT DPEND started.

2012-08-1714:33:13 INFO OGG-01226 Oracle GoldenGate Capture for Oracle,dpend.prm: Socket buffer size set to 27985 (flush size27985).

2012-08-1714:33:26 INFO OGG-01052 Oracle GoldenGate Capture for Oracle,dpend.prm: No recovery is required for target file F:\ogg\dirdat\nd000000,at RBA 0 (file not opened).

2012-08-1714:33:26 INFO OGG-01478 Oracle GoldenGate Capture for Oracle,dpend.prm: Output file F:\ogg\dirdat\nd is using formatRELEASE 11.2.

5.3 OGG-01224

启动源端传输进程DPEND,ggserr.log错误显示如下:

2012-08-2205:33:10 ERROR OGG-01224 Oracle GoldenGate Capture for Oracle,dpend.prm: TCP/IP error 113 (No route to host).

2012-08-2205:33:10 ERROR OGG-01668 Oracle GoldenGate Capture for Oracle,dpend.prm: PROCESS ABENDING.

导致原因:因为目标端235上的防火墙没有关闭,导致报错

处理方法:

在目标端机器关闭防火墙后,再启动源端的传输进程DPEND,错误消失,文件顺利传输过来了。

5.4 OGG-01031

启动源端传输进程DPEND,ggserr.log错误显示如下:

2012-08-28 15:09:39 ERROR OGG-01031 Oracle GoldenGateCapture for Oracle,dpend.prm: There isa problem in network communication,a remote file problem,encryption keys fortarget and source do not match (if using ENCRYPT) or an unknown error. (Replyreceived is Unable to open file "/uo1/app/ogg/dirdat/nd000004" (error2,No such file or directory)).

2012-08-28 15:09:41 ERROR OGG-01668 Oracle GoldenGateCapture for Oracle,dpend.prm: PROCESSABENDING.目标端ggserr.log错误显示如下:

2012-08-2815:06:30 WARNING OGG-01223 Oracle GoldenGate Collector for Oracle: Unable to lock file"/uo1/app/ogg/dirdat/nd000004" (error 11,Resource temporarilyunavailable). Lock currently held byprocess id (PID) 13854.

2012-08-2815:06:30 WARNING OGG-01223 Oracle GoldenGate Collector for Oracle: Unable to open file"/uo1/app/ogg/dirdat/nd000004" (error 2,No such file or directory).

导致原因:可能是网络出现过故障,OGG源端的Data Pump进程与目标断了联系,目标端mgr为其启动的server进程一直还在运行,下次data pump重启时目标mgr会试图生成另外一个server进程,这样两个进程会争同一个队列文件。

处理方法:

1、停掉源端的所有data pump,使用ps –ef|grep server(或OGG安装目录)看看是不是还有OGG的server进程在跑,如果有,杀死它(一定要确认源端data pump全停掉,并且杀的是server进程,不要杀其它extract/replicat/mgr等),重启源端data pump即可。

2、可能是目标端的trail file出问题了,前滚重新生成一个新的队列文件

SEND EXTRACT xxx ETROLLOVER

或者:alter extract xxx etrollover

xxx为datapump的名称

5.5 OGG-01154

错误信息:2011-03-29 15:53:57 WARNINGOGG-01154 Oracle GoldenGate Delivery forOracle,repya.prm: SQL error 14402mapping EPMA.D_METER to E

PMA.D_METER OCIError ORA-14402: updating partition key column would cause a partition change(status = 14402),SQL <UPDATE "EPMA"."D_METER" SET"PR_ORG" = :a1,"BELONG_DEPT" = :a2 WHERE"METER_ID" = :b0>.

导致原因:源端更新了分区列,但目标端没有打开行移动,导致更新时报错;

处理方法:SQLPLUS>alter table SCHEMA.TABLENAME enable row movement;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


文章浏览阅读773次,点赞6次,收藏9次。【代码】c# json字符串转Oracle的insert into的小程序。
文章浏览阅读8.7k次,点赞2次,收藏17次。此现象一般定位到远端的监听服务来找问题,在远端查看监听服务状态(具体看下面的解决方案会详细呈现),服务是否开启,另外查看监听端点概要是否存在host未指向到计算名的,如无直接进入监听配置文件listener.ora内添加指向即可。2、查看监听服务状态 lsnrctl status,右边为远端端点状态,未添加host指向到计算名;1、本地及远端安装好Oracle并配置好连接,Oracle服务和监听已启动;1、远程Oracle数据库:Oracle11g R2。或者进入下述服务手动重启。,再进行远程连接即可。_ora-12541:tns:无监听程序
文章浏览阅读2.8k次。mysql脚本转化为oracle脚本_mysql建表语句转oracle
文章浏览阅读2.2k次。cx_Oracle报错:cx_Oracle DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library_cx_oracle.databaseerror: dpi-1047: cannot locate a 64-bit oracle client libr
文章浏览阅读1.1k次,点赞38次,收藏35次。本文深入探讨了Oracle数据库的核心要素,包括体系结构、存储结构以及各类参数。通过解析Oracle数据库的体系结构,读者可以深入了解其内部组成和工作原理。存储结构部分介绍了数据在Oracle中的存储方式,从表空间到数据文件的层层逻辑。最后,我们深入探讨了Oracle数据库中各类参数的作用和配置方法,帮助读者更好地理解和优化数据库性能。本文旨在帮助读者全面理解Oracle数据库的运作机制,为其在实践中的应用提供基础和指导。
文章浏览阅读1.5k次。默认自动收集统计信息的时间为晚上10点(周一到周五,4个小时),早上6点(周六,周日,20个小时)由于平时默认每天只收集4小时,时间有点短了,改成每天可收集8小时。oracle 18c中默认是打开的。查看当前自动收集统计信息的时间。_oracle自动收集统计信息
文章浏览阅读929次,点赞18次,收藏20次。只有assm(Automatic Shared Memory Management)模式可以使用大页,需要关闭amm(Memory Manager Process)HugePages_Free: 306 (空闲306页,已使用306-306=0页)防止oracle使用的内存交换,所以设置的大小与oracle配置的sga、pga相关。HugePages_Rsvd: 0 (操作系统承诺给oracle预留的页数)HugePages_Total: 306 (总共306页)_oracle11g 大页
文章浏览阅读801次。例如:10046:0,1,4,8,12。默认redo日志有三个,大小为50M,循环覆盖使用。redo log再覆盖之前,会被归档,形成归档日志。答:不同事件,不同级别。trace的不同级别?_oracle 日志
文章浏览阅读4.2k次,点赞84次,收藏77次。主要讲解MySQL中SQL的DDL语句,其中包括对数据库和表的一系列操作。_sql ddl 新增字段 mysql
文章浏览阅读1.1k次。ON DEMAND:仅在该物化视图“需要”被刷新了,才进行刷新(REFRESH),即更新物化视图,以保证和基表数据的一致性;ON COMMIT:一旦基表有了COMMIT,即事务提交,则立刻刷新,立刻更新物化视图,使得数据和基表一致。Method =>'C',物化视图有三种刷新方式:COMPLETE、FAST和FORCE。物化视图会占用空间,一半可用于大量数据查询时,减缓主表的查询压力使用。例如创建一个物化视图,让对接单位查询。_oracle物化视图定时刷新
文章浏览阅读713次,点赞21次,收藏18次。1.背景介绍在当今的大数据时代,数据量越来越大,传统的关系型数据库已经无法满足业务需求。因此,NoSQL数据库技术迅速崛起,成为企业和开发者的首选。Oracle NoSQL Database是Oracle公司推出的一款分布式NoSQL数据库产品,具有高性能、高可用性和易于扩展等特点。在本文中,我们将深入了解Oracle NoSQL Database的集成与开发者工具,帮助您更好地掌握这款产品的...
文章浏览阅读2.5k次,点赞2次,收藏4次。今天遇见一个问题需要将字段中包含中文字符串的筛选出来。_oracle查询包含中文字符
文章浏览阅读802次。arcmap 在oracle删除表重新创建提示表名存在解决放啊
文章浏览阅读4.3k次,点赞2次,收藏4次。Oracle连接数据库提示 ORA-12638:身份证明检索失败_ora-12638
文章浏览阅读3.4k次,点赞6次,收藏25次。etc/profile是一个全局配置文件,所有用户登录都会使用该文件构建用户环境。与windows配置环境变量是一个道理。选择Linux系统,找到适合自己系统的安装包,我的是CentOS 8 x64。接下来需要登陆Oracle账户才能下载,无账户的可以自己注册一个。Linux中export 命令用于设置或显示环境变量。模式,利用上下键到文档最后,添加以下代码。出现如图所示版本号字样,则说明安装成功。点击下载,勾选1,点击2。记住完整路径用于后面配置。找到Java并点击进去。往下翻,找到Java8。_linux安装jdk1.8
文章浏览阅读2.4w次,点赞26次,收藏109次。JDK 是的简称,也就是 Java 开发工具包。JDK 是整个 Java 的核心,其中JDK包含了 Java 运行环境(Java Runtime Envirnment,简称 JRE),Java 工具(比如 javac、java、javap 等等),以及 Java 基础类库(比如 rt.jar)。最主流的 JDK 是Oracle公司发布的 JDK,除了 Oracle JDK(商业化,更稳定)之外,还有很多公司和组织开发了属于自己的 JDK,比较有名的有IBM JDK(更适合 IBM) 和OpenJDK。_jdk安装教程
文章浏览阅读7.5w次。出现 “java.sql.SQLNonTransientConnectionException:Could not create connection to database server” 的错误通常是由于无法连接到数据库服务器引起的。_java.sql.sqlnontransientconnectionexception: could not create connection to
文章浏览阅读849次,点赞7次,收藏10次。在ClickHouse中创建用户、数据库并进行权限分配是一个重要的管理任务,它涉及到安全性和访问控制。下面是一个基本的指南来帮助你完成这些操作:1. 创建数据库首先,需要创建一个数据库。使用以下命令:CREATE DATABASE IF NOT EXISTS your_database_name;将 your_database_name 替换为你想要的数据库名。2. 创建用户接下来,创建一个新用户。使用以下命令:CREATE USER your_username IDENTIFIED WIT_在clickhouse中如何创建用户 赋权
文章浏览阅读1.2k次,点赞53次,收藏39次。本文是一篇关于Oracle数据库安装和使用的博文摘要。作者以轻松幽默的笔调介绍了自己在实验中掌握的Oracle数据库基本操作,包括使用组件查看命令、配置数据库监听器等。作者也分享了在实验中遇到的一些有趣问题,如SQL语句缺少分号导致的意外错误。此外,作者还强调了登录sys用户和启动实例加载数据库的注意事项,并鼓励读者面对挑战时保持乐观,不断提升自己的能力。整体风格风趣严谨,引人入胜。
文章浏览阅读820次,点赞17次,收藏16次。KingbaseES、xml、dbms_xmlgen、SETSKIPROWS、人大金仓、KingbaseES兼容Oracle包dbms_xmlgen的功能是通过SQL查询将关系表中数据转化为XML文档。转化方式一共有两种:(1)通过查询字符串直接转化。(2)通过上下文句柄转化。对于通过查询字符串直接转化的方式,无法跳过若干行进行查询,只能直接将表格中的所有数据转化为XML文档。