Oracle GoldenGate OGG管理员手册

一、简述

前言

编写本手册的目的是为系统管理员以及相关操作人员提供 Oracle Goldengat 软件的日常维护和使用的技术参考;

二、OGG 日常维护操作指南

  • 启动 Goldenagate用 oracle 用户登录生产数据库主机系统进入 OGG 安装目录/ggs,执行./ggsci 进入命令行模式;
  • 启动源端管理进程
Copyright OGG Software, Inc.   1995-2007

GGSCI > start mgr          //  启动 manager 进程
  • 启动所有进程
Copyright OGG Software, Inc.   1995-2007

GGSCI > start ext *         //启动所有抽取进程
  • 查看进程状态是否为 Running(表示已经启动);
Copyright OGG Software, Inc.   1995-2007

GGSCI > info ext * //查看所有进程信息
     
GGSCI > start rep * //启动所有投递进程
  • 查看进程状态是否为 Running(表示已经启动);
Copyright OGG Software, Inc.   1995-2007
GGSCI > info er *   //查看所有进程信息

说明:GGSCI > start er * 是启动所有进程,如果只启动一个进程命令为 start <进程名>。例如进程名称为 dpesz,则启动命令为 start dpesz

  • 停止 OGG

用 oracle 用户登陆主机系统;
进入 OGG 安装目录/ggs,执行./ggsci进入命令行模式验证 OGG 的抽取进程重起所需的日志是否存在,对各个 extXX 进程分别执 行命令:

Copyright OGG Software, Inc.   1995-2007
GGSCI>info extXX,showch       //查询 extXX 进程回滚检查点
Read Checkpoint #1
Recovery Checkpoint (position of oldest unprocessed transaction in the data source): Thread #: 1
Sequence #: 9671                           //在节点 1 上回滚需要的检查点日志序列号
RBA: 239077904
Timestamp: 2008-05-20 11:39:07.000000
SCN: 2195.1048654191
Redo File: Not available
Current Checkpoint (position of last record read in the data source): Thread #: 1
Sequence #: 9671 RBA: 239377476
Timestamp: 2008-05-20 11:39:10.000000
SCN: 2195.1048654339
Redo File: Not Available
Read Checkpoint #2
Recovery Checkpoint (position of oldest unprocessed transaction in the data source):
Thread #: 2
Sequence #: 5287                        //在节点 2 上回滚需要的检查点日志序列号
RBA: 131154160
Timestamp: 2008-05-20 11:37:42.000000
SCN: 2195.1048640151
Redo File: /dev/rredo07
Current Checkpoint (position of last record read in the data source):
Thread #: 2
Sequence #: 5287
RBA: 138594492
Timestamp: 2008-05-20 11:39:14.000000
SCN: 2195.1048654739
Redo File: /dev/rredo07

查看 Recovery Checkpoint 所需要读取的最古老日志序列号“9671”“5287”标明的归档日志以及以后的日志文件在当前的归档目录中是否完全存在;如果存在则可以停止生产数据库主机上的 ext 进程;

  • 停止生产中心的相关进程
  1. 检查 exthy 进程是否将数据全部抓取出来
    进入 OGG 控制台,执行:info all 查看 OGG 进程状态。
    再执行:lag ext exthy 确认结果为:At EOF, no more records to process.
    再执行 send ext exthy,showtrans 如果没有查到结果,(关键显示信息如下: not transaction founds)则可进行下一步,执行:info exthy,detail,记录下显示内容的 remote 部分显示的 seqnoextrba 的数值;
    再执行 info dpehy ,记录下显示的 seqnoextrba 的数值,和上一步执行的结果进行比较,两个结果相同,表示 exthy 进程处理完所有的数据。

  2. 执行 info dpehy,detail
    记录下显示内容的 remote 部分显示的 seqnoextrba 的数值,提供给 rephy 来使用。

  3. 检查 dpe 是否将数据全部传输到目标端
    登陆 OGG 控制台执行 info rephy 记录下显示的 seqnoextrba 的数值,如果两个结果相同,表示 dpewf 进程处理完所有数据

  4. 停止 exthy 和 dpehy 进程

