Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

316

积分

0

好友

0

主题
1#
发表于 2012-5-7 17:17:27 | 查看: 5195| 回复: 5
DB WIN 11.2.0.1
OGG WIN 11.1.1.1 110421.2040


DB 部分问题:
create table AAA
(
  HTDM      NUMBER(10) not null,
  BGRQ      DATE not null,
  SXRQ      DATE not null,
  YLL       NUMBER(10,8) not null,
  FXLL      NUMBER(10,8) not null,
  USERNAME  VARCHAR2(60) not null,
  FHNAME    VARCHAR2(60),
  BGCS      INTEGER not null,
  YWLSH     NUMBER(10),
  YHKE      NUMBER(10,2),
  BGALLINFO INTEGER
)

create unique index I_AAA on AAA (HTDM,BGCS)

update AAA set BGRQ = TO_DATE('04-5月 -12', 'DD-MON-RR') where t.htdm = 13023;

logminer  出来的SQL 却是 :
update AAA set "BGRQ" = TO_DATE('04-5月 -12', 'DD-MON-RR') where "BGRQ" = TO_DATE('03-5月 -12', 'DD-MON-RR') and ROWID = 'AAASkkAAHAAABCZABB';


有这样的BUG吗?


OGG 部分问题:

alter table AAA drop supplemental log group AAA_108068;                            //因为唯一索引列变更过,之前的唯一索引列为(HTDM,SXRQ)
alter table AAA add supplemental log group AAA_108068(HTDM,BGCS);

在源库上做完这一步,EXT 需要重启吗?

EXT 捕获 出的TRAIL,含有表AAA的两个唯一键列AAA(HTDM,BGCS),也含有修改列(BGRQ),但是唯一键列居然自动匹配为NULL
当前使用的参数为:
GETTRUNCATES
GETUPDATEBEFORES
FETCHOPTIONS FETCHPKUPDATECOLS

OGG.jpg

[ 本帖最后由 武汉-SSH 于 2012-5-7 17:28 编辑 ]
2#
发表于 2012-5-7 20:02:40
logminer  出来的SQL 却是 :
update AAA set "BGRQ" = TO_DATE('04-5月 -12', 'DD-MON-RR') where "BGRQ" = TO_DATE('03-5月 -12', 'DD-MON-RR') and ROWID = 'AAASkkAAHAAABCZABB';


logminer 发现rowid 是正常现象

建 Oracle Supplemental 补全日志介绍 http://www.oracledatabase12g.com ... BB%8B%E7%BB%8D.html

回复 只看该作者 道具 举报

3#
发表于 2012-5-7 20:24:52
问题2:

“在源库上做完这一步,EXT 需要重启吗?”

建议你先加入 另一组 supplemental log group ,再drop 不要的 supplemental log group:

SQL> create table AAA
  2  (
  3    HTDM      NUMBER(10) not null,
  4    BGRQ      DATE not null,
  5    SXRQ      DATE not null,
  6    YLL       NUMBER(10,8) not null,
  7    FXLL      NUMBER(10,8) not null,
  8    USERNAME  VARCHAR2(60) not null,
  9    FHNAME    VARCHAR2(60),
10    BGCS      INTEGER not null,
11    YWLSH     NUMBER(10),
12    YHKE      NUMBER(10,2),
13    BGALLINFO INTEGER
14  );

Table created.

SQL>
SQL> alter table AAA add supplemental log group AAA_108068(HTDM,SXRQ);

Table altered.

SQL> alter table AAA add supplemental log group AAA_108067(HTDM,BGCS);

Table altered.

SQL> alter table AAA drop supplemental log group AAA_108068;

Table altered.


或者使用ggsci add trandata 和 DELETE TRANDATA

回复 只看该作者 道具 举报

4#
发表于 2012-5-8 01:09:56

回复 2# 的帖子

我不是说ROWID,我的SQL是  update AAA set BGRQ = TO_DATE('04-5月 -12', 'DD-MON-RR') where t.htdm = 13023;

回复 只看该作者 道具 举报

5#
发表于 2012-5-8 01:12:33

回复 3# 的帖子

你这里的内容,与我要描述的一致,没有不同。

已经打算,明日搭建与客户一样的环境,看是否能再次重现。

回复 只看该作者 道具 举报

6#
发表于 2012-5-8 08:24:53
是正常的,因为根据你的条件,不一定能定位到唯一记录,所以oracle会自动加上rowid来定位.

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-11-15 13:31 , Processed in 0.057620 second(s), 24 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569