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 节点同时出现异常,造成整个集群宕机,由此给您带来很大的麻烦,请您谅解. 受此次故障影响的站点有:博问,闪 ...
随机推荐
- 【win10主机】连接virtualbox上【32位winXP系统虚拟机】上启动的mysql
问题Q: 在virtualbox上启动winXP系统虚拟机后,启动含oa项目的tomcat,数据库服务也运行起来了,虚拟机上连接无误: 在上一篇<主机访问 虚拟机启动的项目>基础上,尝试连 ...
- 如何:从 bool? 安全地强制转换为 bool(C# 编程指南)
bool? 可以为 null 的类型可以包含三个不同的值:true.false 和 null.因此,bool? 类型不能用于条件语句,如 if.for 或 while.例如,此代码无法编译,并将报告编 ...
- pringboot pom文件引入本地jar包和对其打jar包
maven引入本地jar包需要在pom文件中天剑如下配置: <dependency> <groupId>com.baidu</groupId> <artifa ...
- vi 多行注释与取消
多行注释 1.在命令行模式下,按 Shift + v 进入 VISUAL LINE 模式 2.选择要注释内容 3.按下 Ctrl + Shift + v 锁定块(XShell中) 或 按下 Ctrl ...
- hibernate 报错com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException
解释:JavaBean的主键类型只能是int类型,因为在映射关系配置是自动增长的,String类型是不能自动增长的,所以会报错.
- 【原创】Linux Suspend流程分析
背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本: ...
- CSS文件引入link和@import 区别
1.(本质区别)link 属于 HTML 标签,而 @import 完全是 css 提供的一种导入 css 文件的规则. 2.文件加载时机有差别: 当一个页面被加载的时候,link 引用的 css 会 ...
- Jedis操作Redis--String类型
/** * String(字符串) * APPEND,BITCOUNT,BITOP,BITFIELD,DECR,DECRBY,GET,GETBIT,GETRANGE,GETSET,INCR,INCRB ...
- NN入门,手把手教你用Numpy手撕NN(2)
这是一篇包含较少数学推导的NN入门文章 上篇文章中简单介绍了如何手撕一个NN,但其中仍有可以改进的地方,将在这篇文章中进行完善. 误差反向传播 之前的NN计算梯度是利用数值微分法,虽容易实现,但是计算 ...
- 上海学生事务中心&新华路派出所的位置
上海学生事务中心: 地址:冠生园路401号 工作时间:9:00-17:00 电话:021-64829191 新华路派出所: 地址:新华路590弄21号 工作时间:周一至周六 9:00 ...