GGSCI>stop exthy
GGSCI>stop dpehy
  1. 多次执行 Info rephy检查队列的 rba 的数值是否还在变化,如果无变化 ,表示数据已经都同步完毕 则可进行下一步

  2. stop rephy

  3. 执行 info all,所有进程都是 STOPPED,表示正常
    说明:只有在需要停止 ext 进程时,才需要如此检测,dpe、rep 进程则不需要;
    stop er *表示停止所有进程,只停止一个进程命令为 stop <进程名>。例如进程名称为 dpesz,则启动命令为 start dpehy

  • OGG 进程的3种状态:
    1. Running:正常运行
    2. Stopped:正常停止或未能启动
    3. Abended:异常中断;
      正常的情况下,进程为 Running 或则 Stopped 状态;一旦出现 Abended 状态,需查询相关的报告文件和 dsc 文件以定位错误;进入 OGG 安装目录并执行./ggsci 进入命令行模式;
  • 查询所有进程状态

命令:GGSCI > info all

Copyright OGG Software, Inc.   1995-2007         
GGSCI (P595B_ctaisdb) 2> info all   //查询所有进程信息   
Program Status  Group   Lag Time Since Chkpt
MANAGER RUNNING              
EXTRACT RUNNING EXTKJ   00:00:00    00:00:07
EXTRACT RUNNING     DPEKJ   00:00:00    00:00:09
EXTRACT RUNNING EXTSZ   00:00:00    00:00:00
EXTRACT       RUNNING         DPESZ            00:00:00          00:00:00
  • 查询相关进程状态

命令 :GGSCI > info <进程名>,如 repxx/extxx/dpexx 查看单个进程状态, 输出示例如下:

Copyright OGG Software, Inc.   1995-2007     
     
GGSCI (P595B_ctaisdb) 2> info extxx //查询进程 extsz 信息
EXTRACT EXTSZ   Last Started 2008-05-11 14:49Status RUNNING
Checkpoint Lag      00:00:00 (updated 00:00:01 ago)
Log Read Checkpoint File Not Available   
2008-05-20 11:39:02   Thread 1, Seqno 9671, RBA 238663364
Log Read Checkpoint File /dev/rredo07    
2008-05-20 11:39:03   Thread 2, Seqno 5287, RBA 138279848
  • 查看进程检查点信息

命令:GGSCI > info <进程名>,showch
示例如下:

Copyright OGG Software, Inc.   1995-2007
GGSCI>info extXX,showch       //查询 extXX 进程回滚检查点
Read Checkpoint #1
Recovery Checkpoint (position of oldest unprocessed transaction in the data source): Thread #: 1
Sequence #: 9671                           //在节点 1 上回滚需要的检查点日志序列号
RBA: 239077904
Timestamp: 2008-05-20 11:39:07.000000
SCN: 2195.1048654191
Redo File: Not available 
ORACLE
Current Checkpoint (position of last record read in the data source): Thread #: 1
Sequence #: 9671 RBA: 239377476
Timestamp: 2008-05-20 11:39:10.000000
SCN: 2195.1048654339
Redo File: Not Available
Read Checkpoint #2
Recovery Checkpoint (position of oldest unprocessed transaction in the data source): Thread #: 2
Sequence #: 5287                        //在节点 2 上回滚需要的检查点日志序列号
RBA: 131154160
Timestamp: 2008-05-20 11:37:42.000000
SCN: 2195.1048640151
Redo File: /dev/rredo07
Current Checkpoint (position of last record read in the data source):   //当前检查点
Thread #: 2 Sequence #: 5287
RBA: 138594492
Timestamp: 2008-05-20 11:39:14.000000
SCN: 2195.1048654739
Redo File: /dev/rredo07

说明:查看单个进程的检查点详细信息,包括读取到什么位置,写到什么位置。特别需要注意 Recovery Checkpoint,这个检查点记录的是当前最早没有提交的事务开始的日志,如果下次需要重起则需要读这个日志,要保证其没有被删除

  • 查看进程报告

