您的位置:首页 > 数据库 > Oracle

Oracle 如何提交手册Cluster Table事务

2015-09-13 09:41 543 查看
环境遇到ora-00600 4000错误,该目的是参与cluster table,什么我这里有以下简单的模拟。以供参考!
++++创建一个测试表

?

++++blockdump内容

?

大家能够看到。这跟普通的data block的dump内容是有所区别的。由于这里涉及到cluster table。

以下来模拟下手工提交cluster table的事务。

+++++模拟事务不提交

?
这里我们能够看到对于这个未提交的事务XID为:3.17.1212 前面我们已经知道

測试表中的数据分布在3个block中,这里我模拟的情况是删除第3条数据。且不提交。通过bbed来实现手工

提交这个未提交事务,注意:第3条数据是在第3个block中,即174 block。

+++++首先改动表的itl等信息

?
我们能够看到,不管怎么改动,这个block通过bbed进行检測都报错。这里不是由于改动的不正确,而是由于

还须要改动cluster 上的Index信息。通过treedump 我们能够确认index block为file 6 block 187.

+++++ dump Index block

?
+++++ dump 内容例如以下

?
能够看到,该index block中还存在3个index entry信息。我们须要将第3条信息给删掉,首先计算一下offset:

?

+++++利用bbed改动 index block

?

到这里。我们完毕了Index Block的改动。最后我们再来校验一下前面的data block,你会发现已经ok了。例如以下:

BBED> set file 2 block 174

FILE# 2

BLOCK# 174

BBED> verify

DBVERIFY – Verification starting

FILE = /oracle/oradata/roger/sysaux01.dbf

BLOCK = 174

DBVERIFY – Verification complete

Total Blocks Examined : 1

Total Blocks Processed (Data) : 0

Total Blocks Failing (Data) : 0

Total Blocks Processed (Index): 0

Total Blocks Failing (Index): 0

Total Blocks Empty : 1

Total Blocks Marked Corrupt : 0

Total Blocks Influx : 0

Message 531 not found; product=RDBMS; facility=BBED

BBED>

+++++ 最后来验证下数据

?
到目前为止。整个模拟测试结束,以供参考!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: