oracle golden gate安装,【学习笔记】Oracle goldengate安装配置过程问题及解决办法

【学习笔记】Oracle goldengate安装配置过程问题及解决办法

时间:2016-12-11 18:54   来源:Oracle研究中心   作者:网络   点击:

天萃荷净

Oracle研究中心学习笔记:分享一篇关于Oracle数据库goldengate的文章,文章详细记录了goldengate的配置过程。

本站文章除注明转载外,均为本站原创: 转载自love wife & love life —Roger 的Oracle技术博客

本文链接地址: goldengate 学习系列2–相关配置说明

前面进行了goldengate的单向复制(支持ddl),在进行goldengate安装时,我们需要进行什么准备工作?

1.  创建user

---你可以直接使用oracle用户

---你可以单独创建用户来管理goldengate,例如:

groupadd ggs

useradd -g oinstall -G dba ggs (必须加到oracle的组里面,因为需要调用$ORACLE_HOME/lib)

passwd ggs

2.  配置用户环境变量

---配置SID、数据库字符集、LIB Path

export ORACLE_SID=10gasm

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

export ORACLE_HOME=/home/oracle/oracle/product/10.2.0

export LD_LIBRARY_PATH=/home/ggs/ggs_home:$ORACLE_HOME/lib

3. DDL配置支持

---goldengate ddl支持保护那些操作

+++++ For ogg 10.4:

DDL support for sequences (CREATE, ALTER, DROP, RENAME) is compatible with, but

not required for, replicating sequence values. To replicate just sequence values,

you do not need to install the GoldenGate DDL support environment. You can just

use the SEQUENCE parameter.

我们可以看到是支持sequence的 create,alter、drop以及rename等ddl操作。

这里需要说明的是,如果指定了EXCLUDE, TABLEEXCLUDE等参数,针对这些对象的ddl操作是不会被进程抓取的。

----ddl scripts描述

Object                        Purpose                                       Default name

DDL marker table              Stores DDL information. This table            GGS_MARKER

only receives inserts.

Sequence on marker table      Used for a column in the marker               GGS_DDL_SEQ

table.

DDL history table             Stores object metadata history. This          GGS_DDL_HIST

table receives inserts, updates,

deletes.

Object ID history table        Contains object IDs of configured            GGS_DDL_HIST_ALT

objects.

DDL trigger                    Fires on DDL operations. Writes              GGS_DDL_TRIGGER_BEFORE

information about the operation to

the marker and history tables.

Installed with the trigger are some

packages.

DDL schema                     Contains the DDL synchronization             None; must be specified during

objects.                                     installation and in the GLOBALS

file.

User role                      Establishes the role needed to               GGS_GGSUSER_ROLE

execute DDL operations.

Internal setup table           Database table for internal use              GGS_SETUP

only.

ddl_pin                        Pins DDL tracing, the DDL                    ddl_pin

package, and the DDL trigger for

performance improvements.

ddl_cleartrace.sql              Removes the DDL trace file.                 ddl_cleartrace.sql

ddl_status.sql                  Verifies that the GoldenGate DDL            ddl_status.sql

objects are installed

marker_status.sql              Verifies that the marker table is            marker_status.sql

installed.

ddl_tracelevel.sql              Sets the level for DDL tracing.             ddl_tracelevel.sql

—-配置ddl支持

顺序执行如下脚本即可:

---保证执行之前回收站是关闭的:

ALTER system SET recyclebin=off; --10.2 or later version

ALTER system SET "_recyclebin"=flase; --10.1

---execute sql scripts

SQL > GRANT EXECUTE ON UTL_FILE TO  ggs;

SQL >@ marker_setup.SQL

SQL >@ ddl_setup.SQL

SQL >@ role_setup.SQL

SQL >@ ddl_enable.SQL

SQL >@  /rdbms/admin/dbmspool

SQL >@ ddl_pin.SQL

