标签云
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,671)
- DB2 (22)
- MySQL (73)
- Oracle (1,533)
- Data Guard (52)
- EXADATA (8)
- GoldenGate (21)
- ORA-xxxxx (159)
- ORACLE 12C (72)
- ORACLE 18C (6)
- ORACLE 19C (14)
- ORACLE 21C (3)
- Oracle 23ai (7)
- Oracle ASM (65)
- Oracle Bug (8)
- Oracle RAC (52)
- Oracle 安全 (6)
- Oracle 开发 (28)
- Oracle 监听 (28)
- Oracle备份恢复 (560)
- Oracle安装升级 (92)
- Oracle性能优化 (62)
- 专题索引 (5)
- 勒索恢复 (78)
- 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)
-
最近发表
- 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-01092 ORA-00604 ORA-01558故障处理
- ORA-65088: database open should be retried
- Oracle 19c异常恢复—ORA-01209/ORA-65088
- ORA-600 16703故障再现
- 数据库启动报ORA-27102 OSD-00026 O/S-Error: (OS 1455)
- .[metro777@cock.li].Elbie勒索病毒加密数据库恢复
- 应用连接错误,初始化mysql数据库恢复
- RAC默认服务配置优先节点
- Oracle 19c RAC 替换私网操作
- 监听报TNS-12541 TNS-12560 TNS-00511错误
- drop tablespace xxx including contents恢复
标签归档:ORA-01578
通过拷贝block实现system文件大量坏块恢复
有朋友找到我,他有客户库大量坏块,需要我们提供支持,因为这个库里面含有大量的存储过程,包等,要求数据要直接导出,不能使用工具挖.
dbv检查system大量坏块
DBVERIFY: Release 11.2.0.4.0 - Production on 星期二 11月 22 17:17:51 2016 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. DBVERIFY - 开始验证: FILE = h:\oracle\system01.dbf 页 4543 流入 - 很可能是介质损坏 Corrupt block relative dba: 0x004011bf (file 1, block 4543) Fractured block found during dbv: Data in bad block: type: 0 format: 2 rdba: 0x004011bf last change scn: 0x0000.00000000 seq: 0x1 flg: 0x05 spare1: 0x0 spare2: 0x0 spare3: 0x0 consistency value in tail: 0x7641344a check value in block header: 0xb6ff computed block checksum: 0x797 页 4544 标记为损坏 Corrupt block relative dba: 0x004011c0 (file 1, block 4544) Bad header found during dbv: Data in bad block: type: 71 format: 3 rdba: 0x754e362f last change scn: 0x7a37.6d424862 seq: 0x39 flg: 0x32 spare1: 0x35 spare2: 0x32 spare3: 0x3931 consistency value in tail: 0x7638356c check value in block header: 0x4856 block checksum disabled ………… 页 4613 标记为损坏 Corrupt block relative dba: 0x00401205 (file 1, block 4613) Bad header found during dbv: Data in bad block: type: 97 format: 7 rdba: 0x79634449 last change scn: 0x4364.77426a4c seq: 0x41 flg: 0x35 spare1: 0x34 spare2: 0x36 spare3: 0x7734 consistency value in tail: 0x505a4550 check value in block header: 0x434d computed block checksum: 0x6f3f 页 4614 标记为损坏 Corrupt block relative dba: 0x00401206 (file 1, block 4614) Completely zero block found during dbv: ………… 页 5125 标记为损坏 Corrupt block relative dba: 0x00401405 (file 1, block 5125) Completely zero block found during dbv: DBVERIFY - 验证完成 检查的页总数: 124160 处理的页总数 (数据): 90745 失败的页总数 (数据): 0 处理的页总数 (索引): 14417 失败的页总数 (索引): 0 处理的页总数 (其他): 3323 处理的总页数 (段) : 1 失败的总页数 (段) : 0 空的页总数: 15092 标记为损坏的总页数: 583 流入的页总数: 5 加密的总页数 : 0 最高块 SCN : 1417256245 (2.1417256245)
这里比较明显,一共583个坏块,而且是连续坏块(5125-4543+1)
尝试启动数据库
--直接尝试打开数据库 SQL> RECOVER DATABASE; 完成介质恢复。 SQL> alter database open; alter database open * 第 1 行出现错误: ORA-01092: ORACLE instance terminated. Disconnection forced ORA-00704: bootstrap process failure ORA-00604: error occurred at recursive SQL level 2 ORA-01578: ORACLE data block corrupted (file # 1, block # 4575) ORA-01110: data file 1: 'H:\ORACLE\SYSTEM01.DBF' 进程 ID: 2572 会话 ID: 85 序列号: 1 --跳过坏块event打开库 SQL> startup mount pfile='h:/oracle/pfile.txt' ORACLE 例程已经启动。 Total System Global Area 2137886720 bytes Fixed Size 2282944 bytes Variable Size 520096320 bytes Database Buffers 1610612736 bytes Redo Buffers 4894720 bytes 数据库装载完毕。 SQL> show parameter event; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ event string 43810 trace name context forev er, level 10, 10231 trace name context forever, level 10, 10 232 trace name context forever , level 10, 10233 trace name c ontext forever, level 10, 1004 1 trace name context forever, level 10 xml_db_events string enable SQL> alter database open; alter database open * 第 1 行出现错误: ORA-01113: 文件 1 需要介质恢复 ORA-01110: 数据文件 1: 'H:\ORACLE\SYSTEM01.DBF' SQL> recover database; 完成介质恢复。 SQL> alter database open; alter database open * 第 1 行出现错误: ORA-01092: ORACLE instance terminated. Disconnection forced ORA-00600: internal error code, arguments: [kokiasg1], [], [], [], [], [], [], [], [], [], [], [] 进程 ID: 9316 会话 ID: 4 序列号: 3 --upgrade方式打开数据库 SQL> startup mount pfile='h:/oracle/pfile.txt' ORACLE 例程已经启动。 Total System Global Area 2137886720 bytes Fixed Size 2282944 bytes Variable Size 520096320 bytes Database Buffers 1610612736 bytes Redo Buffers 4894720 bytes 数据库装载完毕。 SQL> alter database open upgrade 2 ; alter database open upgrade * 第 1 行出现错误: ORA-01092: ORACLE instance terminated. Disconnection forced ORA-00600: internal error code, arguments: [kokiasg1], [], [], [], [], [], [], [], [], [], [], [] 进程 ID: 7976 会话 ID: 4 序列号: 3
至此数据库在这种坏块情况下,正常打开相当渺茫,因为报错的这些block 都是非常靠前的,也就是说这个里面很多块在数据库创建好的时候就已经在了(特别是通过模板创建的数据库,这些部分很可能都是固定的),考虑使用其他库的block来替代这些坏块,然后尝试打开库
修复坏块
[oracle@app101-20 ~]$ dd if=/Data/oracle/oradata/txlhdb/system01.dbf of=/tmp/1.dbf skip=4543 bs=8192 count=583 583+0 records in 583+0 records out 4775936 bytes (4.8 MB) copied, 0.0533578 s, 89.5 MB/s H:\oracle>dd if=d:/temp/1.dbf of=h:\oracle\system01.dbf seek=4543 bs=8192 count=583 conv=notrun rawwrite dd for windows version 0.6beta3. Written by John Newbigin <jn@it.swin.edu.au> This program is covered by terms of the GPL Version 2. notrun 583+0 records in 583+0 records out H:\oracle>dbv file=system01.dbf DBVERIFY: Release 11.2.0.4.0 - Production on 星期二 11月 22 20:17:51 2016 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. DBVERIFY - 开始验证: FILE = H:\ORACLE\SYSTEM01.DBF DBVERIFY - 验证完成 检查的页总数: 124160 处理的页总数 (数据): 90761 失败的页总数 (数据): 0 处理的页总数 (索引): 14479 失败的页总数 (索引): 0 处理的页总数 (其他): 3393 处理的总页数 (段) : 1 失败的总页数 (段) : 0 空的页总数: 15527 标记为损坏的总页数: 0 流入的页总数: 0 加密的总页数 : 0 最高块 SCN : 295310052 (11.295310052)
再次尝试打开数据库
C:\Users\XIFENFEI>sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on 星期二 11月 22 20:18:19 2016 Copyright (c) 1982, 2013, Oracle. All rights reserved. 已连接到空闲例程。 SQL> startup mount pfile='h:/oracle/pfile.txt'; ORACLE 例程已经启动。 Total System Global Area 2137886720 bytes Fixed Size 2282944 bytes Variable Size 520096320 bytes Database Buffers 1610612736 bytes Redo Buffers 4894720 bytes 数据库装载完毕。 SQL> recover database; 完成介质恢复。 SQL> alter database open; 数据库已更改。
后续错误ORA-04023处理
C:\Users\XIFENFEI>exp "'/ as sysdba'" owner=XIFENFEI file=d:/full_xff.dmp lo g=d:/full_xff.log FEEDBACK=10000 COMPRESS=NO BUFFER=102400000 STATISTICS=none Export: Release 11.2.0.4.0 - Production on 星期二 11月 22 20:20:27 2016 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. 连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Produc tion With the Partitioning, OLAP, Data Mining and Real Application Testing options EXP-00056: 遇到 ORACLE 错误 4023 ORA-04023: 无法验证或授权对象 SELECT xdb_uid FROM SYS.EXU9XDBUID EXP-00000: 导出终止失败
数据库所有视图无法查询,通过直接对基表user$,obj$,view$等表查询出来视图信息,然后直接编译,然后数据可以完美导出,完成本次恢复
SQL> select 'alter view '||b.name||'.'||c.name||' compile;' 2 from view$ a,user$ b,obj$ c 3 where a.obj#=c.obj# 4 and c.owner#=b.user#;
csc higher than block scn类型坏块修复
数据库虽然正常open了,但是由于system有坏块,导致数据库导出有部分表报错,客户希望通过修复坏块完美解决该问题
bbed检查system报坏块
C:\Users\FAL>dbv file=D:\BAIDUYUNDOWNLOAD\ORADATA\CHEASDB\SYSTEM01.DBF DBVERIFY: Release 11.2.0.1.0 - Production on 星期六 5月 14 15:40:55 2016 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. DBVERIFY - 开始验证: FILE = D:\BAIDUYUNDOWNLOAD\ORADATA\CHEASDB\SYSTEM01.DBF csc(0x0000.1f8adab3) higher than block scn(0x0000.00000000) 页 122146 失败, 校验代码为 6054 DBVERIFY - 验证完成 检查的页总数: 252160 处理的页总数 (数据): 178921 失败的页总数 (数据): 0 处理的页总数 (索引): 52576 失败的页总数 (索引): 1 处理的页总数 (其他): 3201 处理的总页数 (段) : 1 失败的总页数 (段) : 0 空的页总数: 17462 标记为损坏的总页数: 0 流入的页总数: 0 加密的总页数 : 0 最高块 SCN : 529420540 (0.529420540)
bbed修复坏块
C:\Users\FAL>bbed password=blockedit filename=D:\BAIDUYUNDOWNLOAD\ORADATA\CHEASDB\SYSTEM01.DBF BBED: Release 2.0.0.0.0 - Limited Production on Sat May 14 15:37:01 2016 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. ************* !!! For Oracle Internal Use only !!! *************** BBED> set blocksize 8192 BLOCKSIZE 8192 BBED> set block 2 BLOCK# 2 BBED> map File: D:\BAIDUYUNDOWNLOAD\ORADATA\CHEASDB\SYSTEM01.DBF (0) Block: 2 Dba:0x00000000 ------------------------------------------------------------ Data File Header struct kcvfh, 360 bytes @0 ub4 tailchk @8188 BBED> set block 122147 BLOCK# 122147 BBED> map File: D:\BAIDUYUNDOWNLOAD\ORADATA\CHEASDB\SYSTEM01.DBF (0) Block: 122147 Dba:0x00000000 ------------------------------------------------------------ KTB Data Block (Index Leaf) struct kcbh, 20 bytes @0 struct ktbbh, 3720 bytes @20 struct kdxle, 32 bytes @3740 b2 kd_off[188] @3772 ub1 freespace[1534] @4148 ub1 rowdata[2442] @5682 ub4 tailchk @8188 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 0x0041dd22 ub4 bas_kcbh @8 0x00000000 ub2 wrp_kcbh @12 0x0000 ub1 seq_kcbh @14 0xff ub1 flg_kcbh @15 0x04 (KCBHFCKV) ub2 chkval_kcbh @16 0x6cee ub2 spare3_kcbh @18 0x0000 BBED> verify DBVERIFY - Verification starting FILE = D:\BAIDUYUNDOWNLOAD\ORADATA\CHEASDB\SYSTEM01.DBF BLOCK = 122146 Block Checking: DBA = 4316450, Block Type = KTB-managed data block Found block already marked corrupted 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 BBED> set offset 8188 OFFSET 8188 BBED> map File: D:\BAIDUYUNDOWNLOAD\ORADATA\CHEASDB\SYSTEM01.DBF (0) Block: 122147 Dba:0x00000000 ------------------------------------------------------------ KTB Data Block (Index Leaf) struct kcbh, 20 bytes @0 struct ktbbh, 3720 bytes @20 struct kdxle, 32 bytes @3740 b2 kd_off[188] @3772 ub1 freespace[1534] @4148 ub1 rowdata[2442] @5682 ub4 tailchk @8188 BBED> d File: D:\BAIDUYUNDOWNLOAD\ORADATA\CHEASDB\SYSTEM01.DBF (0) Block: 122147 Offsets: 8188 to 8191 Dba:0x00000000 ------------------------------------------------------------------------ ff060000 <32 bytes per line> BBED> set mode edit MODE Edit BBED> m /x 01 offset 14 File: D:\BAIDUYUNDOWNLOAD\ORADATA\CHEASDB\SYSTEM01.DBF (0) Block: 122147 Offsets: 14 to 525 Dba:0x00000000 ------------------------------------------------------------------------ 0104ee6c 00000200 00003500 0000b3da 8a1f0000 00009a00 030021dd 41000900 0700443d 0600531c c000628b 010000c0 00002c3f 5a1f0300 0000ca5e 05002b0a c0008685 01000080 000073d7 8a1f0400 200057a2 0500d530 c000a88e 2c000080 0000b3d7 8a1f0a00 01002848 08001101 c00084be 29000080 0000e3d7 8a1f0800 0d00d612 06008f0a c000258d 3c000080 000026d8 8a1f0100 1f0063c1 04006007 c0002887 4b000080 000046d8 8a1f0700 1e005403 0600a707 c000bd8e 40000080 00006bd8 8a1f0a00 0b000c48 08001301 c00084be 41000080 0000a2d8 8a1f0600 1b0055e6 0500c508 c0000f8b 23000080 0000fad8 8a1f0300 0600ca5e 0500220a c0008685 34000080 000040d9 8a1f0800 1300d412 0600900a c000258d 2e000080 000064d9 8a1f0600 0b0092e6 0500c608 c0000f8b 1c000080 000089d9 8a1f0a00 05001d48 08001401 c00084be 05000080 0000aed9 8a1f0400 100030a2 0500d730 c000a88e 0e000080 000016da 8a1f0800 1700c712 0600910a c000258d 33000080 000022da 8a1f0200 1100450d 0500930c c000c085 28000080 00002fda 8a1f0200 0800610d 0500940c c000c085 20000080 00004eda 8a1f0700 12003303 0600aa07 c000bd8e 0a000120 0f00b7da 8a1f0a00 13000048 08001501 c00084be 07000220 1e00f5da 8a1f0900 07000b44 0600650f c000968d 05000120 0f0004db 8a1f0300 <32 bytes per line> BBED> sum apply Check value for File 0, Block 122147: current = 0x6cee, required = 0x6cee BBED> verify DBVERIFY - Verification starting FILE = D:\BAIDUYUNDOWNLOAD\ORADATA\CHEASDB\SYSTEM01.DBF BLOCK = 122146 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 BBED> m /x c1da8a1f offset 8 File: D:\BAIDUYUNDOWNLOAD\ORADATA\CHEASDB\SYSTEM01.DBF (0) Block: 122147 Offsets: 8 to 519 Dba:0x00000000 ------------------------------------------------------------------------ c1da8a1f 00000104 ee6c0000 02000000 35000000 b3da8a1f 00000000 9a000300 21dd4100 09000700 443d0600 531cc000 628b0100 00c00000 2c3f5a1f 03000000 ca5e0500 2b0ac000 86850100 00800000 73d78a1f 04002000 57a20500 d530c000 a88e2c00 00800000 b3d78a1f 0a000100 28480800 1101c000 84be2900 00800000 e3d78a1f 08000d00 d6120600 8f0ac000 258d3c00 00800000 26d88a1f 01001f00 63c10400 6007c000 28874b00 00800000 46d88a1f 07001e00 54030600 a707c000 bd8e4000 00800000 6bd88a1f 0a000b00 0c480800 1301c000 84be4100 00800000 a2d88a1f 06001b00 55e60500 c508c000 0f8b2300 00800000 fad88a1f 03000600 ca5e0500 220ac000 86853400 00800000 40d98a1f 08001300 d4120600 900ac000 258d2e00 00800000 64d98a1f 06000b00 92e60500 c608c000 0f8b1c00 00800000 89d98a1f 0a000500 1d480800 1401c000 84be0500 00800000 aed98a1f 04001000 30a20500 d730c000 a88e0e00 00800000 16da8a1f 08001700 c7120600 910ac000 258d3300 00800000 22da8a1f 02001100 450d0500 930cc000 c0852800 00800000 2fda8a1f 02000800 610d0500 940cc000 c0852000 00800000 4eda8a1f 07001200 33030600 aa07c000 bd8e0a00 01200f00 b7da8a1f 0a001300 00480800 1501c000 84be0700 02201e00 f5da8a1f 09000700 0b440600 650fc000 968d0500 01200f00 <32 bytes per line> 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 0x0041dd22 ub4 bas_kcbh @8 0x1f8adac1 ub2 wrp_kcbh @12 0x0000 ub1 seq_kcbh @14 0x01 ub1 flg_kcbh @15 0x04 (KCBHFCKV) ub2 chkval_kcbh @16 0x6cee ub2 spare3_kcbh @18 0x0000 BBED> sum apply Check value for File 0, Block 122147: current = 0x7364, required = 0x7364 BBED> verify DBVERIFY - Verification starting FILE = D:\BAIDUYUNDOWNLOAD\ORADATA\CHEASDB\SYSTEM01.DBF BLOCK = 122146 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
dbv再次验证,坏块完美修复
C:\Users\FAL>dbv file=D:\BAIDUYUNDOWNLOAD\ORADATA\CHEASDB\SYSTEM01.DBF DBVERIFY: Release 11.2.0.1.0 - Production on 星期六 5月 14 22:00:06 2016 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. DBVERIFY - 开始验证: FILE = D:\BAIDUYUNDOWNLOAD\ORADATA\CHEASDB\SYSTEM01.DBF DBVERIFY - 验证完成 检查的页总数: 259840 处理的页总数 (数据): 181934 失败的页总数 (数据): 0 处理的页总数 (索引): 57381 失败的页总数 (索引): 0 处理的页总数 (其他): 3218 处理的总页数 (段) : 1 失败的总页数 (段) : 0 空的页总数: 17307 标记为损坏的总页数: 0 流入的页总数: 0 加密的总页数 : 0 最高块 SCN : 530218225 (0.530218225)
通过修复之后重新导出数据
参考相似篇章:file 1 block 128 corrupted/坏块恢复—system rollback坏块修复
ORA-10562 故障恢复—allow 1 corruption
朋友数据库由于存储变动,导致数据库瞬间hang住,然后直接crash,之后无法正常启动,请求技术支持.
数据库报ORA-00600[2131]错误
不能mount,可以通过重建控制文件解决
Mon Nov 30 20:35:38 2015 alter database mount Mon Nov 30 20:35:38 2015 NOTE: Loaded library: System Mon Nov 30 20:35:38 2015 SUCCESS: diskgroup DATADG was mounted Mon Nov 30 20:35:38 2015 NOTE: dependency between database xifenfei and diskgroup resource ora.DATADG.dg is established Errors in file /u01/app/oracle/diag/rdbms/xifenfei/xifenfei1/trace/xifenfei1_ora_26450.trc (incident=3032256): ORA-00600: internal error code, arguments: [2131], [33], [32], [], [], [], [], [], [], [], [], [] ORA-600 signalled during: alter database mount...
尝试recover数据库
Mon Nov 30 20:45:53 2015 ALTER DATABASE RECOVER database Media Recovery Start started logmerger process Parallel Media Recovery started with 80 slaves Mon Nov 30 20:45:56 2015 Recovery of Online Redo Log: Thread 2 Group 11 Seq 617 Reading mem 0 Mem# 0: +DATADG/xifenfei/redo011.log Recovery of Online Redo Log: Thread 1 Group 4 Seq 5410 Reading mem 0 Mem# 0: +DATADG/xifenfei/redo04.log Recovery of Online Redo Log: Thread 1 Group 5 Seq 5411 Reading mem 0 Mem# 0: +DATADG/xifenfei/redo05.log Mon Nov 30 20:46:07 2015 Recovery of Online Redo Log: Thread 1 Group 6 Seq 5412 Reading mem 0 Mem# 0: +DATADG/xifenfei/redo06.log Mon Nov 30 20:46:13 2015 Exception [type: SIGSEGV, Address not mapped to object] [ADDR:0xC] [PC:0x95FB502, kdxlin()+4088] [flags: 0x0, count: 1] Errors in file /u01/app/oracle/diag/rdbms/xifenfei/xifenfei1/trace/xifenfei1_pr13_30480.trc (incident=3032568): ORA-07445: 出现异常错误: 核心转储 [kdxlin()+4088] [SIGSEGV] [ADDR:0xC] [PC:0x95FB502] [Address not mapped to object] [] Mon Nov 30 20:46:17 2015 Sweep [inc][3032568]: completed Sweep [inc2][3032568]: completed Mon Nov 30 20:46:31 2015 Slave exiting with ORA-10562 exception Errors in file /u01/app/oracle/diag/rdbms/xifenfei/xifenfei1/trace/xifenfei1_pr13_30480.trc: ORA-10562: Error occurred while applying redo to data block (file# 2, block# 165054) ORA-10564: tablespace SYSAUX ORA-01110: 数据文件 2: '+DATADG/xifenfei/datafile/sysaux.265.861925867' ORA-10561: block type 'TRANSACTION MANAGED INDEX BLOCK', data object# 271 ORA-00607: 当更改数据块时出现内部错误 ORA-00602: 内部编程异常错误 ORA-07445: 出现异常错误: 核心转储 [kdxlin()+4088] [SIGSEGV] [ADDR:0xC] [PC:0x95FB502] [Address not mapped to object] [] Mon Nov 30 20:46:31 2015 Recovery Slave PR13 previously exited with exception 10562 Mon Nov 30 20:46:33 2015 Checker run found 28 new persistent data failures Mon Nov 30 20:46:35 2015 Media Recovery failed with error 448 Errors in file /u01/app/oracle/diag/rdbms/xifenfei/xifenfei1/trace/xifenfei1_pr00_30400.trc: ORA-00283: 恢复会话因错误而取消 ORA-00448: 后台进程正常结束 ORA-10562 signalled during: ALTER DATABASE RECOVER database ...
通过这里可以看到,由于在recover 操作之时,由于某种原因redo的数据无法apply到file 2 block 165054中,导致数据库recover database失败.
按照数据文件recover操作
SQL> recover datafile 1; Media recovery complete. SQL> recover datafile 3,4,5,6,7; Media recovery complete. SQL> recover datafile 8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28; Media recovery complete. SQL> recover datafile 2; ORA-00283: recovery session canceled due to errors ORA-10562: Error occurred while applying redo to data block (file# 2, block# 165054) ORA-10564: tablespace SYSAUX ORA-01110: data file 2: '+DATADG/xifenfei/datafile/sysaux.265.861925867' ORA-10561: block type 'TRANSACTION MANAGED INDEX BLOCK', data object# 271 ORA-00607: Internal error occurred while making a change to a data block ORA-00602: internal programming exception ORA-07445: exception encountered: core dump [kdxlin()+4088] [SIGSEGV] [ADDR:0xC] [PC:0x95FB502] [Address not mapped to object] []
错误提示和recover database一样,那我们只能让恢复跳过该block继续恢复,因为根据经验判断data object# 271不是系统核心对象,不会影响数据库的启动
跳过坏块继续恢复
SQL> recover datafile 2 allow 1 corruption; ORA-00283: recovery session canceled due to errors ORA-00600: internal error code, arguments: [3020], [2], [69793], [8458401], [], [], [], [], [], [], [], [] ORA-10567: Redo is inconsistent with data block (file# 2, block# 69793, file offset is 571744256 bytes) ORA-10564: tablespace SYSAUX ORA-01110: data file 2: '+DATADG/xifenfei/datafile/sysaux.265.861925867' ORA-10561: block type 'TRANSACTION MANAGED INDEX BLOCK', data object# 272 SQL> recover datafile 2 allow 1 corruption; Media recovery complete. SQL> alter database open; Database altered.
出现了ORA-600[3020] 继续跳过坏块,然后数据库顺利open,别忘记加tempfile
处理异常对象
SQL> select object_name,object_type from dba_objects where data_object_id in(272,271); OBJECT_NAME -------------------------------------------------------------------------------- OBJECT_TYPE ------------------- SMON_SCN_TIME_TIM_IDX INDEX SMON_SCN_TIME_SCN_IDX INDEX SQL> select index_name from dba_indexes where table_name='SMON_SCN_TIME'; INDEX_NAME ------------------------------ SMON_SCN_TIME_TIM_IDX SMON_SCN_TIME_SCN_IDX SQL> set pages 1000 SQL> set long 1000 SQL> Select dbms_metadata.get_ddl('TABLE','SMON_SCN_TIME','SYS') FROM DUAL ; DBMS_METADATA.GET_DDL('TABLE','SMON_SCN_TIME','SYS') -------------------------------------------------------------------------------- CREATE TABLE "SYS"."SMON_SCN_TIME" ( "THREAD" NUMBER, "TIME_MP" NUMBER, "TIME_DP" DATE, "SCN_WRP" NUMBER, "SCN_BAS" NUMBER, "NUM_MAPPINGS" NUMBER, "TIM_SCN_MAP" RAW(1200), "SCN" NUMBER DEFAULT 0, "ORIG_THREAD" NUMBER DEFAULT 0 /* for downgrade */ ) CLUSTER "SYS"."SMON_SCN_TO_TIME_AUX" ("THREAD") SQL> analyze table smon_scn_time validate structure cascade online; analyze table smon_scn_time validate structure cascade online * ERROR at line 1: ORA-01578: ORACLE data block corrupted (file # 2, block # 165054) ORA-01110: data file 2: '+DATADG/xifenfei/datafile/sysaux.265.861925867' SQL> truncate CLUSTER "SYS"."SMON_SCN_TO_TIME_AUX"; Cluster truncated.
关于SMON_SCN_TIME部分处理,可以参考:关于SMON_SCN_TIME若干问题说明.至此数据库基本上恢复完成,而且运气非常好,恢复的非常完美,数据实现0丢失.