标签云
asm恢复 bbed bootstrap$ dul In Memory kcbzib_kcrsds_1 kccpb_sanity_check_2 kfed MySQL恢复 ORA-00312 ORA-00607 ORA-00704 ORA-01110 ORA-01555 ORA-01578 ORA-08103 ORA-600 2131 ORA-600 2662 ORA-600 2663 ORA-600 3020 ORA-600 4000 ORA-600 4137 ORA-600 4193 ORA-600 4194 ORA-600 16703 ORA-600 kcbzib_kcrsds_1 ORA-600 KCLCHKBLK_4 ORA-15042 ORA-15196 ORACLE 12C oracle dul ORACLE PATCH Oracle Recovery Tools oracle加密恢复 oracle勒索 oracle勒索恢复 oracle异常恢复 Oracle 恢复 ORACLE恢复 ORACLE数据库恢复 oracle 比特币 OSD-04016 YOUR FILES ARE ENCRYPTED 勒索恢复 比特币加密文章分类
- Others (2)
- 中间件 (2)
- WebLogic (2)
- 操作系统 (102)
- 数据库 (1,682)
- DB2 (22)
- MySQL (73)
- Oracle (1,544)
- Data Guard (52)
- EXADATA (8)
- GoldenGate (24)
- ORA-xxxxx (159)
- ORACLE 12C (72)
- ORACLE 18C (6)
- ORACLE 19C (15)
- ORACLE 21C (3)
- Oracle 23ai (7)
- Oracle ASM (67)
- Oracle Bug (8)
- Oracle RAC (53)
- Oracle 安全 (6)
- Oracle 开发 (28)
- Oracle 监听 (28)
- Oracle备份恢复 (565)
- Oracle安装升级 (92)
- Oracle性能优化 (62)
- 专题索引 (5)
- 勒索恢复 (79)
- PostgreSQL (18)
- PostgreSQL恢复 (6)
- SQL Server (27)
- SQL Server恢复 (8)
- TimesTen (7)
- 达梦数据库 (2)
- 生活娱乐 (2)
- 至理名言 (11)
- 虚拟化 (2)
- VMware (2)
- 软件开发 (37)
- Asp.Net (9)
- JavaScript (12)
- PHP (2)
- 小工具 (20)
-
最近发表
- 断电引起的ORA-08102: 未找到索引关键字, 对象号 39故障处理
- ORA-00227: corrupt block detected in control file
- 手工删除19c rac
- 解决oracle数据文件路径有回车故障
- .wstop扩展名勒索数据库恢复
- Oracle Recovery Tools工具一键解决ORA-00376 ORA-01110故障(文件offline)
- OGG-02771 Input trail file format RELEASE 19.1 is different from previous trail file form at RELEASE 11.2.
- OGG-02246 Source redo compatibility level 19.0.0 requires trail FORMAT 12.2 or higher
- GoldenGate 19安装和打patch
- dd破坏asm磁盘头恢复
- 删除asmlib磁盘导致磁盘组故障恢复
- Kylin Linux 安装19c
- ORA-600 krse_arc_complete.4
- Oracle 19c 202410补丁(RUs+OJVM)
- ntfs MFT损坏(ntfs文件系统故障)导致oracle异常恢复
- .mkp扩展名oracle数据文件加密恢复
- 清空redo,导致ORA-27048: skgfifi: file header information is invalid
- A_H_README_TO_RECOVER勒索恢复
- 通过alert日志分析客户自行对一个数据库恢复的来龙去脉和点评
- ORA-12514: TNS: 监听进程不能解析在连接描述符中给出的SERVICE_NAME
标签归档:ORA-08103
数据库打开遭遇ORA-08103故障处理
数据库启动报ORA-08103
朋友反馈,客户的一套sap历史数据系统,无备份,由于硬件故障导致,数据库启动报ORA-08103: object no longer exists错误,无法正常启动
SMON: enabling tx recovery Mon Oct 12 09:51:56 2020 Database Characterset is UTF8 Opening with internal Resource Manager plan where NUMA PG = 1, CPUs = 32 Starting background process QMNC QMNC started with pid=36, OS id=14942376 Mon Oct 12 09:51:58 2020 Errors in file /oracle/XFF/saptrace/usertrace/xff_ora_15204508.trc: ORA-00604: error occurred at recursive SQL level 2 ORA-08103: object no longer exists Mon Oct 12 09:51:58 2020 ORA-604 signalled during: ALTER DATABASE OPEN... Mon Oct 12 09:51:58 2020 Errors in file /oracle/XFF/saptrace/background/xff_smon_8978452.trc: ORA-08103: object no longer exists Mon Oct 12 09:52:50 2020 Errors in file /oracle/XFF/saptrace/background/xff_reco_8781998.trc: ORA-08103: object no longer exists Mon Oct 12 09:52:50 2020 RECO: terminating instance due to error 8103 Instance terminated by RECO, pid = 8781998
由于客户这个库遭遇过硬件,不少文件中都有一些空块(zero block)
10046分析错误信息
PARSING IN CURSOR #14 len=210 dep=2 uid=0 oct=3 lid=0 tim=191031051961382 hv=864012087 ad='cabb8a10' select /*+ rule */ bucket_cnt, row_cnt, cache_cnt, null_cnt, timestamp#, sample_size, minimum, maximum, distcnt, lowval, hival, density, col#, spare1, spare2, avgcln from hist_head$ where obj#=:1 and intcol#=:2 END OF STMT PARSE #14:c=0,e=21,p=0,cr=0,cu=0,mis=0,r=0,dep=2,og=3,tim=191031051961380 BINDS #14: kkscoacd Bind#0 oacdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00 oacflg=08 fl2=0001 frm=00 csi=00 siz=24 off=0 kxsbbbfp=110919308 bln=22 avl=02 flg=05 value=96 Bind#1 oacdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00 oacflg=08 fl2=0001 frm=00 csi=00 siz=24 off=0 kxsbbbfp=1109192d8 bln=24 avl=02 flg=05 value=1 EXEC #14:c=0,e=128,p=0,cr=0,cu=0,mis=0,r=0,dep=2,og=3,tim=191031051961618 FETCH #14:c=0,e=40,p=1,cr=1,cu=0,mis=0,r=0,dep=2,og=3,tim=191031051961676 ORA-00604: error occurred at recursive SQL level 2 ORA-08103: object no longer exists
比较明显是由于hist_head$异常导致,而且报ORA-08103错误和dbv检查system文件有一些空块错误匹配。这个错误比较简单,有几种处理方法:
1. 直接把空块标记为坏块,然后启动库
2. 在数据库启动过程跳过该sql,启动数据库,然后对这个表进行处理
该库进行恢复之后,正常打开数据库
由于其他文件还有不少空块,在数据库进行导出的时候,还有部分表报ORA-08103和ORA-01555[含lob对象表导出]错误,对其进行特殊导出处理,实现该sap系统业务数据的整体恢复.
系统故障oracle数据库恢复
由于系统故障,导致操作系统进入,客户通过其他方式进入系统拷贝出来数据文件,redo,ctl等文件,安装版本相同的数据库,修改相关路径,启动数据库,但是启动报错,让我们给予技术支持.数据库open报ORA-600 2662错误
SQL> alter database open resetlogs; alter database open resetlogs * ERROR at line 1: ORA-00603: ORACLE server session terminated by fatal error ORA-00600: internal error code, arguments: [2662], [2], [2313731576], [2], [2313735660], [12583040], [], [], [], [], [], [] ORA-00600: internal error code, arguments: [2662], [2], [2313731575], [2], [2313735660], [12583040], [], [], [], [], [], [] ORA-01092: ORACLE instance terminated. Disconnection forced ORA-00600: internal error code, arguments: [2662], [2], [2313731573], [2], [2313735660], [12583040], [], [], [], [], [], [] Process ID: 22446 Session ID: 577 Serial number: 1
alert日志报错
Use ADRCI or Support Workbench to package the incident. See Note 411.1 at My Oracle Support for error and packaging details. Errors in file /home/oracle/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_22446.trc: ORA-00600: internal error code, arguments:[2662],[2],[2313731573],[2],[2313735660],[12583040],[],[],[],[],[],[] Errors in file /home/oracle/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_22446.trc: ORA-00600: internal error code, arguments:[2662],[2],[2313731573],[2],[2313735660],[12583040],[],[],[],[],[],[] Error 600 happened during db open, shutting down database USER (ospid: 22446): terminating the instance due to error 600
这个错误比较常见,特别是使用了_allow_resetlogs_corruption屏蔽一致性强制拉库的时候.解决该问题比较简单,修改数据库scn,然后open数据库成功,参考部分案例_allow_resetlogs_corruption
[oracle@localhost ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.3.0 Production on Sat Jun 20 08:31:55 2020 Copyright (c) 1982, 2011, Oracle. All rights reserved. Connected to an idle instance. SQL> startup mount pfile='/tmp/pfile'; ORACLE instance started. Total System Global Area 4275781632 bytes Fixed Size 2235208 bytes Variable Size 2902459576 bytes Database Buffers 1325400064 bytes Redo Buffers 45686784 bytes Database mounted. SQL> alter database open; Database altered.
尝试导出数据
[oracle@localhost ~]$ tail -f nohup.out . exporting foreign function library names for user XIFENFEI . exporting PUBLIC type synonyms . exporting private type synonyms . exporting object type definitions for user XIFENFEI About to export LIOVBJ2017's objects ... . exporting database links . exporting sequence numbers . exporting cluster definitions . about to export LIOVBJ2017's tables via Conventional Path ... . . exporting table ABCD 1 rows exported . . exporting table TB_D_RECORD EXP-00008: ORACLE error 1578 encountered ORA-01578: ORACLE data block corrupted (file # 1, block # 290344) ORA-01110: data file 1: '/home/oracle/app/oracle/oradata/orcl/system01.dbf' . . exporting table TB_DRIVER EXP-00008: ORACLE error 1578 encountered ORA-01578: ORACLE data block corrupted (file # 1, block # 290344) ORA-01110: data file 1: '/home/oracle/app/oracle/oradata/orcl/system01.dbf' . . exporting table TB_XFF EXP-00008: ORACLE error 1578 encountered ORA-01578: ORACLE data block corrupted (file # 1, block # 290344) ORA-01110: data file 1: '/home/oracle/app/oracle/oradata/orcl/system01.dbf' . . exporting table TB_XFF_TM_REL EXP-00008: ORACLE error 1578 encountered ORA-01578: ORACLE data block corrupted (file # 1, block # 290344) ORA-01110: data file 1: '/home/oracle/app/oracle/oradata/orcl/system01.dbf' . . exporting table TB_LOCATION
由于file # 1, block # 290344坏块导致数据无法导出,通过dbv检查数据文件
[oracle@localhost trace]$ dbv file=/home/oracle/app/oracle/oradata/orcl/system01.dbf DBVERIFY: Release 11.2.0.3.0 - Production on Sat Jun 20 08:43:49 2020 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. DBVERIFY - Verification starting : FILE = /home/oracle/app/oracle/oradata/orcl/system01.dbf Page 290344 is influx - most likely media corrupt Corrupt block relative dba: 0x00446e28 (file 1, block 290344) Fractured block found during dbv: Data in bad block: type: 6 format: 2 rdba: 0x00446e28 last change scn: 0x0002.89e2b718 seq: 0x1 flg: 0x06 spare1: 0x0 spare2: 0x0 spare3: 0x0 consistency value in tail: 0x61980601 check value in block header: 0xe118 computed block checksum: 0xd680 DBVERIFY - Verification complete Total Pages Examined : 298240 Total Pages Processed (Data) : 257035 Total Pages Failing (Data) : 0 Total Pages Processed (Index): 13457 Total Pages Failing (Index): 0 Total Pages Processed (Other): 3598 Total Pages Processed (Seg) : 1 Total Pages Failing (Seg) : 0 Total Pages Empty : 24149 Total Pages Marked Corrupt : 1 Total Pages Influx : 1 Total Pages Encrypted : 0 Highest block SCN : 3221247831 (2.3221247831)
确认只有一个坏块,尝试通过bbed进行坏块修复
BBED> set blocksize 8192 BLOCKSIZE 8192 BBED> set block 290344 BLOCK# 290344 BBED> map File: /home/oracle/app/oracle/oradata/orcl/system01.dbf (0) Block: 290344 Dba:0x00000000 ------------------------------------------------------------ KTB Data Block (Index Leaf) struct kcbh, 20 bytes @0 struct ktbbh, 72 bytes @20 struct kdxle, 32 bytes @92 sb2 kd_off[231] @124 ub1 freespace[3026] @586 ub1 rowdata[4508] @3612 ub4 tailchk @8188 BBED> verify DBVERIFY - Verification starting FILE = /home/oracle/app/oracle/oradata/orcl/system01.dbf BLOCK = 290344 Block 290344 is corrupt Corrupt block relative dba: 0x00446e28 (file 0, block 290344) Fractured block found during verification Data in bad block: type: 6 format: 2 rdba: 0x00446e28 last change scn: 0x0002.89e2b718 seq: 0x1 flg: 0x06 spare1: 0x0 spare2: 0x0 spare3: 0x0 consistency value in tail: 0x61980601 check value in block header: 0xe118 computed block checksum: 0xd680 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 : 0 Total Blocks Marked Corrupt : 1 Total Blocks Influx : 2 Message 531 not found; product=RDBMS; facility=BBED BBED> set mode edit MODE Edit BBED> p kcbh struct kcbh, 20 bytes @0 ub1 type_kcbh @0 0x06 ub1 frmt_kcbh @1 0xa2 ub1 spare1_kcbh @2 0x00 ub1 spare2_kcbh @3 0x00 ub4 rdba_kcbh @4 0x00446e28 ub4 bas_kcbh @8 0x89e2b718 ub2 wrp_kcbh @12 0x0002 ub1 seq_kcbh @14 0x01 ub1 flg_kcbh @15 0x06 (KCBHFDLC, KCBHFCKV) ub2 chkval_kcbh @16 0xe118 ub2 spare3_kcbh @18 0x0000 BBED> p tailchk ub4 tailchk @8188 0x61980601 BBED> d /v File: /home/oracle/app/oracle/oradata/orcl/system01.dbf (0) Block: 290344 Offsets: 8188 to 8191 Dba:0x00000000 ------------------------------------------------------- 01069861 l ...a <16 bytes per line> BBED> m /x 010618b7 File: /home/oracle/app/oracle/oradata/orcl/system01.dbf (0) Block: 290344 Offsets: 8188 to 8191 Dba:0x00000000 ------------------------------------------------------------------------ 010618b7 <32 bytes per line> BBED> sum apply Check value for File 0, Block 290344: current = 0xe118, required = 0xe118 BBED> verify DBVERIFY - Verification starting FILE = /home/oracle/app/oracle/oradata/orcl/system01.dbf BLOCK = 290344 DBVERIFY - Verification complete Total Blocks Examined : 1 Total Blocks Processed (Data) : 0 Total Blocks Failing (Data) : 0 Total Blocks Processed (Index): 1 Total Blocks Failing (Index): 0 Total Blocks Empty : 0 Total Blocks Marked Corrupt : 0 Total Blocks Influx : 0 Message 531 not found; product=RDBMS; facility=BBED
继续尝试导出数据,遭遇ORA-08103,参考相关文章:
模拟普通ORA-08103并解决
模拟极端ORA-08103并解决
数据库启动ORA-08103故障恢复
EXP-00056: ORACLE error 8103 encountered ORA-08103: object no longer exists
通过对其进行处理,恢复该记录之外的所有记录,客户创建新库导入数据,数据库恢复基本完成
bootstrap$核心index(I_OBJ1,I_USER1,I_FILE#_BLOCK#,I_IND1,I_TS#,I_CDEF1等)异常恢复—ORA-00701错误解决
在Oracle使用的过程中,经常遭遇一些核心index出现异常,导致数据库无法正常使用,特别是在数据库open的情况下,因为出现这些bootstrap$中的部分index是无法通过设置event38003进行重建,从而导致数据库无法正常使用,最常见异常index 有:I_ICOL1, I_TS1, I_CDEF1, I_CDEF2, I_CDEF3, I_CDEF4, I_PROXY_DATA$, I_IND1, I_TS#, I_UNDO1, I_UNDO2, I_COBJ#, I_USER1, I_USER2, I_CON1, I_CON2, I_FILE1, I_FILE2, I_FILE#_BLOCK#, I_USER#, I_OBJ#, I_PROXY_ROLE_DATA$_1, I_PROXY_ROLE_DATA$_2, I_CCOL1, I_CCOL2, I_TAB1, I_COL1, I_COL2, I_COL3, I_OBJ1, I_OBJ2, I_OBJ3, I_OBJ4, I_OBJ5
重建的index异常报错有:ORA-00701,ORA-01410,ORA-08102,ORA-08103,ORA-01578,ORA-01499,ORA-00600等各类错误
因为处理细节复杂,无法一一描述出来.这里假设Oracle数据库一个非常核心的表OBJ$中的I_OBJ1异常,现在准备重建它,大概步骤如下:
1. 假设异常index信息(I_OBJ1)
SQL> alter index sys.i_obj1 rebuild; alter index sys.i_obj1 rebuild * ERROR at line 1: ORA-00701: object necessary for warmstarting database cannot be altered SQL> SELECT SQL_TEXT FROM BOOTSTRAP$ WHERE SQL_TEXT LIKE '%obj%'; SQL_TEXT -------------------------------------------------------------------------------- CREATE UNIQUE INDEX I_OBJ1 ON OBJ$(OBJ#,OWNER#,TYPE#) PCTFREE 10 INITRANS 2 MAXT RANS 255 STORAGE ( INITIAL 64K NEXT 1024K MINEXTENTS 1 MAXEXTENTS 2147483645 PC TINCREASE 0 OBJNO 36 EXTENTS (FILE 1 BLOCK 336))
2. 创建获取异常index所属表
SQL> select table_name from dba_indexes where owner='SYS' AND INDEX_NAME='I_OBJ1'; TABLE_NAME -------------------------------------------------------------------------------- OBJ$
3. 获取obj$ ddl 语句
SQL> set long 10000 SQL> set pages 1000 SQL> SELECT DBMS_METADATA.GET_DDL('TABLE','OBJ$','SYS') FROM DUAL; DBMS_METADATA.GET_DDL('TABLE','OBJ$','SYS') -------------------------------------------------------------------------------- CREATE TABLE "SYS"."OBJ$" ( "OBJ#" NUMBER NOT NULL ENABLE, "DATAOBJ#" NUMBER, "OWNER#" NUMBER NOT NULL ENABLE, "NAME" VARCHAR2(128) NOT NULL ENABLE, "NAMESPACE" NUMBER NOT NULL ENABLE, "SUBNAME" VARCHAR2(128), "TYPE#" NUMBER NOT NULL ENABLE, "CTIME" DATE NOT NULL ENABLE, "MTIME" DATE NOT NULL ENABLE, "STIME" DATE NOT NULL ENABLE, "STATUS" NUMBER NOT NULL ENABLE, "REMOTEOWNER" VARCHAR2(128), "LINKNAME" VARCHAR2(128), "FLAGS" NUMBER, "OID$" RAW(16), "SPARE1" NUMBER, "SPARE2" NUMBER, "SPARE3" NUMBER, "SPARE4" VARCHAR2(1000), "SPARE5" VARCHAR2(1000), "SPARE6" DATE, "SIGNATURE" RAW(16), "SPARE7" NUMBER, "SPARE8" NUMBER, "SPARE9" NUMBER ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 16384 NEXT 106496 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "SYSTEM"
4. 获取obj$相关index 语句
SQL> SELECT DBMS_METADATA.GET_DDL('INDEX',INDEX_NAME,'SYS') FROM dba_indexes where owner='SYS' AND TABLE_NAME='OBJ$'; DBMS_METADATA.GET_DDL('INDEX',INDEX_NAME,'SYS') -------------------------------------------------------------------------------- CREATE UNIQUE INDEX "SYS"."I_OBJ5" ON "SYS"."OBJ$" ("SPARE3", "NAME", "NAMESPA CE", "TYPE#", "OWNER#", "REMOTEOWNER", "LINKNAME", "SUBNAME", "OBJ#") PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "SYSTEM" CREATE INDEX "SYS"."I_OBJ4" ON "SYS"."OBJ$" ("DATAOBJ#", "TYPE#", "OWNER#") PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "SYSTEM" CREATE INDEX "SYS"."I_OBJ3" ON "SYS"."OBJ$" ("OID$") PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "SYSTEM" CREATE UNIQUE INDEX "SYS"."I_OBJ2" ON "SYS"."OBJ$" ("OWNER#", "NAME", "NAMESPA CE", "REMOTEOWNER", "LINKNAME", "SUBNAME", "TYPE#", "SPARE3", "OBJ#") PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 16384 NEXT 106496 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "SYSTEM" CREATE UNIQUE INDEX "SYS"."I_OBJ1" ON "SYS"."OBJ$" ("OBJ#", "OWNER#", "TYPE#") PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "SYSTEM"
5. 创建obj$img表和相关index
SQL> CREATE TABLE "SYS"."OBJ$IMG" 2 ( "OBJ#" NUMBER NOT NULL ENABLE, 3 "DATAOBJ#" NUMBER, 4 "OWNER#" NUMBER NOT NULL ENABLE, 5 "NAME" VARCHAR2(128) NOT NULL ENABLE, 6 "NAMESPACE" NUMBER NOT NULL ENABLE, 7 "SUBNAME" VARCHAR2(128), 8 "TYPE#" NUMBER NOT NULL ENABLE, 9 "CTIME" DATE NOT NULL ENABLE, 10 "MTIME" DATE NOT NULL ENABLE, 11 "STIME" DATE NOT NULL ENABLE, 12 "STATUS" NUMBER NOT NULL ENABLE, 13 "REMOTEOWNER" VARCHAR2(128), 14 "LINKNAME" VARCHAR2(128), 15 "FLAGS" NUMBER, 16 "OID$" RAW(16), 17 "SPARE1" NUMBER, 18 "SPARE2" NUMBER, 19 "SPARE3" NUMBER, 20 "SPARE4" VARCHAR2(1000), 21 "SPARE5" VARCHAR2(1000), 22 "SPARE6" DATE, 23 "SIGNATURE" RAW(16), 24 "SPARE7" NUMBER, 25 "SPARE8" NUMBER, 26 "SPARE9" NUMBER 27 ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 28 NOCOMPRESS LOGGING 29 STORAGE(INITIAL 16384 NEXT 106496 MINEXTENTS 1 MAXEXTENTS 2147483645 30 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 31 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) 32 TABLESPACE "SYSTEM" 33 ; Table created. SQL> SQL> CREATE UNIQUE INDEX "SYS"."I_OBJ_5IMG" ON "SYS"."OBJ$IMG" ("SPARE3", "NAME", "NAMESPACE", "TYPE#", "OWNER#", "REMOTEOWNER", "LINKNAME", "SUBNAME", "OBJ#") 2 PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 3 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 4 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 5 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) 6 TABLESPACE "SYSTEM"; Index created. SQL> CREATE INDEX "SYS"."I_OBJ4IMG" ON "SYS"."OBJ$IMG" ("DATAOBJ#", "TYPE#", "OWNER#") 2 PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 3 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 4 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 5 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) 6 TABLESPACE "SYSTEM"; Index created. SQL> CREATE INDEX "SYS"."I_OBJ3IMG" ON "SYS"."OBJ$IMG" ("OID$") 2 PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 3 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 4 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 5 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) 6 TABLESPACE "SYSTEM"; Index created. SQL> CREATE UNIQUE INDEX "SYS"."I_OBJ2IMG" ON "SYS"."OBJ$IMG" ("OWNER#", "NAME", "NAMESPACE", "REMOTEOWNER", "LINKNAME", "SUBNAME", "TYPE#", "SPARE3", "OBJ#") 2 PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 3 STORAGE(INITIAL 16384 NEXT 106496 MINEXTENTS 1 MAXEXTENTS 2147483645 4 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 5 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) 6 TABLESPACE "SYSTEM"; Index created. SQL> CREATE UNIQUE INDEX "SYS"."I_OBJ1IMG" ON "SYS"."OBJ$IMG" ("OBJ#", "OWNER#", "TYPE#") 2 PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 3 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 4 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 5 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) 6 TABLESPACE "SYSTEM" 7 ; Index created.
6. 获取bootstrap$语句
SQL> SELECT DBMS_METADATA.GET_DDL('TABLE','BOOTSTRAP$','SYS') FROM DUAL; DBMS_METADATA.GET_DDL('TABLE','BOOTSTRAP$','SYS') -------------------------------------------------------------------------------- CREATE TABLE "SYS"."BOOTSTRAP$" ( "LINE#" NUMBER NOT NULL ENABLE, "OBJ#" NUMBER NOT NULL ENABLE, "SQL_TEXT" VARCHAR2(4000) NOT NULL ENABLE ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 57344 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "SYSTEM"
7. 创建bootstrap$img表
SQL> CREATE TABLE "SYS"."BOOTSTRAP$IMG" 2 ( "LINE#" NUMBER NOT NULL ENABLE, 3 "OBJ#" NUMBER NOT NULL ENABLE, 4 "SQL_TEXT" VARCHAR2(4000) NOT NULL ENABLE 5 ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 6 NOCOMPRESS LOGGING 7 STORAGE(INITIAL 57344 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 8 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 9 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) 10 TABLESPACE "SYSTEM" 11 / Table created.
8.插入数据
insert into obj$img select * from obj$; insert into bootstrap$img select * from bootstrap$; commit;
9. 删除bootstrap$img对象名
delete from bootstrap$img where obj# in (select obj# from obj$ where name in ('OBJ$', 'I_OBJ1', 'I_OBJ2', 'I_OBJ3', 'I_OBJ4', 'I_OBJ5', 'BOOTSTRAP$')); commit;
10. 插入新创建对象
insert into bootstrap$img select * from bootstrap$tmpstr; commit;
11. 关闭数据库
SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down.
12. bbed修改相关block值
[oracle@oel6 ~]$ bbed Password: BBED: Release 2.0.0.0.0 - Limited Production on Thu Aug 7 04:54:50 2014 Copyright (c) 1982, 2013, Oracle and/or its affiliates. All rights reserved. ************* !!! For Oracle Internal Use only !!! *************** BBED> set filename '/u01/app/oracle/oradata/XIFENFEI/system01.dbf' FILENAME /u01/app/oracle/oradata/XIFENFEI/system01.dbf BBED> set blocksize 8192 BLOCKSIZE 8192 BBED> set block 1 BLOCK# 1 BBED> set mode edit MODE Edit BBED> set count 32 COUNT 32 BBED> m /x e81d Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y File: /u01/app/oracle/oradata/XIFENFEI/system01.dbf (0) Block: 1 Offsets: 196 to 227 Dba:0x00000000 ------------------------------------------------------------------------ e81d4000 12000000 00000000 41bad632 15bad632 01000000 00000000 00000000 <32 bytes per line> BBED> m /x 5200 offset +2 File: /u01/app/oracle/oradata/XIFENFEI/system01.dbf (0) Block: 1 Offsets: 198 to 229 Dba:0x00000000 ------------------------------------------------------------------------ 52001200 00000000 000041ba d63215ba d6320100 00000000 00000000 00000000 <32 bytes per line> BBED> d offset 96 File: /u01/app/oracle/oradata/XIFENFEI/system01.dbf (0) Block: 1 Offsets: 196 to 227 Dba:0x00000000 ------------------------------------------------------------------------ e81d5200 12000000 00000000 41bad632 15bad632 01000000 00000000 00000000 <32 bytes per line> BBED> sum apply Check value for File 0, Block 1: current = 0x5fbf, required = 0x5fbf BBED> verify DBVERIFY - Verification starting FILE = /u01/app/oracle/oradata/XIFENFEI/system01.dbf BLOCK = 1 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 : 0 Total Blocks Marked Corrupt : 0 Total Blocks Influx : 0 Message 531 not found; product=RDBMS; facility=BBED BBED> exit
13. 启动数据库
SQL> startup ORACLE instance started. Total System Global Area 663945216 bytes Fixed Size 2291808 bytes Variable Size 369100704 bytes Database Buffers 289406976 bytes Redo Buffers 3145728 bytes Database mounted. Database opened.
14. 验证I_OBJ1 index重建情况
SQL> SELECT OBJECT_ID,DATA_OBJECT_ID,CREATED FROM DBA_OBJECTS WHERE OBJECT_NAME='I_OBJ1'; OBJECT_ID DATA_OBJECT_ID CREATED ---------- -------------- --------- 77120 77120 06-AUG-14 SQL> !date Thu Aug 6 05:29:25 CST 2014 SQL> SELECT HEADER_FILE,HEADER_BLOCK FROM DBA_SEGMENTS WHERE SEGMENT_NAME='I_OBJ1'; HEADER_FILE HEADER_BLOCK ----------- ------------ 1 77296 SQL> SELECT SQL_TEXT FROM BOOTSTRAP$ WHERE SQL_TEXT LIKE '%obj%'; SQL_TEXT ----------------------------------------------------------------------------------------------------------------------------------------------- create unique index i_obj1 on obj$(obj#, owner#, type#) PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE ( INITIAL 65536 NEXT 1048576 MINEXTENTS 1 M AXEXTENTS 2147483645 PCTINCREASE 0 OBJNO 77120 EXTENTS (FILE 1 BLOCK 77296)) create unique index i_obj2 on obj$(owner#, name, namespace,remoteowner, linkname, subname, type#, spare3, obj#) PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE ( INITIAL 16384 NEXT 106496 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 OBJNO 77119 EXTENTS (FILE 1 BLOCK 77288)) create index i_obj3 on obj$(oid$) PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE ( INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 P CTINCREASE 0 OBJNO 77118 EXTENTS (FILE 1 BLOCK 77280)) create index i_obj4 on obj$(dataobj#, type#, owner#) PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE ( INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXE XTENTS 2147483645 PCTINCREASE 0 OBJNO 77117 EXTENTS (FILE 1 BLOCK 77272)) create unique index i_obj5 on obj$(spare3, name, namespace, type#, owner#, remoteowner, linkname, subname, obj#) PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE ( INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 OBJNO 77116 EXTENTS (FILE 1 BLOCK 77264))
不同版本对应的基表和index结构不一样(本篇blog使用的是12c做试验),但是本方法支持数据库从Oracle 7到Oracle 12c对于bootstrap$中核心index处理.
因为重建bootstrap$中的核心index是一个复杂而且风险非常大的事情,在你无法确定风险或者无法正常完成此类操作之时,如有需要请联系我
Phone:17813235971 Q Q:107644445 E-Mail:dba@xifenfei.com