对于生产库,如果涉及到的DDL对象比较多,那么建议创建单独的表空间来存在goldengate 用户的ddl对象,当你执行完ddl相关脚本以后,会发现数据库中存在如下的ggs用户表:

SQL> SET LINES 120

SQL> col TABLE_NAME FOR a30

SQL> SELECT owner,TABLE_NAME FROM dba_tables

2  WHERE owner='GGS';

OWNER                          TABLE_NAME

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

GGS                            GGS_MARKER

GGS                            GGS_DDL_RULES

GGS                            GGS_DDL_RULES_LOG

GGS                            GGS_SETUP

GGS                            GGS_DDL_HIST_ALT

GGS                            GGS_DDL_HIST

GGS                            GGS_DDL_COLUMNS

GGS                            GGS_DDL_LOG_GROUPS

GGS                            GGS_DDL_PARTITIONS

GGS                            GGS_DDL_PRIMARY_KEYS

GGS                            GGS_DDL_OBJECTS

GGS                            GGS_STICK

GGS                            GGS_TEMP_UK

GGS                            GGS_TEMP_COLS

14 ROWS selected.

特别是里面的GGS_MARKER 和 GGS_DDL_HIST 可能会增长的比较快。

SQL> SELECT COUNT(*) FROM ggs.GGS_DDL_HIST;

COUNT(*)

----------

96

SQL> SELECT COUNT(*) FROM ggs.GGS_MARKER;

COUNT(*)

----------

93

4. 对于ASM的特殊配置

由于我这里是使用的asm(源端和目标端都是asm),开始在进行配置时,还经过了一点小小的折腾,最后查看文档,发现asm的配置有一点差异,这里进行一下说明。

4.1) 有人说针对asm,配置的时候,必须使用sys连接,其实不是这样的,oracle mos文档进行了描述:

Using Oracle GoldenGate In An Oracle ASM Environment With A Non Sys User [ID 1060535.1]

文中提到了remote_login_passwordfile参数,有SHARED和EXCLUSIVE 两种模式,对于SHARED模式, 我感觉相对操作简单,于是我选择了SHARED模式,针对这种情况,ggs用户授予sysdba权限即可。

4.2) 源端抽取进程参数必须增加如下信息:

userid ggs@10gasm,password ggs

TRANLOGOPTIONS ASMUSER sys@+ASM, ASMPASSWORD oracle  ---必须添加这行信息

4.3) listener.ora、tnsnames.ora配置的改变

---源端和目标端

listener.ora:

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(SID_NAME = PLSExtProc)

(ORACLE_HOME = /home/oracle/oracle/product/10.2.0/)

(PROGRAM = extproc)

)

(SID_DESC =

(ORACLE_HOME = /home/oracle/oracle/product/10.2.0/)

(SID_NAME = +ASM)

)

)

红色部分是需要增加的内容

tnsnames.ora:

添加如下内容:

+ASM =

(DESCRIPTION =

(ADDRESS=(PROTOCOL=TCP)(HOST=10gasm)(PORT=1521))

(CONNECT_DATA=(SERVER=DEDICATED)

(SERVICE_NAME=+ASM)

(INSTANCE_NAME=+ASM)

(UR=A))

)

5. redo logs 相关的配置说明

5.1) log_parallelism为1

如果源端数据库是9i版,那么必须设置参数 _log_parallelism为1.因为goldengate不支持该参数大于1的情况。

5.2) io

由于ogg 抽取进程也是直接读取redo log或archivelog的,所以如果数据库本身IO就存在瓶颈,   那么此时,如果抽取进程也比较多,可能会导致严重的性能问题。特别是当抽取进程和lgwr都在   写同一个redo log时。因此,尽可能的保证redo log磁盘更快。当然,显示就不推荐RAID 5,事实   上就不普通的数据库环境,我们也不推荐将redo log放到RAID 5的disk上。

5.3) 如果你redo log和archivelog分别在不同的平台上,此时可以考虑使用如下两种情况:

---使用NFS 存放archivelog

---使用logsource、pathmap、TRANLOGOPTIONS参数,例如如下例子:

TRANLOGOPTIONS LOGSOURCE WINDOWS, PATHMAP &

J:\ORACLE\ORA92\RDBMS\REDO &

\\vm-051\j$\ORACLE\ORA92\RDBMS\REDO, &

PATHMAP J:\ORACLE\ORADATA\ARCH\ &

\\vm-051\j$:\ORACLE\ORADATA\ARCH\

5.4) 最好源库是归档模式,且保留archivelog的时间也够长。如果使用非归档模式,考虑到goldengate有时出现延时的情况(实际上经常出现),最好是保证你的online redo log有尽量多的组,防止 数据还没被抽取就被lgwr进程给覆盖了。

5.5) 对于rac环境,必须保障抽取进程能够读取每个节点的online log和archivelog。

如果archivelog没有在默认位置,且不是默认的日志格式,你可能还需要使用如下参数:

archivelogdest、alterarchivelogformat

5.6) 如果你不需要实时的数据同步,那么还可以配置ogg的抽取进程只读取archivelog,这种模式 下,抽取进程是不会去读online redo logs的,这种模式简称ALO模式。

ALO模式存在如下的一些限制:

---仅仅支持oracle 9i以及以后的版本

---如果源库创建了standby,那么是不能使用resetlogs操作的。

---这种模式下,不支持DDL操作

---如果源库是rac环境,standby环境是非RAC,那么此时standby是能使用ALO模式的

---对于RAhttp://www.oracleplus.netC环境,使用ALO模式,必须使用专用连接模式。

---源端,instance级别以及table 级都必须开启supplemental logging模式。

---ALO模式不支持asm环境下的archivelog读取。当然,如果archivelog 不是存在asm磁盘组里面,

比如在文件系统上,那是可以的。

6. 关于源库存在行迁移的情况说明

根据goldengate文档描述,如何ogg配置中的表存在行迁移或链接(行碎片)的情况下,goldengate 的抽取进程可能需要做更多的工作,这里文档没有说明具体是什么,根据猜测,应该可能会导致更多的io和cpu消耗。 文档的建议是如果表的行迁移和链接比较严重,那么建议从ogg配置中讲这些表去掉。推荐的一个步骤是这样的:

----从ogg配置中删除该表或者使用tableexclude 参数

----对表进行重组(move,rebuild index,修改pctfree等等)

----还原配置

----另外,你还可以针对严重的表单独创建一个extract group。

7. adjusting cursors

从文档描述来看,goldengate 抽取进程也是使用cursor来进行fetch 数据,所以可能需要设置maxfetchstatements参数。另外,数据库实例中,open_cusros参数,可能需要调的更大一些。

8. 长事务的相关配置

我们知道,数据库中有时可能某些事务执行时间会很长,针对这种情况,goldengate有专门的参数。

在事务没有commit之前,ogg的抽取进程是不会写入到trial文件的。例如:

GGSCI (10gasm) 13> view param ext1

extract ext1

userid ggs@10gasm,password ggs

TRANLOGOPTIONS ASMUSER sys@+ASM, ASMPASSWORD oracle

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

warnlongtrans 2h, checkinterval 3m  ---2小时

EXTTRAIL ./dirdat/ex

NUMFILES 3000

ALLOCFILES 200

GETTRUNCATES

SEQUENCE roger.*;

table roger.*;

GGSCI (10gasm) 14>

需要说明一下的是,TRANLOGOPTIONS参数的意思是,超过2小时的长事务,goldengate会记录waring信息的。

并不是说超过2小的长事务就不同步了。

--------------------------------------ORACLE-DBA----------------------------------------

最权威、专业的Oracle案例资源汇总之【学习笔记】Oracle goldengate安装配置过程问题及解决办法

9bd101509341196819122f36086c9a60.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值