命令:GGSCI > view report <进程名>
例如 repsz 查看复制进程报告。一般在进程出现 abended 后可以在报告里面找到ORACLE错误信息。示例如下:

Copyright OGG Software, Inc.   1995-2007
GGSCI > view report repsz
***********************************************************************
OGG Delivery for Oracle Version v9.5.1.1 Build 006
AIX 5L (optimized 64-bit), Oracle 9.2.0 on Nov 30 2007 11:47:10 Copyright OGG Software, Inc. 1995-2007
Starting at 2008-04-24 23:10:17
***********************************************************************
Operating System Version:
AIX
Version 5, Release 3
Node: zjzbnhdb03
Machine: 00CE7A8F4C00
            soft limit  hard limit
Address Space Size:     unlimited   unlimited
Heap Size       :   unlimited   unlimited
File Size   :       unlimited   unlimited
CPU Time        :   unlimited   unlimited
Process id: 1335310
***********************************************************************
**                     Running with the following parameters                               **
***********************************************************************
replicat repsz     //     进程名
userid OGG, password *************
ORACLE
REPORT AT 01:59                 //报告时间
reportrollover at 02:00 –handlecollisions –reperror default,discard
discardfile /oradata/OGG/repxm.dsc,append,megabytes 100m –ddlerror default discard
assumetargetdefs allownoopupdates dynamicresolution numfiles 3000
MAP ctais2.* ,TARGET ctais2.*;
Database Version:
Oracle9i Enterprise Edition Release 9.2.0.7.0 – 64bit Production
PL/SQL Release 9.2.0.7.0 – Production
CORE     9.2.0.7.0 Production
TNS for IBM/AIX RISC System/6000: Version 9.2.0.7.0 – Production
NLSRTL Version 9.2.0.7.0 – Production
Database Language and Character Set:
NLS_LANG = “AMERICAN_AMERICA.US7ASCII”
NLS_LANGUAGE         = “AMERICAN”
NLS_TERRITORY       = “AMERICA”
NLS_CHARACTERSET = “US7ASCII”
For further information on character set settings, please refer to user manual.
***********************************************************************
**                                     Run Time Messages                                                   **
***********************************************************************
Opened trail file /oradata /OGG/dirdat/xm000000 at 2008-04-24 23:10:19
ORACLE
Wildcard MAP resolved (entry CTAIS2.*):
MAP CTAIS2.DM_CZRY, TARGET ctais2.DM_CZRY; Using following columns in default map by name:
CZRY_DM, SWJG_DM, CZRY_MC, SWRY_DM, QX_SWJG_DM, XM_NSRSBH, XYBZ, YXBZ

配置自动删除队列文件以 oracle 用户登录系统,进入安装目录执行 ./ggsci;执行 edit param mgr 编辑管理进程参数

Copyright OGG Software, Inc.   1995-2007

GGSCI>edit param mgr     //编辑 Manager 参数

加入或修改以下行

purgeoldextracts //dirdat/*, usecheckpoint, minkeepdays 7

其中,
第一个参数为队列位置,*可匹配备份中心所有队列文件;
第二个参数表示是首先要保证满足检查点需要,不能删除未处理队列;
第三个参数表示最小保留多少天,后面的数字为天数。
例如,如果希望只保留队列/ggs/dirdat/xm 文件 10 天,可以配置如下:

purgeoldextracts /oraclelog1/OGG/dirdat/xm, usecheckpoint, minkeepdays 10

  • 停止 MGR 进程,修改好参数后重启该进程
Copyright OGG Software, Inc.   1995-2007
GGSCI > stop mgr
Manager process is required by other GGS processes.
Are you sure you want to stop it (y/n)? y   //输入 y 确认停止 mgr 进程
Sending STOP request to MANAGER …
Request processed.
Manager stopped.
Copyright OGG Software, Inc.   1995-2007
GGSCI > start mgr  
Manager started.

注:临时停止 mgr 进程并不影响数据复制。

配置启动 mgr 时自动启动 extract 和 replicat 进程以 OGG 用户登录系统,进入安装目录执行./ggsci;执行 edit param mgr 编辑管理进程参数,加入以下行AUTOSTART ER *

Copyright OGG Software, Inc.   1995-2007

GGSCI>edit param mgr     //编辑 Manager 参数

加入内容

AUTOSTART ER *

  • 停止 MGR 进程,修改好参数后重启该进程
Copyright OGG Software, Inc.   1995-2007
GGSCI > stop mgr     //关闭进程 Manager
Manager process is required by other GGS processes.
Are you sure you want to stop it (y/n)? y   //输入 y 确认停止 mgr 进程
Sending STOP request to MANAGER …
Request processed.
Manager stopped.
GGSCI > start mgr   //启动 Manager
Manager started.

注意:一般建议不用自动启动,而是手工启动,便于观察状态验证启动是否成功,同时也便于客户自己修改参数。

配置 mgr 定时自动重启 extract 和 replicat 进程OGG 具有自动重起 extract 或者 replicat 进程的功能,能够自动恢复如网络中断、数据库临时挂起等引起的错误,在系统恢复后自动重起相关进程,无需人工介入。

  1. 以 oracle 用户登录系统,进入安装目录执行 ggsci 进入命令行界面;
  2. 执行 edit param mgr 编辑管理进程参数
Copyright OGG Software, Inc. 1995-2007 
GGSCI > edit param mgr //编辑 Manager 参数

加入以下行

AUTORESTART ER *, RETRIES 3, WAITMINUTES 5, RESETMINUTES 60

以上参数表示每 5 分钟尝试重新启动所有进程,共尝试三次。以后每 60 分钟清零,再按照每 5 分钟尝试一次共试 3 次。

  • 停止 MGR 进程,修改好参数后重启该进程,使修改后的参数文件生效
GGSCI > stop mgr   //停止进程 Manager
Manager process is required by other GGS processes.
Are you sure you want to stop it (y/n)? y   //输入 y 确认停止 mgr 进程
Sending STOP request to MANAGER …
Request processed.
Manager stopped.
GGSCI > start mgr        //启动进程 Manager
Manager started.

长交易的管理在停止抽取进程前需要通过命令检查是否存在长交易,以防止下次启动无法找到归档日志:
命令: GGSCI > info 进程名, showch
示例如下:

Copyright OGG Software, Inc.   1995-2007
ggsci> info extsz,showch            //查询进程 extsz 未提交长交易检查点位置
Read Checkpoint #1
….
Recovery Checkpoint (position of oldest unprocessed transaction in the data source):
Thread #: 1
Sequence #: 9671
RBA: 239077904
Timestamp: 2008-05-20 11:39:07.000000
SCN: 2195.1048654191
Redo File: Not available
Current Checkpoint (position of last record read in the data source):
Thread #: 1
Sequence #: 9671
RBA: 239377476
Timestamp: 2008-05-20 11:39:10.000000
SCN: 2195.1048654339
Redo File: Not Available
Read Checkpoint #2
…..
Recovery Checkpoint (position of oldest unprocessed transaction in the data source): Thread #: 2
Sequence #: 5287 RBA: 131154160
Timestamp: 2008-05-20 11:37:42.000000
SCN: 2195.1048640151
Redo File: /dev/rredo07
Current Checkpoint (position of last record read in the data source):
Thread #: 2
Sequence #: 5287
RBA: 138594492
Timestamp: 2008-05-20 11:39:14.000000
SCN: 2195.1048654739

为了方便长交易的管理,OGG 提供了一些命令来帮助客户和应用开发商查找到对应长交易,并在 OGG 中予以提交或者回滚。

  • 查看长交易

命令格式:> send extract <进程名> , showtrans [thread n] [count n]
其中,<进程名>为所要察看的进程名,如 extsz/extxm/extjx 等;Thread n 是可选的,表示只查看其中一个节点上的未提交交易;Count n 也是可选的,表示只显示 n 条记录。例如下面命令:

Copyright OGG Software, Inc.   1995-2007
Ggsci> send extract extsz , showtrans thread 1   count 10   //查询 extsz 进程中节点 1 上最长的 10 个交易
Sending showtrans request to EXTRACT EXTSZ
No transactions found
Oldest redo log file necessary to restart Extract is:
Redo Log Sequence Number 2, RBA 7890448.

