第一章 系统实现简述
- 前言
编写本手册的目的是为系统管理员以及相关操作人员提供 Oracle Goldengat 软
件的日常维护和使用的技术参考;
3
ORACLE
第二章 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 | *//查看所有进程信息 |
SCI > start rep * | //启动所有投递进程 |
- 查看进程状态是否为 Running(表示已经启动);
Copyright OGG Software, Inc. 1995-2007
GGSCI > info er * //查看所有进程信息
说明:GGSCI > start er *是启动所有进程,如果只启动一个进程命令为 start <
进程名>。例如进程名称为 dpesz,则启动命令为 start dpesz。
- 停止 OGG
- 用 oracle 用户登陆主机系统;
4
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
5
ORACLE
RBA: 138594492
Timestamp: 2008-05-20 11:39:14.000000
SCN: 2195.1048654739
Redo File: /dev/rredo07
查看 Recovery Checkpoint 所需要读取的最古老日志序列号“9671”“5287”标
明的归档日志以及以后的日志文件在当前的归档目录中是否完全存在;如果存在则
可以停止生产数据库主机上的 ext 进程;
- 停止生产中心的相关进程;
Copyright OGG Software, Inc. 1995-2007
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 部分显示的 seqno 和 extrba 的数值;
再执行 info dpehy ,记录下显示的 seqno 和 extrba 的数值,和上一步执行的结果进
行比较,两个结果相同,表示 exthy 进程处理完所有的数据。
2) info dpehy,detail,记录下显示内容的 remote 部分显示的 seqno 和 extrba 的数
值,提供给 rephy 来使用。
3)检查 dpe 是否将数据全部传输到目标端
登陆 OGG 控制台执行 info rephy 记录下显示的 seqno 和 extrba 的数值,如果两个
结果相同,表示 dpewf 进程处理完所有数据
4)停止 exthy 和 dpehy 进程
GGSCI>stop exthy
GGSCI>stop dpehy
5)多次执行 Info rephy,检查队列的 rba 的数值是否还在变化,如果无变化 ,表
示数据已经都同步完毕 则可进行下一步
6
ORACLE
6)stop rephy
7)执行 info all,所有进程都是 STOPPED,表示正常
4、执行 info all,所有进程都是 STOPPED,表示正常
说明:只有在需要停止 ext 进程时,才需要如此检测,dpe、rep 进程则不需要;
stop er *表示停止所有进程,只停止一个进程命令为 stop <进程名>。例如进程名称
为 dpesz,则启动命令为 start dpehy;
- 查看进程信息
OGG 所有进程状态共有 3 种:
- Running:正常运行
- Stopped:正常停止或未能启动
- Abended:异常中断;
正常的情况下,进程为 Running 或则 Stopped 状态;一旦出现 Abended 状态,需
查询相关的报告文件和 dsc 文件以定位错误;
进入 OGG 安装目录并执行./ggsci 进入命令行模式;
3.1 查询所有进程状态 | ||||||
命令: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 | ||
7
ORACLE
EXTRACT RUNNING DPESZ 00:00:00 00:00:00
3.2 查询相关进程状态
命令: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
3.3 查看进程检查点信息
命令: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
8
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,这个检查点记录的是当前最早没有提交的事务
开始的日志,如果下次需要重起则需要读这个日志,要保证其没有被删除
3.4 查看进程报告
命令:GGSCI > view report <进程名>
例如 repsz 查看复制进程报告。一般在进程出现 abended 后可以在报告里面找到
9
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 *************
10
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
11
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 /<OGG 安装目录>/dirdat/*, usecheckpoint, minkeepdays 7
其中,第一个参数为队列位置,*可匹配备份中心所有队列文件;第二个参数表
示是首先要保证满足检查点需要,不能删除未处理队列;第三个参数表示最小保留
多少天,后面的数字为天数。例如,如果希望只保留队列/ggs/dirdat/xm 文件 10 天,
可以配置如下:
purgeoldextracts /oraclelog1/OGG/dirdat/xm, usecheckpoint, minkeepdays 10
3) 停止 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
12
ORACLE
Manager started.
注:临时停止 mgr 进程并不影响数据复制。
- 配置启动 mgr 时自动启动 extract 和 replicat 进程
- 以 OGG 用户登录系统,进入安装目录执行./ggsci;
- 执行 edit param mgr 编辑管理进程参数,加入以下行
AUTOSTART ER *
Copyright OGG Software, Inc. 1995-2007
GGSCI>edit param mgr //编辑 Manager 参数
3) 停止 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 进入命令行界面;
13
ORACLE
2) 执行 edit param mgr 编辑管理进程参数,加入以下行
AUTORESTART ER *, RETRIES 3, WAITMINUTES 5, RESETMINUTES 60
Copyright OGG Software, Inc. 1995-2007 GGSCI>edit param mgr //编辑 Manager 参数
以上参数表示每 5 分钟尝试重新启动所有进程,共尝试三次。以后每 60 分钟
清零,再按照每 5 分钟尝试一次共试 3 次。
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.
- 长交易的管理
在停止抽取进程前需要通过命令检查是否存在长交易,以防止下次启动无法找
到归档日志:
命令格式 gsci> 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):
14
ORACLE
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
15
ORACLE
为了方便长交易的管理,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 进程跳过或者认为该交易已经提交,但
并不改变数据库中的交易,他们依旧存在于数据库中。因此,强烈建议使用数据库
16
ORACLE
中提交或者回滚交易而不是使用 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 <schema>.<table name>
17
ORACLE
如果不是 enable 则需要手动加入:
GGSCI > add trandata <schema>.<table name>
GGSCI>START EXT*
目标端:
GGSCI>START REP*
另外,当前 OGG 自动复制新增表的增删改等 DML 操作,但不复制 DDL 操作, 所以对于新增表请首先在目标端建立表结构。如果有外键和 trigger,需要在目标
表临时禁止该外键和 trigger。
(二) 减少复制表
如果有的表不再需要,可以在源端 drop 掉,然后到目标 drop 掉,在 OGG 的
复制参数中把该表排除掉即可。
如果其中几个表依然存在,只是无需 OGG 复制,则可以通过以下步骤排除:
- 在源端系统上首先根据节2 描述验证所需归档日志存在后通过 stop extXX 停止对应的 extXX 进程;
- 在目标端系统上 ggsci 中执行 stop repXX 停止目标端的复制进程;
- 在源端修改 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.*;
…….
在文件定义 table 的行前面加入一行“tableexclude <schema>.<tablename>;” 注
意写全 schema 和表的名称。
4) 在目标端修改 rep 进程参数,同样排除该表:
18
ORACLE
GGSCI>edit param repXX
在 map 前面加入一行:
–mapexclude HXODS.SHOULIXINXI
mapexclude myschema.mytable
MAP HSODS.* ,TARGET HXODS.*;
5) 在目标端系统上启动复制进程 repXX
GGSCI > start repXX
6) 在源端系统上启动源端的抓取进程 extXX
GGSCI > start extXX
即可进入正常复制状态。
- 修改表结构
当数据库需要复制的表结构有所改变,如增加列,改变某些列的属性如长度等表
结构改变后,可以按照下列步骤执行:
- 按照本文前面所述操作顺序停止源和目标端各抽取及投递进程(注意停源端 抽取要验证一下归档日志是否存在防止无法重起),无需停止 manager 进程;
- 修改目标表结构;
- 修改源表结构;
- 如果表有主键,并且本次修改未修改主键,则可以直接启动源和目标所有进 程继续复制,完成本次修改;否则,如果表无主键或者本次修改了主键则需
继续执行下列步骤;
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 列则上述操作可能会报错,此时需要手工进行处理,请参 考附录三中如何手动为表删除和增加附加日志。
- 重新启动源端和目标端的抓取和复制进程。
19
ORACLE
- 使用 imp 导入数据的注意事项
使用 imp 工具导入数据时,由于该操作写日志,OGG 支持复制通过 imp 导入的
数据,但不支持创建表的操作,需要在目标端事先创建表然后再在源端导入。
需要注意的是,每次 imp 都是一个 oracle 事务,如果导入的表过大(如超过 10G),
有可能超过 OGG 所配置的最大内存,请首先咨询 OGG 技术支持。
- 表的重新再同步
如果是某些表由于各种原因造成两边数据不一致,需要重新进行同步,但实际业
务始终 24 小时可用,不能提供时间窗口,则可以参照以下步骤。(因较为复杂,使
用需谨慎!)
确认 ext/dpe/rep 进程均无较大延迟,否则等待追平再执行操作;
停止目标端的 rep 进程;
注意:步骤 3-5 为将源端数据通过 exp/imp 导入到目标端,客户也可以选择其它
初始化方式,比如 expdp/impdp。
在源端获得当前的 scn 号。例如:
select dbms_flashback.get_system_change_number from dual;
以下以获得的 scn 号为 1176681 为例
在源端使用 exp 导出所需重新初始化的表或者几张表数据,并且指定到刚才记下
的 scn 号。例如:
exp <username>/<password> tables=ctais2.SB_ZSXX grants=n statistics=none triggers=n compress=n FLASHBACK_SCN=1176681
通过 ftp 传输到目标端;
在目标端,使用 imp 导入数据;
nohup imp OGG/XXXXX file=nanhai.dmp fromuser=ctais2 touser=ctais2 ignore=y
&
如果这些表有外键,在目标端检查这些外键并禁止它们(记得维护 dirsql 下的禁
20
ORACLE
止和启用外键的脚本 SQL);
编辑目标端对应的 rep 参数文件,在其 map 里面加入一个过滤条件,只对这些重
新初始化的表应用指定 scn 号之后的记录(一定要注意不要修改本次初始化之外的其
它表,会造成数据丢失!):
map source.mytab, target target.mytab, filter ( @GETENV (“TRANSACTION”,
“CSN”) > 1176681 ) ;
确认参数无误后,启动目标端的 rep 进程;
使用 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)
21
ORACLE
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 | |
记录反馈信息
- 按正常步骤停止目标备份端进程。(同第一步类似)
GGSCI > stop er *
GGSCI > info er *
GGSCI > stop mgr
记录反馈信息
- 将旧的系统下所有文件打包备份;
- 将最新版本的软件包 MV 到根目录下解包安装覆盖旧的系统。
$ gzip -d XXXXXXX.tar.gz | //解压缩安装文件 |
$ tar xvf XXXXXXX.tar | //解压缩安装文件 |
5) 按同样步骤升级备份数据库主机 OGG 软件。
22
ORACLE
- 查看设置信息是否与原版本一致,重新启动源数据库主机的抓取和复制进程。查 看运行状态。
GGSCI > info er *
GGSCI > start mgr;启动源端 ggs 软件
GGSCI > start mgr;启动备份端 ggs 软件
按正常步骤启动源端复制进程。
GGSCI > start er *
GGSCI > info er *
按正常步骤启动目标端复制进程。
GGSCI > start rep *
GGSCI > info rep *
7) 版本升级结束。
- 数据库升级
在数据库升级之前应提前通报给 OGG,以便于确定复制软件是否支持最新版本。
如果需要升级 OGG 软件参考前面的升级步骤,如果不需要升级 OGG,则只需停止
OGG 进程进行升级,然后升级完毕重新启动即可。
- 操作系统升级
在数据库升级之前应提前通报给 OGG,以便于确定复制软件是否支持最新版本。
如果需要升级 OGG 软件参考前面的升级步骤,如果不需要升级 OGG,则只需停止
OGG 进程进行升级,然后升级完毕重新启动即可。
- 数据库用户密码加密
- OGG 的 dirprm 目录下存放着所有参数文件,其中密码可以使用明文或者加 密方式保存,如果需要使用加密密码,请使用下列步骤:
GGSCI > encrypt password mypassword //生成密钥
23
ORACLE
No key specified, using default key..
Encrypted password: AACAAAAAAAAAAAKAPATACEHBIGQGCFZCCDIGAEMCQFFBZHVC
将参数文件中原来的明文行
userid ggs, password mypassword
改为密文
userid ggs, password AACAAAAAAAAAAAKAPATACEHBIGQGCFZCCDIGAEMCQFFBZHVC,
encryptkey default
然后重新启动进程即可
附录一 OGG 对数据类型和对的限制
1.OGG 对数据类型和对象的限制
1.1OGG 数据类型支持
- 支持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
24
ORACLE
URITYPE
UROWID
1.2OGG 特殊对象支持
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 插入数据有两种方式:
25
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 技术支持。
- 数据库和应用日常维护注意事项
4.1 Oracle 9i 中 redo parallelism 必须设置为 1
OGG基于log的复制方式,在oracle10g上可以将log_parallelism参数最大可以
设置到8,这个参数控制了并行产生REDO LOG的处理数量。但在oracle10g以下的版
本,OGG只支持该参数为1。请不要修改这个参数,否则会造成抽取数据不完整。
4.2 为表设置主键或者唯一索引
OGG使用主键和唯一索引在源和目标定位需要更新或者删除的数据,应用开发新
26
ORACLE
增表应当尽可能带有主键和唯一索引。
同时,增加主键也有利于提高目标端数据投递的速度,减小复制延迟和降低资源
消耗。
4.3 保留 3-7 天归档日志
OGG只复制已经提交的交易,如果不提交则不会复制到目标端。在停止复制并重
新启动时,需要找到以前没有提交交易开始的日志。
因此,为了保证OGG能够重新启动,请保留3-7天归档日志。
4.4 避免使用不写日志的操作
OGG 只复制日志中的交易,应当避免在应用和数据库维护中使用 Direct Path 等
不写日志的操作,这些操作无法复制,会导致两端数据不一致。 OGG 复制的限制
和约束。