Oracle 中如何手工提交Cluster Table的事务
2014-07-02 20:16
363 查看
环境中遇到了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>
+++++ 最后来验证下数据
?
至此,整个模拟测试结束,供参考!
++++创建测试表
?
?
下面来模拟下手工提交cluster table的事务。
+++++模拟事务不提交
?
测试表中的数据分布在3个block中,这里我模拟的情况是删除第3条数据,且不提交,通过bbed来实现手工
提交这个未提交事务,注意:第3条数据是在第3个block中,即174 block。
+++++首先修改表的itl等信息
?
还需要修改cluster 上的Index信息。通过treedump 我们可以确认index block为file 6 block 187.
+++++ dump Index block
?
?
?
?
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>
+++++ 最后来验证下数据
?
相关文章推荐
- Oracle 如何提交手册Cluster Table事务
- Asp.net Oracle 事务出现奇怪的自动提交现象及解决办法
- SSH2框架--使用泛型DAO,JUnit测试时,如何使用事务,使用操作不真正的提交的数据库中
- Oracle(二) – 隐式的事务提交或回滚动作
- oracle事务处理 自动提交
- oracle 根据事务号 xid 如何找到对应的那个语句
- 如何在Windows 2000下手工将Oracle完全卸载
- Oracle事务的隐式提交
- Oracle 对未提交事务的查询
- oracle 提交事务 详细步骤入
- SQL Server 中的事务与事务隔离级别以及如何理解脏读, 未提交读,不可重复读和幻读产生的过程和原因
- oracle 中--怎么查看当前表空间在作什么操作?--查锁,死锁,当前执行时间长的Sql语句,没提交的事务,对象为哪些进程所用
- ORACLE事务提交
- oracle中存储过程如何控制提交和回滚.
- [Oracle] 分布式事务和两阶段提交(2PC)
- ORACLE中事务提交和会滚过程中异常发生的处理过程
- oracle 中--怎么查看当前表空间在作什么操作?--查锁,死锁,当前执行时间长的Sql语句,没提交的事务,对象为哪些进程所用
- oracle事务 行级锁 保存点 回滚 提交
- 事务槽及Oracle多种提交方式
- oracle链接SQLSERVER,事务语句的提交