ORA-08102异常重现及恢复
现象:
SQL> alter table t add primary key(id);
alter table t add primary key(id)
*
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-08102: index key not found, obj# 52, file 1, block 72661 (2)
重现异常:
SQL> SELECT OWNER#,NAME,CON# FROM CON$ WHERE NAME='_NEXT_CONSTRAINT';
OWNER# NAME CON#
---------- ------------------------------ ----------
0 _NEXT_CONSTRAINT 11222
SQL> set lines 200
SELECT OWNER#,NAME,CON#,
dbms_rowid.ROWID_RELATIVE_FNO(rowid) fno,
dbms_rowid.ROWID_BLOCK_NUMBER(rowid) bno,
dbms_rowid.ROWID_ROW_NUMBER(rowid) rno FROM CON$ WHERE NAME='_NEXT_CONSTRAINT';
OWNER# NAME CON# FNO BNO RNO
---------- ------------------------------ ---------- ---------- ---------- ----------
0 _NEXT_CONSTRAINT 11222 1 289 12
[oracle@cqfrog bbed]$ bbed parfile=par.txt
BBED> set file 1 block 289
FILE# 1
BLOCK# 289
- BBED> p *kdbr[12]
rowdata[0]
----------
ub1 rowdata[0] @1207 0x2c
- BBED> x /rccnn
rowdata[0] @1207
----------
flag@1207: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@1208: 0x02
cols@1209: 4
col 0[1] @1210: .
col 1[16] @1212: _NEXT_CONSTRAINT
col 2[4] @1229: 11222
col 3[1] @1234: 0
BBED> dump /v offset 1229 count 16
File: /u01/app/oracle/oradata/orcl/system01.dbf (1)
Block: 289 Offsets: 1229 to 1244 Dba:0x00400121
-------------------------------------------------------
04c3020d 1701802c 00040180 105f4e45 l .......,....._NE
<16 bytes per line>
SQL> select dump(11222, 16) from dual;
DUMP(11222,16)
----------------------
Typ=2 Len=4: c3,2,d,17
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
BBED> dump /v offset +4
File: /u01/app/oracle/oradata/orcl/system01.dbf (1)
Block: 289 Offsets: 1233 to 1248 Dba:0x00400121
-------------------------------------------------------
1701802c 00040180 105f4e45 58545f43 l ...,....._NEXT_C
<16 bytes per line>
BBED> modify /x 1901802c
File: /u01/app/oracle/oradata/orcl/system01.dbf (1)
Block: 289 Offsets: 1233 to 1248 Dba:0x00400121
------------------------------------------------------------------------
1901802c 00040180 105f4e45 58545f43
<32 bytes per line>
BBED> sum apply
Check value for File 1, Block 289:
current = 0x7fca, required = 0x7fca
BBED> dump /v offset 1233
File: /u01/app/oracle/oradata/orcl/system01.dbf (1)
Block: 289 Offsets: 1233 to 1248 Dba:0x00400121
-------------------------------------------------------
1901802c 00040180 105f4e45 58545f43 l ...,....._NEXT_C
<16 bytes per line>
SQL> startup
ORACLE instance started.
Total System Global Area 835104768 bytes
Fixed Size 2217952 bytes
Variable Size 549455904 bytes
Database Buffers 276824064 bytes
Redo Buffers 6606848 bytes
Database mounted.
Database opened.
SQL> select /*+ FULL(t1) */ name,con# from con$ t1 where name='_NEXT_CONSTRAINT';
NAME CON#
------------------------------ ----------
_NEXT_CONSTRAINT 11224
SQL> select /*+ index(t1 I_CON2) */ name,con# from con$ t1 where name='_NEXT_CONSTRAINT';
NAME CON#
------------------------------ ----------
_NEXT_CONSTRAINT 11222
SQL> create table t as select * from test where rownum<10;
Table created.
SQL> desc t;
Name Null? Type
----------------------------------------- -------- ----------------------------
ID NUMBER
NAME VARCHAR2(128
SQL> alter table t add primary key(id);
alter table t add primary key(id)
*
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-08102: index key not found, obj# 52, file 1, block 72661 (2)
修复ORA-08102异常:
SQL> alter table t add primary key(id);
alter table t add primary key(id)
*
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-08102: index key not found, obj# 52, file 1, block 72661 (2)
SQL> select /*+ FULL(t1) */ name,con# from con$ t1 where name='_NEXT_CONSTRAINT';
NAME CON#
------------------------------ ----------
_NEXT_CONSTRAINT 11224
SQL> select /*+ index(t1 I_CON2) */ name,con# from con$ t1 where name='_NEXT_CONSTRAINT';
NAME CON#
------------------------------ ----------
_NEXT_CONSTRAINT 11222
SQL> alter system dump datafile 1 block 72661;
System altered.
SQL> select * from v$diag_info;
1 Default Trace File /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_6051.trc

SQL> select UTL_RAW.CAST_TO_NUMBER(replace('c3 02 0d 19',' ','')) from dual;
UTL_RAW.CAST_TO_NUMBER(REPLACE('C3020D19','',''))
-------------------------------------------------
11224
row#198[3566] flag: ---D--, lock: 2, len=13, data:(6): 00 41 38 6c 00 ad
col 0; len 4; (4): c3 02 0d 15
row#199[3540] flag: ---D--, lock: 2, len=13, data:(6): 00 41 38 6c 00 af
col 0; len 4; (4): c3 02 0d 16
row#200[3553] flag: ------, lock: 0, len=13, data:(6): 00 40 01 21 00 0c
col 0; len 4; (4): c3 02 0d 17
----- end of leaf block dump -----
End dump data blocks tsn: 0 file#: 1 minblk 72661 maxblk 72661
SQL> select UTL_RAW.CAST_TO_NUMBER(replace('c3 02 0d 17',' ','')) from dual;
UTL_RAW.CAST_TO_NUMBER(REPLACE('C3020D17','',''))
-------------------------------------------------
11222

BBED> set file 1 block 72661;
FILE# 1
BLOCK# 72661
BBED> dump offset 3677 count 16
File: /u01/app/oracle/oradata/orcl/system01.dbf (1)
Block: 72661 Offsets: 3677 to 3692 Dba:0x00411bd5
------------------------------------------------------------------------
04c3020d 17010200 41386c00 ad04c302
BBED> modify /x 19 offset 3681
File: /u01/app/oracle/oradata/orcl/system01.dbf (1)
Block: 72661 Offsets: 3681 to 3696 Dba:0x00411bd5
------------------------------------------------------------------------
19010200 41386c00 ad04c302 0d150100
<32 bytes per line>
BBED> sum apply
Check value for File 1, Block 72661:
current = 0x1fa3, required = 0x1fa3
BBED> dump offset 3677 count 16
File: /u01/app/oracle/oradata/orcl/system01.dbf (1)
Block: 72661 Offsets: 3677 to 3692 Dba:0x00411bd5
------------------------------------------------------------------------
04c3020d 19010200 41386c00 ad04c302
<32 bytes per line>
SQL> select /*+ FULL(t1) */ name,con# from con$ t1 where name='_NEXT_CONSTRAINT';
NAME CON#
------------------------------ ----------
_NEXT_CONSTRAINT 11224
SQL> select /*+ index(t1 I_CON2) */ name,con# from con$ t1 where name='_NEXT_CONSTRAINT';
NAME CON#
------------------------------ ----------
_NEXT_CONSTRAINT 11224
SQL> alter table t add primary key(id);
Table altered.
ORA-08102异常重现及恢复的更多相关文章
- Go语言 异常panic和恢复recover用法
Go语言 异常panic和恢复recover用法 背景:Go语言追求简洁优雅,所以,Go语言不支持传统的 try…catch…finally 这种异常,因为Go语言的设计者们认为,将异常与控制结构混在 ...
- mysql主从同步异常原因及恢复
mysql主从同步异常原因及恢复 前言 mysql数据库做主从复制,不仅可以为数据库的数据做实时备份,保证数据的完整性,还能做为读写分离,提升数据库的整体性能.但是,mysql主从复制经常会因为某些原 ...
- 【3】JVM-OutOfMemory异常重现
JVM中常见的OOM,那么如何通过自己编写代码产生这些OOM异常呢?通过写代码重现异常,是为了避免在工作中写出有OOM BUG的代码.之前虽然看过相关文章,但是没自己写过这些代码,这次在编写的实际过程 ...
- 通过NBU还原数据库提示LINKING异常,无法恢复数据
错误提示: 解决方法:
- Java中的受检异常
Java中的受检异常 Java提供了三种异常类型,受检异常(checked exception).运行时异常(runtime exception).错误(error).那么这受检异常在实际开发中又有什 ...
- SQL Server数据库的三种恢复模式:简单恢复模式、完整恢复模式和大容量日志恢复模式(转载)
SQL Server数据库有三种恢复模式:简单恢复模式.完整恢复模式和大容量日志恢复模式: 1.Simple 简单恢复模式, Simple模式的旧称叫”Checkpoint with truncate ...
- [Effective Java]第九章 异常
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- Win32环境下的程序崩溃异常定位
1 案例描述 作为Windows程序员,平时最担心见到的事情可能就是程序发生了崩溃(异常),这时Windows会提示该程序执行了非法操作,即将关闭.请与您的供应商联系.呵呵,这句微软的“名 ...
- 云计算之路-阿里云上:3个manager节点异常造成 docker swarm 集群宕机
今天 11:29 - 11:39 左右,docker swarm 集群 3 个 manager 节点同时出现异常,造成整个集群宕机,由此给您带来很大的麻烦,请您谅解. 受此次故障影响的站点有:博问,闪 ...
随机推荐
- 逻辑回归(Logistic Regression)详解,公式推导及代码实现
逻辑回归(Logistic Regression) 什么是逻辑回归: 逻辑回归(Logistic Regression)是一种基于概率的模式识别算法,虽然名字中带"回归",但实际上 ...
- node.js的Promise对象的使用
Promise对象是干嘛用的? 将异步操作以同步操作的流程表达出来 一.Promise对象的定义 let flag = true; const hello = new Promise(function ...
- 《NVM-Express-1_4-2019.06.10-Ratified》学习笔记(8)
8 Feature(特性) 8.1 固件升级过程 固件升级通过重启激活的过程是: 1. 主机发一个Firmware Image Download命令,下载固件映像版本到controller.可能有多个 ...
- net core WebApi——文件分片下载
目录 前言 开始 测试 小结 @ 前言 上一篇net core WebApi--文件分片上传与跨域请求处理介绍完文件的上传操作,本来是打算紧接着写文件下载,中间让形形色色的事给耽误的,今天还是抽个空整 ...
- WPF中查看PDF文件 - 基于开源的MoonPdfPanel (无需安装任何PDF阅读器)问题汇总
致敬Yang-Fei—有一个简单的用法示例: http://www.cnblogs.com/yang-fei/p/4885570.html. 写MoonPdfPanel的哥们关于这个开源软件的实现介绍 ...
- Java多线程之线程的互斥处理
Java多线程之线程的互斥处理 一.前言 多线程程序中的各个线程都是自由运行的,所以它们有时就会同时操作同一个实例.这在某些情况下会引发问题.例如,从银行账户取款时,余额确认部分的代码应该是像下面这样 ...
- (数据科学学习手札68)pandas中的categorical类型及应用
一.简介 categorical是pandas中对应分类变量的一种数据类型,与R中的因子型变量比较相似,例如性别.血型等等用于表征类别的变量都可以用其来表示,本文就将针对categorical的相关内 ...
- Gym 100851 题解
A: Adjustment Office 题意:在一个n*n的矩阵,每个格子的的价值为 (x+y), 现在有操作取一行的值,或者一列的值之后输出这个和, 并且把这些格子上的值归0. 题解:模拟, 分成 ...
- hdu 2767 Proving Equivalences(tarjan缩点)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2767 题意:问最少加多少边可以让所有点都相互连通. 题解:如果强连通分量就1个直接输出0,否者输出入度 ...
- 如何将 JavaScript 代码添加到网页中,以及 <script> 标签的属性
Hello, world! 本教程的这一部分内容是关于 JavaScript 语言本身的. 但是,我们需要一个工作环境来运行我们的脚本,由于本教程是在线的,所以浏览器是一个不错的选择.我们会尽可能少地 ...