输出结果是以时间降序排列的所有未提交交易列表,通过 xid 可以查找到对应的事务,请应用开发商和 DBA 帮助可以查找出未提交原因,通过数据库予以提交或者回滚后 OGG 的 checkpoint 会自动向前滚动。

  • 使用 OGG 命令跳过或接受长交易

在 OGG 中强制提交或者回滚指定事务,可以通过以下命令:
跳过交易命令格式

Ggsci> SEND EXTRACT <进程名>, SKIPTRANS <5.17.27634> THREAD <2>

强制认为该交易已经提交命令格式

Ggsci>SEND EXTRACT <进程名>, FORCETRANS <5.17.27634> THREAD <1>

说明:使用这些命令只会让 OGG 进程跳过或者认为该交易已经提交,但并不改变数据库中的交易,他们依旧存在于数据库中。因此,强烈建议使用数据库中提交或者回滚交易而不是使用 OGG 处理。

  • 配置长交易告警

可以在 extract 进程中配置长交易告警,参数设置如下所示:

Copyright OGG Software, Inc.   1995-2007
ggsci> edit param extsz            //编辑进程 extsz 参数

在参数文件中增加如下:

warnlongtrans 12h, checkintervals 10m
exttrail /backup/OGG/dirdat/sz

以上表示 OGG 会每隔 10 分钟检查一下长交易,如果有超过 12 个小时的长交易,OGG 会在根目录下的 ggserr.log 里面加入一条告警信息。可以通过察看ggserr.log 或者在 ggsci 中执行 view ggsevt 命令查看这些告警信息。以上配置可以有助于及时发现长交易并予以处理。
源端和目标端数据库增减复制表

  • 增加复制表

在当前进程参数中,通过显式列表的来匹配表,增加表后必须要修改配置文件,还要为新增的表添加附加日志。步骤如下:

【源端】

GGSCI 〉STOP EXT *
GGSCI> INFO ALL

【目标端】

GGSCI>STOP REP *
GGSCI>INFO ALL

【源端】

GGSCI>dblogin userid OGG, password XXXXXXX
GGSCI > info trandata .

如果不是 enable 则需要手动加入:

GGSCI>add trandata .
GGSCI>START EXT *

【目标端】

GGSCI>START REP *

另外,当前 OGG 自动复制新增表的增删改等 DML 操作,但不复制 DDL 操作, 所以对于新增表请首先在目标端建立表结构。如果有外键和 trigger,需要在目标表临时禁止该外键和 trigger。

  • 减少复制表

如果有的表不再需要,可以在源端 drop 掉,然后到目标 drop 掉,在 OGG 的复制参数中把该表排除掉即可。
如果其中几个表依然存在,只是无需 OGG 复制,则可以通过以下步骤排除:

  1. 在源端系统上首先根据节2 描述验证所需归档日志存在后通过 stop extXX 停止对应的 extXX 进程;
  2. 在目标端系统上 ggsci 中执行 stop repXX 停止目标端的复制进程;
  3. 在源端修改 ext 进程的参数文件排除所不复制的表:
GGSCI>edit param extXX
....
tableexclude hxods.TMP_*; tableexclude hxods.BAK_*; tableexclude hxods.MLOG$_*; tableexclude hxods.RUPD$_*; tableexclude hxods.KJ_*;
tableexclude myschema.mytable;
table hxods.*;
...
  1. 在文件定义 table 的行前面加入一行“tableexclude .;” 注意写全 schema 和表的名称。

  2. 在目标端修改 rep 进程参数,同样排除该表:

GGSCI>edit param repXX

在 map 前面加入一行:

mapexclude HXODS.SHOULIXINXI
mapexclude myschema.mytable
MAP HSODS.* ,TARGET HXODS.*;

  1. 在目标端系统上启动复制进程 repXX
GGSCI > start   repXX
  1. 在源端系统上启动源端的抓取进程 extXX
GGSCI > start   extXX

即可进入正常复制状态。

  • 修改表结构

当数据库需要复制的表结构有所改变,如增加列,改变某些列的属性如长度等表结构改变后,可以按照下列步骤执行:

  1. 按照本文前面所述操作顺序停止源和目标端各抽取及投递进程(注意停源端 抽取要验证一下归档日志是否存在防止无法重起),无需停止 manager 进程;

  2. 修改目标表结构;

  3. 修改源表结构;
    如果表有主键,并且本次修改未修改主键,则可以直接启动源和目标所有进程继续复制,完成本次修改;否则,如果表无主键或者本次修改了主键则需继续执行下列步骤;

Copyright OGG Software, Inc.   1995-2007
ggsci> dblogin userid go mldengate, password XXXXXX   //登陆数据库
Successfully logged into database.
ggsci> delete trandata schema.mytable     //删除表的附加日志
Logging of supplemental redo log data disabled for table schema.mytable ggsci> add trandata schema.mytable //增加表的附加日志
Logging of supplemental redo log data is disabled for table schema.mytable

如果表超过了 32 列则上述操作可能会报错,此时需要手工进行处理,请参 考附录三中如何手动为表删除和增加附加日志。
重新启动源端和目标端的抓取和复制进程。

  • 使用 imp 导入数据的注意事项
    1. 使用 imp 工具导入数据时,由于该操作写日志,OGG 支持复制通过 imp 导入的数据,但不支持创建表的操作,需要在目标端事先创建表然后再在源端导入。

    2. 需要注意的是,每次 imp 都是一个 oracle 事务,如果导入的表过大(如超过 10G),有可能超过 OGG 所配置的最大内存,请首先咨询 OGG 技术支持。

  • 表的重新再同步

如果是某些表由于各种原因造成两边数据不一致,需要重新进行同步,但实际业务始终 24 小时可用,不能提供时间窗口,则可以参照以下步骤(因较为复杂,使用需谨慎!):

  1. 确认 ext/dpe/rep 进程均无较大延迟,否则等待追平再执行操作;
  2. 停止目标端的 rep 进程;
    注意:步骤 3-5 为将源端数据通过 exp/imp 导入到目标端,客户也可以选择其它初始化方式,比如 expdp/impdp。
  3. 在源端获得当前的 scn 号。例如:
SQL>select dbms_flashback.get_system_change_number from dual;
  1. 以下以获得的 scn 号为 1176681 为例在源端使用 exp 导出所需重新初始化的表或者几张表数据,并且指定到刚才记下的 scn 号。例如:
exp / tables=ctais2.SB_ZSXX grants=n statistics=none triggers=n compress=n FLASHBACK_SCN=1176681
  1. 通过 ftp 传输到目标端;
  2. 在目标端,使用 imp 导入数据;
nohup imp OGG/XXXXX file=nanhai.dmp fromuser=ctais2 touser=ctais2 ignore=y &

如果这些表有外键,在目标端检查这些外键并禁止它们(记得维护 dirsql 下的禁止和启用外键的脚本 SQL);

  1. 编辑目标端对应的 rep 参数文件,在其 map 里面加入一个过滤条件,只对这些重新初始化的表应用指定 scn 号之后的记录(一定要注意不要修改本次初始化之外的其它表,会造成数据丢失!):
map  source.mytab, target  target.mytab, filter(  @GETENV  ("TRANSACTION","CSN") >1176681 ) ;
  1. 确认参数无误后,启动目标端的 rep 进程;
  2. 使用 info repxx 或者 lag repxx 直到该进程追上,停止该进程去掉 filter 即可进入正常复制。
  • OGG 复制软件升级

当源端和目标端要进行 OGG 升级时,请首先咨询 OGG 技术支持人员。如升级后版本无特殊要求,其操作参考如下:

  1. 按正常步骤停止当前版本抓取端【源端】的进程。
OGG Command Interpreter for Oracle
Version v9.5.1.0 Build 012
Windows (optimized), Oracle 10.1.0 on Oct 29 2007 20:10:55
Copyright OGG Software, Inc.   1995-2007
GGSCI (FILESRV) 1> stop er *   //停止所有的进程
EXTRACT EXTSZ is already stopped.
Sending STOP request to EXTRACT EXTSZ …
Request processed.
GGSCI > info er *                                                          //查询进程信息
EXTRACT       EXTSZ         Last Started 2008-07-03 02:01    Status STOPPED   //进程已经停止
Checkpoint Lag            00:00:00 (updated 11:30:25 ago) 
Log Read Checkpoint 
...

记录反馈信息

OGG Command Interpreter for Oracle
Version v9.5.1.0 Build 012
Windows (optimized), Oracle 10.1.0 on Oct 29 2007 20:10:55
Copyright OGG Software, Inc.   1995-2007
GGSCI (FILESRV) 4> stop mgr //停止进程 Manager
Manager is already stopped.              
GGSCI (FILESRV) 5> info all //查询所有进程状态   
Program Status  Group   Lag Time Since Chkpt
MANAGER STOPPED          
EXTRACT STOPPED EXTT1   00:00:00    11:33:38
EXTRACT STOPPED EXTT3   00:00:00    00:05:00
  1. 记录反馈信息按正常步骤停止【目标端】进程。(同上类似)
GGSCI > stop er *
GGSCI > info er *
GGSCI > stop mgr

记录反馈信息

  1. 将旧的系统下所有文件打包备份;
  2. 将最新版本的软件包 MV 到根目录下解包安装覆盖旧的系统。
$ gzip -d XXXXXXX.tar.gz    //解压缩安装文件
$ tar xvf XXXXXXX.tar   //解压缩安装文件
  1. 按同样步骤升级备份数据库主机 OGG 软件。
    查看设置信息是否与原版本一致,重新启动源数据库主机【源端】的抓取和复制进程。查看运行状态。
GGSCI > info er *
GGSCI > start mgr;启动源端 ggs 软件
GGSCI > start mgr;启动备份端 ggs 软件
  1. 按正常步骤启动源端复制进程。
GGSCI > start er *
GGSCI > info er *
  1. 按正常步骤启动目标端复制进程。
GGSCI > start rep *
GGSCI > info rep *

版本升级结束。

  • 数据库升级

在数据库升级之前应提前通报给 OGG,以便于确定复制软件是否支持最新版本。
如果需要升级 OGG 软件参考前面的升级步骤,如果不需要升级 OGG,则只需停止OGG 进程进行升级,然后升级完毕重新启动即可。

  • 操作系统升级

在数据库升级之前应提前通报给 OGG,以便于确定复制软件是否支持最新版本。
如果需要升级 OGG 软件参考前面的升级步骤,如果不需要升级 OGG,则只需停止OGG 进程进行升级,然后升级完毕重新启动即可。

  • 数据库用户密码安全
  1. 加密OGG 的 dirprm 目录下存放着所有参数文件,其中密码可以使用明文或者加 密方式保存,如果需要使用加密密码,请使用下列步骤:
GGSCI > encrypt password   mypassword   //生成密钥
No key specified, using default key..
Encrypted password:   AACAAAAAAAAAAAKAPATACEHBIGQGCFZCCDIGAEMCQFFBZHVC
  1. 将参数文件中原来的明文行

userid ggs, password mypassword

  1. 改为密文

userid ggs, password AACAAAAAAAAAAAKAPATACEHBIGQGCFZCCDIGAEMCQFFBZHVC,
encryptkey default

然后重新启动进程即可

附录一 OGG 对数据类型和对的限制

1、OGG 对数据类型和对象的限制

1.1、OGG 数据类型支持
  • 支持Numeric(数字类型),包括NUMBER、BINARY FLOAT、BINARY DOUBLE。 暂不支持BINARY_INTEGER和PLS_INTEGER。
  • 支持所有Character(字符类型),包括CHAR、VARCHAR2、LONG、NCHAR、 NVARCHAR2。
  • 支持大对象,包括CLOB、NCLOB、BLOB。但不支持BFILE
  • 支持Binary(二进制类型),包括RAW和LONG RAW。
  • 支持Date及timestamp类型。支持除了TIMEZONE_REGION和TIMEZONE_ABBR 类型的所有TIMESTAMP类型。
  • 暂不支持多字节的XML类型。
  • 支持用户自定义类型(UDT),源端的UDT与目标端的UDT的必须相同。
  • 其它支持的数据类型,包括ROWID、VARRAY、INTERVAL DAY、INTERVAL YEAR。
  • OGG暂不支持的其它数据类型:

    ANYDATA and ANYDATASET
    ANYTYPE
    MLSLABEL
    URITYPE
    UROWID

1.2、OGG 特殊对象支持
1.2.1、有条件支持物化视图(Materialized views)

在以下有条件限制中支持:

  • 源表必须有唯一主键
  • OGG不支持物化视图使用”WITH ROWID”来创建,但当物化视图LOG(不是物 化视图自己)用”WITH ROWID”来创建时,OGG是支持的。
  • 物化视图必须是使用单个表,而不能包含joins生成的表。
  • OGG不支持truncates物化视图,但支持使用“DELETE FROM”来替代。
  • 索引组织表(Index organized tables)通过物化视图复制对于OGG基于LOG的复制方式,IOT表无法直接从日志中抽取,但是可以为 IOT表建立物化视图,通过复制该物化视图的变化实现IOT数据变化的复制。
  • 其它不支持对象Clustered tables。
  • Nested tables。OGG只支持该类表的增加和删除,不支持嵌入对象的更新。
  • 使用压缩(COMPRESS)选项生成或修改的表Views(视图)Synonyms(同义表)REFs

2、OGG 不支持的特殊操作

以下特殊操作由于不写日志,OGG 无法予以复制:
Direct-path table loads(由于不进行写 LOG 操作)Oracle 插入数据有两种方式:
a、常规插入:重新使用 table 中的自由空间,在已有数据中插入新数据;维护引用完整性约束。
b、Direct-Path 插入:在表中已有数据之后插入新数据;数据直接插入数据文件,绕过 buffer cache;已有数据中的自由空间没有被重新利用;忽略了引用完整性约束。Direct-Path 可以 disable redo log 和 undo log,导致 OGG无法通过日志捕捉到数据变化。
常见的 Direct Path Load 包括:

insert into table as select….
create table xxx as select…

如果遇到上述操作,一般这些表数据不是原生数据,可以在复制中排除掉这些表并通过定时备份等方式予以复制。
/*+ APPEND / hint。如果在应用中使用该 hint,则不会写日志,OGG 无法复制。
/
+ BUFFER */ hint。如果在应用中使用该 hint,则不会写日志,OGG 无法复制。
OGG 支持 imp 操作由于 imp 操作写日志,OGG 能够支持 imp 操作。但由于不复制 DDL 操作,需要事前在目标端建立表结构。如果 imp 的表过大,有可能引起 OGG 内存不够用,报出 105 错误。因此,请在使用 imp 前咨询 OGG 技术支持。

数据库和应用日常维护注意事项

  • Oracle 9i 中 redo parallelism 必须设置为1。OGG基于log的复制方式,在oracle10g上可以将log_parallelism参数最大可以设置到8,这个参数控制了并行产生REDO LOG的处理数量。但在oracle10g以下的版本,OGG只支持该参数为1。请不要修改这个参数,否则会造成抽取数据不完整。

  • 为表设置主键或者唯一索引OGG使用主键和唯一索引在源和目标定位需要更新或者删除的数据,应用开发新增表应当尽可能带有主键和唯一索引。同时,增加主键也有利于提高目标端数据投递的速度,减小复制延迟和降低资源消耗。

  • 保留 3-7 天归档日志OGG只复制已经提交的交易,如果不提交则不会复制到目标端。在停止复制并重新启动时,需要找到以前没有提交交易开始的日志。因此,为了保证OGG能够重新启动,请保留3-7天归档日志。

  • 避免使用不写日志的操作OGG 只复制日志中的交易,应当避免在应用和数据库维护中使用 Direct Path 等不写日志的操作,这些操作无法复制,会导致两端数据不一致。 OGG 复制的限制和约束。

你可能感兴趣的:(Oracle GoldenGate OGG管理员手册)