GoldenGate(4)_问题答疑与部署中的错误记录

来源:互联网 发布:拉尼娅王后知乎 编辑:程序博客网 时间:2024/06/05 21:04

1实验

1)修改不提交,如何同步?
&:不提交不同步。应该的,具体实现类似事务控制就好。
根据修改数据、提交数据、trail文件修改时间来看,是提交后才捕获。
2)表结构修改,如何同步?
&:同DDL同步。
3)存储过程、视图等对象修改,会否同步?
&:同DDL同步。
4)DLL同步
&:在远端建触发器,捕获DDL到GGS_MARKER表;
当做普通数据传递到目标rmttrail
如果可以执行,则插入目标的GGS_MARKER,并执行DDL
如下:目标端rmttrail收到了源端的DLL,但在本地无法执行,则不记录入GGS_MARKER表。如果在replicate配置了dllerror ignore,则也不在report记录。

2问题

1)数据库附加日志与表的trandata
&:
?为什么开启附加日志:正常的redo里是以rowid标识改变的数据行的。Ogg的同步则要以sql定位。为了能够通过sql定位,则需要把主键等定位信息保存到日志里。Eg:update操作为例,正常redo只保存rowid、新值。这个是无法传到到备机的。需要保存记录的主键(如果没主键,则会把全部字段作为定位标识。但实际也无法定位)。
?数据库附加日志与add trandata的关系:数据库附加日志是mini模式,信息不全。可以同步insert、delete,不能同步update。需要在表上再附加日志。
?验证是否开启附加日志:
数据库级:select t.SUPPLEMENTAL_LOG_DATA_MIN from v$database t –YES为开启
表级:select * from DBA_LOG_GROUPS;
–一般一个表有4条记录
–FIS采集库的表都有
2)Trail是特殊的对象?
&:是,需要用命令单独创建。
3)Update操作不能同步?
&:让你来同步,你需要什么前置条件呢?主键?
最开始,没有主键或唯一索引,update在目标端不能定位到记录。转换成的sql(无实际意义),
UPDATE “HF”.”A” x
SET x.”ITEMS” = :a3, x.”NAME” = :a4, x.”SCOCER” = :a5
WHERE x.”ITEMS” is NULL
AND x.”NAME” = :b1
AND x.”SCOCER” is NULL
AND ROWNUM = 1
需要:
1)对源表增加主键或唯一索引
2)在表上添加trandata
3)重启源端的抽取和投递进程。
4)Discard的数据怎么重新同步?

3过程故障

故障:ORA-04060: insufficient privileges to execute DBMS_STREAMS.SET_TAG

&:在原主采集服务器上,增加了replicate进程,但是启动失败。报错如下:
2017-10-09 17:10:37 ERROR OGG-00665 Oracle GoldenGate Delivery for Oracle, REP01.prm: OCI Error executing single row select (status = 4060-ORA-04060: insufficient privileges to execute DBMS_STREAMS.SET_TAG
ORA-06512: at “SYS.DBMS_STREAMS”, line 16
ORA-06512: at line 1), SQL

故障:ERROR OGG-00730 No minimum supplemental logging is enabled

&:数据库没开启【最小附加日志】模式。
开启:

alter database add supplemental log data;alter system switch logfile;

验证:

select name,t.SUPPLEMENTAL_LOG_DATA_MIN from v$database t;

然后还是报错OGG-00717,
2017-10-12 11:06:44 ERROR OGG-00717 Oracle GoldenGate Capture for Oracle, EXT01.prm: Found unsupported in-memory undo record in sequence 99, at RBA 6512656, with SCN 0.3376489 (3376489) … Minimum supplemental logging must be enabled to prevent data loss.
意思:在undo里发现没有附加日志的记录。应该是开启附加日志模式前在undo中的数据。
需要手工修改ext进程并重启。

Alter ext ext01,tranlog,begin now.

故障:在sci执行add trandata table_name时报错

具体如下:
2016-11-11 14:13:05? WARNING OGG-00706? Failed to add supplemental log group on table N1.A due to ORA-06550: line 1, column 7:
?PLS-00201: identifier ‘DBMS_CAPTURE_ADM’ must be declared
?ORA-06550: line 1, column 7: PL/SQL: Statement ignored SQL BEGIN DBMS_CAPTURE_ADM.PREPARE_TABLE_INSTANTIATION(table_name => ‘“N1”.”A”’, supplemental_logging => ‘none’); END;
解决方法:

grant execute on sys.DBMS_CAPTURE_ADM to goldengate;

故障:Extract进程不能停止

&:extract进程状态为running,但tag一直在增加,且数据没有实际同步。
Step1:通过普通stop命令无法停止 stop ext01,报超时无响应。
Step2:通过forcetop命令仍无法停止 send extract ext01,forcestop,同样报超时无响应。
Step3:手工杀死所有ogg进程:server、mgr、extract。
Step4:重新启动,报错OGG-00446。需要的redo被覆盖了。
Step5:忽略历史redo,重新从当前开始抽取。
Alter extract ext01,begin now。

原创粉丝点击