标签云
asm恢复 bbed bootstrap$ dul In Memory kcbzib_kcrsds_1 kccpb_sanity_check_2 MySQL恢复 ORA-00312 ORA-00607 ORA-00704 ORA-00742 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,700)
- DB2 (22)
- MySQL (74)
- Oracle (1,561)
- Data Guard (52)
- EXADATA (8)
- GoldenGate (24)
- ORA-xxxxx (159)
- ORACLE 12C (72)
- ORACLE 18C (6)
- ORACLE 19C (15)
- ORACLE 21C (3)
- Oracle 23ai (8)
- Oracle ASM (68)
- Oracle Bug (8)
- Oracle RAC (53)
- Oracle 安全 (6)
- Oracle 开发 (28)
- Oracle 监听 (28)
- Oracle备份恢复 (571)
- Oracle安装升级 (94)
- Oracle性能优化 (62)
- 专题索引 (5)
- 勒索恢复 (81)
- 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)
-
最近发表
- Oracle 19c 202501补丁(RUs+OJVM)
- 避免 19c 数据库性能问题需要考虑的事项 (Doc ID 3050476.1)
- Bug 21915719 Database hang or may fail to OPEN in 12c IBM AIX or HPUX Itanium – ORA-742, DEADLOCK or ORA-600 [kcrfrgv_nextlwn_scn] ORA-600 [krr_process_read_error_2]
- ORA-600 ktuPopDictI_1恢复
- impdp导入数据丢失sys授权问题分析
- impdp 创建index提示ORA-00942: table or view does not exist
- 数据泵导出 (expdp) 和导入 (impdp)工具性能降低分析参考
- 19c非归档数据库断电导致ORA-00742故障恢复
- Oracle 19c – 手动升级到 Non-CDB Oracle Database 19c 的完整核对清单
- sqlite数据库简单操作
- Oracle 暂定和恢复功能
- .pzpq扩展名勒索恢复
- Oracle read only用户—23ai新特性:只读用户
- 迁移awr快照数据到自定义表空间
- .hmallox加密mariadb/mysql数据库恢复
- 2025年首个故障恢复—ORA-600 kcbzib_kcrsds_1
- 第一例Oracle 21c恢复咨询
- ORA-15411: Failure groups in disk group DATA have different number of disks.
- 断电引起的ORA-08102: 未找到索引关键字, 对象号 39故障处理
- ORA-00227: corrupt block detected in control file
分类目录归档:Oracle ASM
ADHU(ASM Disk Header Utility)—asm disk header备份恢复工具
adhu(ASM Disk Header Utility)作为oracle asm中和kfed,amdu齐名的asm三大恢复神器之一,没有被oracle大力推广(属于内部工具),随着kfed功能增强和asm disk header自动备份功能的完善,adhu oracle基本上停止的开发支持,可以用来作为10.2.0.5之前asm版本的磁盘头保护工具
adhu预览
这里可以通过shell封装的utildhu调用adhu程序,实现更加人性化和自动化操作,它含有install,check,repair三个命令参数.
[root@xff1 tmp]# su - grid xff1:/home/grid> cd /tmp/adhu/ xff1:/tmp/adhu> ls -l total 68 -rwxr-xr-x 1 grid oinstall 18902 Nov 1 2008 adhu -rw-r--r-- 1 grid oinstall 1970 Nov 1 2008 README -rwxr-xr-x 1 grid oinstall 6964 Mar 21 16:20 utildhu -rw-r--r-- 1 root root 12634 Mar 21 16:05 utildhu.zip xff1:/tmp/adhu> ./utildhu Usage: utildhu install/check/repair [device name] $utildhu install Will gather a list of member ASM disks and create the backup directory ./HeaderBackup The ./HeaderBackup directory will contain the backup header of every asm disk in this database $utildhu check Will run /tmp/adhu/adhu for every disk discovered by $utildhu install and will email recipients configured in RECIPIENTS if there are errors in the disk header It is hoped that the user will enter valid RECIPIENT email addresses, and will place this utility in $ORA_ASM_HOME $utildhu repair <device name> Will repair the device provided using the backup header blocks that have been copied previously. This does assume that you have backup header blocks in ./HeaderBackup Sample crontab entry to run a check every 5 minutes #Minute (0-59) Hour (0-23) Day of Month (1-31) Month (1-12 or Jan-Dec) Day of Week (0-6 or Sun-Sat) Command 0,5,10,15,20,25,30,35,40,45,50,55 * * * * * utildhu check Please read the README for more information
adhu install
install主要是实现utildhu.config配置文件生成和第一次asm 磁盘头备份
xff1:/tmp/adhu> ./utildhu install xff1:/tmp/adhu> ls -l total 64 -rwxr-xr-x 1 grid oinstall 18902 Nov 1 2008 adhu drwxr-xr-x 2 grid oinstall 4096 Mar 21 16:23 HeaderBackup -rw-r--r-- 1 grid oinstall 1117 Mar 21 16:23 persistent-log.utildhu -rw-r--r-- 1 grid oinstall 1970 Nov 1 2008 README -rwxr-xr-x 1 grid oinstall 6964 Mar 21 16:20 utildhu -rw-r--r-- 1 grid oinstall 243 Mar 21 16:23 utildhu.config -rw-r--r-- 1 grid oinstall 710 Mar 21 16:23 utildhu.out -rw-r--r-- 1 root root 12634 Mar 21 16:05 utildhu.zip xff1:/tmp/adhu> cd HeaderBackup/ xff1:/tmp/adhu/HeaderBackup> ls -ltr total 12 -rw-r--r-- 1 grid oinstall 4096 Mar 21 16:23 oradata1p1 -rw-r--r-- 1 grid oinstall 4096 Mar 21 16:23 oradata2p1 -rw-r--r-- 1 grid oinstall 4096 Mar 21 16:23 ocrvotep1 xff1:/tmp/adhu/HeaderBackup> more ../utildhu.config /dev/mapper/oradata1p1 /dev/mapper/oradata2p1 /dev/mapper/ocrvotep1 xff1:/tmp/adhu> more ../persistent-log.utildhu Mon Mar 21 16:23:29 CST 2016 ASM Disk Header Check Utility Installed on Devices configured are: /dev/mapper/oradata1p1 /dev/mapper/oradata2p1 /dev/mapper/ocrvotep1 ADHU: /dev/mapper/oradata1p1: Status 0x01 Mon Mar 21 16:23:29 2016 ADHU: /dev/mapper/oradata1p1: Diskgroup:DATA Disk:DATA_0000 #0 ADHU: /dev/mapper/oradata1p1: valid disk header found ADHU: /dev/mapper/oradata1p1: backup block updated ###ADHU check run at Mon Mar 21 16:23:29 CST 2016 NO ERRORS FOUND xff1:/tmp/adhu> ls -l HeaderBackup/ total 16 -rw-r--r-- 1 grid oinstall 4096 Mar 21 23:04 ocrvotep1 -rw-r--r-- 1 grid oinstall 4096 Mar 21 23:08 oradata1p1 -rw-r--r-- 1 grid oinstall 4096 Mar 21 23:08 oradata1p1.corrupt -rw-r--r-- 1 grid oinstall 4096 Mar 21 23:04 oradata2p1
adhu check
对于正常的asm disk,主要是为了生成新的磁盘头备份
xff1:/tmp/adhu> ls -l HeaderBackup/ total 16 -rw-r--r-- 1 grid oinstall 4096 Mar 21 23:04 ocrvotep1 -rw-r--r-- 1 grid oinstall 4096 Mar 21 23:08 oradata1p1 -rw-r--r-- 1 grid oinstall 4096 Mar 21 23:08 oradata1p1.corrupt -rw-r--r-- 1 grid oinstall 4096 Mar 21 23:04 oradata2p1 xff1:/tmp/adhu> ./utildhu check xff1:/tmp/adhu> ls -l HeaderBackup/ total 16 -rw-r--r-- 1 grid oinstall 4096 Mar 21 23:11 ocrvotep1 -rw-r--r-- 1 grid oinstall 4096 Mar 21 23:11 oradata1p1 -rw-r--r-- 1 grid oinstall 4096 Mar 21 23:08 oradata1p1.corrupt -rw-r--r-- 1 grid oinstall 4096 Mar 21 23:11 oradata2p1
adhu repair
repair主要是修复磁盘头,当asm 磁盘头损坏之时,可以通过这个命令实现磁盘头修复
xff1:/tmp/adhu> dd if=/dev/zero of=/dev/mapper/oradata1p1 bs=4096 count=1 1+0 records in 1+0 records out 4096 bytes (4.1 kB) copied, 0.000282838 s, 14.5 MB/s xff1:/tmp/adhu> ./utildhu check xff1:/tmp/adhu> tail -f persistent-log.utildhu ###ADHU check run at Mon Mar 21 23:04:04 CST 2016 ERRORS FOUND ADHU: /dev/mapper/oradata1p1: Status 0x08 Mon Mar 21 23:04:04 2016 ADHU: /dev/mapper/oradata1p1: Diskgroup:DATA Disk:DATA_0000 #0 ADHU: /dev/mapper/oradata1p1: corrupt disk header encountered ADHU: /dev/mapper/oradata1p1: valid backup block found ADHU: /dev/mapper/oradata1p1: CORRUPT HEADER NOT REPAIRED xff1:/tmp/adhu> kfed read /dev/mapper/oradata1p1 kfbh.endian: 0 ; 0x000: 0x00 kfbh.hard: 0 ; 0x001: 0x00 kfbh.type: 0 ; 0x002: KFBTYP_INVALID kfbh.datfmt: 0 ; 0x003: 0x00 kfbh.block.blk: 0 ; 0x004: blk=0 kfbh.block.obj: 0 ; 0x008: file=0 kfbh.check: 0 ; 0x00c: 0x00000000 kfbh.fcn.base: 0 ; 0x010: 0x00000000 kfbh.fcn.wrap: 0 ; 0x014: 0x00000000 kfbh.spare1: 0 ; 0x018: 0x00000000 kfbh.spare2: 0 ; 0x01c: 0x00000000 7F6BD9981400 00000000 00000000 00000000 00000000 [................] Repeat 255 times KFED-00322: Invalid content encountered during block traversal: [kfbtTraverseBlock][Invalid OSM block type][][0] xff1:/tmp/adhu> sqlplus / as sysasm SQL*Plus: Release 11.2.0.4.0 Production on Mon Mar 21 23:07:25 2016 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Real Application Clusters and Automatic Storage Management options SQL> alter diskgroup data dismount; alter diskgroup data dismount * ERROR at line 1: ORA-15032: not all alterations performed ORA-15027: active use of diskgroup "DATA" precludes its dismount SQL> alter diskgroup data mount; alter diskgroup data mount * ERROR at line 1: ORA-15032: not all alterations performed ORA-15017: diskgroup "DATA" cannot be mounted ORA-15013: diskgroup "DATA" is already mounted SQL> alter diskgroup data dismount force; Diskgroup altered. SQL> alter diskgroup data mount; alter diskgroup data mount * ERROR at line 1: ORA-15032: not all alterations performed ORA-15017: diskgroup "DATA" cannot be mounted ORA-15040: diskgroup is incomplete xff1:/tmp/adhu> ./utildhu repair /dev/mapper/oradata1p1 DEVICE /dev/mapper/oradata1p1 REPAIRED AT Mon Mar 21 23:06:06 CST 2016 ADHU: /dev/mapper/oradata1p1: Status 0x04 Mon Mar 21 23:06:06 2016 ADHU: /dev/mapper/oradata1p1: Diskgroup:DATA Disk:DATA_0000 #0 ADHU: /dev/mapper/oradata1p1: corrupt disk header encountered ADHU: /dev/mapper/oradata1p1: valid backup block found ADHU: /dev/mapper/oradata1p1: disk header repaired xff1:/tmp/adhu> sqlplus / as sysasm SQL*Plus: Release 11.2.0.4.0 Production on Mon Mar 21 23:08:48 2016 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Real Application Clusters and Automatic Storage Management options SQL> alter diskgroup data mount; Diskgroup altered.
adhu直接使用
adhu [-dir dirname ] [-repair] [-quiet] [-readonly] [-syslog mask ] devname
默认情况下adhu将disk header备份为当前目录下的备份文件。 使用-dir选项可以指定存放的目录。
当需要使用adhu去修复一个损坏的asm disk header时使用-repair 选项。
-quiet 选项将过滤所有正常的输出信息,若执行成功则不打印任何输出。
-readonly选项 以只读方式来打开disk device,这样备份block将不被写入,而备份文件将在可能的情况下写入。
-syslog选项控制是否写出结果到系统日志和标准输出。
devname代表为asm disk的设备文件,asm头的备份文件将以该device name为基础,并存放在当前目录或者-dir指定的目录。
oracle asm disk格式化恢复—格式化为ntfs文件系统
接到网友请求,由于操作人员粗心把asm disk的磁盘映射到另外的机器上,并且格式化为了win ntfs文件系统,导致asm 磁盘组异常,数据库无法使用
asm 日志报ORA-27072错
Mon Nov 30 12:00:13 2015 Errors in file c:\app\administrator\diag\asm\+asm\+asm\trace\+asm_gmon_868.trc: ORA-27070: async read/write failed OSD-04008: WriteFile() 失败, 无法写入文件 O/S-Error: (OS 21) 设备未就绪。 WARNING: IO Failed. group:1 disk(number.incarnation):0.0xf0f0bbfb disk_path:\\.\ORCLDISKDATA0 AU:1 disk_offset(bytes):2093056 io_size:4096 operation:Write type:synchronous result:I/O error process_id:868 WARNING: disk 0.4042308603 (DATA_0000) not responding to heart beat ERROR: too many offline disks in PST (grp 1) WARNING: Disk DATA_0000 in mode 0x7f will be taken offline Mon Nov 30 12:00:13 2015 NOTE: process 576:37952 initiating offline of disk 0.4042308603 (DATA_0000) with mask 0x7e in group 1 WARNING: Disk DATA_0000 in mode 0x7f is now being taken offline NOTE: initiating PST update: grp = 1, dsk = 0/0xf0f0bbfb, mode = 0x15 kfdp_updateDsk(): 5 kfdp_updateDskBg(): 5 Errors in file c:\app\administrator\diag\asm\+asm\+asm\trace\+asm_gmon_868.trc: ORA-27072: File I/O error WARNING: IO Failed. group:1 disk(number.incarnation):1.0xf0f0bbfc disk_path:\\.\ORCLDISKDATA1 AU:1 disk_offset(bytes):1048576 io_size:4096 operation:Read type:synchronous result:I/O error process_id:868 Errors in file c:\app\administrator\diag\asm\+asm\+asm\trace\+asm_gmon_868.trc: ORA-27072: File I/O error WARNING: IO Failed. group:1 disk(number.incarnation):1.0xf0f0bbfc disk_path:\\.\ORCLDISKDATA1 AU:1 disk_offset(bytes):1052672 io_size:4096 operation:Read type:synchronous result:I/O error process_id:868 Errors in file c:\app\administrator\diag\asm\+asm\+asm\trace\+asm_gmon_868.trc: ORA-27072: File I/O error WARNING: IO Failed. group:1 disk(number.incarnation):2.0xf0f0bbfd disk_path:\\.\ORCLDISKDATA2 AU:1 disk_offset(bytes):1048576 io_size:4096 operation:Read type:synchronous result:I/O error process_id:868 Errors in file c:\app\administrator\diag\asm\+asm\+asm\trace\+asm_gmon_868.trc: ORA-27072: File I/O error WARNING: IO Failed. group:1 disk(number.incarnation):2.0xf0f0bbfd disk_path:\\.\ORCLDISKDATA2 AU:1 disk_offset(bytes):1052672 io_size:4096 operation:Read type:synchronous result:I/O error process_id:868 Errors in file c:\app\administrator\diag\asm\+asm\+asm\trace\+asm_gmon_868.trc: ORA-27072: File I/O error WARNING: IO Failed. group:1 disk(number.incarnation):3.0xf0f0bbfe disk_path:\\.\ORCLDISKDATA3 AU:1 disk_offset(bytes):1048576 io_size:4096 operation:Read type:synchronous result:I/O error process_id:868 Errors in file c:\app\administrator\diag\asm\+asm\+asm\trace\+asm_gmon_868.trc: ORA-27072: File I/O error WARNING: IO Failed. group:1 disk(number.incarnation):3.0xf0f0bbfe disk_path:\\.\ORCLDISKDATA3 AU:1 disk_offset(bytes):1052672 io_size:4096 operation:Read type:synchronous result:I/O error process_id:868 Errors in file c:\app\administrator\diag\asm\+asm\+asm\trace\+asm_gmon_868.trc: ORA-27072: File I/O error WARNING: IO Failed. group:1 disk(number.incarnation):4.0xf0f0bbff disk_path:\\.\ORCLDISKDATA4 AU:1 disk_offset(bytes):1048576 io_size:4096 operation:Read type:synchronous result:I/O error process_id:868 Errors in file c:\app\administrator\diag\asm\+asm\+asm\trace\+asm_gmon_868.trc: ORA-27072: File I/O error WARNING: IO Failed. group:1 disk(number.incarnation):4.0xf0f0bbff disk_path:\\.\ORCLDISKDATA4 AU:1 disk_offset(bytes):1052672 io_size:4096 operation:Read type:synchronous result:I/O error process_id:868 Errors in file c:\app\administrator\diag\asm\+asm\+asm\trace\+asm_gmon_868.trc: ORA-27072: File I/O error WARNING: IO Failed. group:1 disk(number.incarnation):6.0xf0f0bc01 disk_path:\\.\ORCLDISKDATA6 AU:1 disk_offset(bytes):1048576 io_size:4096 operation:Read type:synchronous result:I/O error process_id:868 Errors in file c:\app\administrator\diag\asm\+asm\+asm\trace\+asm_gmon_868.trc: ORA-27072: File I/O error WARNING: IO Failed. group:1 disk(number.incarnation):6.0xf0f0bc01 disk_path:\\.\ORCLDISKDATA6 AU:1 disk_offset(bytes):1052672 io_size:4096 operation:Read type:synchronous result:I/O error process_id:868 Errors in file c:\app\administrator\diag\asm\+asm\+asm\trace\+asm_gmon_868.trc: ORA-27072: File I/O error WARNING: IO Failed. group:1 disk(number.incarnation):7.0xf0f0bc02 disk_path:\\.\ORCLDISKDATA7 AU:1 disk_offset(bytes):1048576 io_size:4096 operation:Read type:synchronous result:I/O error process_id:868 Errors in file c:\app\administrator\diag\asm\+asm\+asm\trace\+asm_gmon_868.trc: ORA-27072: File I/O error WARNING: IO Failed. group:1 disk(number.incarnation):7.0xf0f0bc02 disk_path:\\.\ORCLDISKDATA7 AU:1 disk_offset(bytes):1052672 io_size:4096 operation:Read type:synchronous result:I/O error process_id:868 ERROR: no PST quorum in group: required 1, found 0 WARNING: Disk DATA_0000 in mode 0x7f offline aborted Mon Nov 30 12:00:14 2015 SQL> alter diskgroup DATA dismount force /* ASM SERVER */ NOTE: cache dismounting (not clean) group 1/0xBB404B03 (DATA) Mon Nov 30 12:00:14 2015 NOTE: halting all I/Os to diskgroup DATA Mon Nov 30 12:00:14 2015 NOTE: LGWR doing non-clean dismount of group 1 (DATA) NOTE: LGWR sync ABA=367.7265 last written ABA 367.7265 NOTE: cache dismounted group 1/0xBB404B03 (DATA) kfdp_dismount(): 6 kfdp_dismountBg(): 6 NOTE: De-assigning number (1,0) from disk (\\.\ORCLDISKDATA0) NOTE: De-assigning number (1,1) from disk (\\.\ORCLDISKDATA1) NOTE: De-assigning number (1,2) from disk (\\.\ORCLDISKDATA2) NOTE: De-assigning number (1,3) from disk (\\.\ORCLDISKDATA3) NOTE: De-assigning number (1,4) from disk (\\.\ORCLDISKDATA4) NOTE: De-assigning number (1,5) from disk (\\.\ORCLDISKDATA5) NOTE: De-assigning number (1,6) from disk (\\.\ORCLDISKDATA6) NOTE: De-assigning number (1,7) from disk (\\.\ORCLDISKDATA7) SUCCESS: diskgroup DATA was dismounted NOTE: cache deleting context for group DATA 1/-1153414397 SUCCESS: alter diskgroup DATA dismount force /* ASM SERVER */ ERROR: PST-initiated MANDATORY DISMOUNT of group DATA
这里的asm日志很明显由于asm disk无法正常访问,报ORA-27072错误,磁盘组强制dismount.
分析磁盘情况
通过与客户沟通,确定从I到O本为asm disk 被格式化为了NTFS文件系统的磁盘,结合asmtool分析可以发现还有一个asm disk没有格式化掉,该磁盘组中一个共有8个磁盘格式化掉了7个.
通过kfed分析磁盘信息
C:\Users\Administrator>kfed read '\\.\J:' kfbh.endian: 235 ; 0x000: 0xeb kfbh.hard: 82 ; 0x001: 0x52 kfbh.type: 144 ; 0x002: *** Unknown Enum *** kfbh.datfmt: 78 ; 0x003: 0x4e kfbh.block.blk: 542328404 ; 0x004: T=0 NUMB=0x20534654 kfbh.block.obj: 2105376 ; 0x008: TYPE=0x0 NUMB=0x2020 kfbh.check: 2050 ; 0x00c: 0x00000802 kfbh.fcn.base: 0 ; 0x010: 0x00000000 kfbh.fcn.wrap: 63488 ; 0x014: 0x0000f800 kfbh.spare1: 16711743 ; 0x018: 0x00ff003f kfbh.spare2: 2048 ; 0x01c: 0x00000800 ERROR!!!, failed to get the oracore error message C:\Users\Administrator>kfed read '\\.\J:' blkn=2 kfbh.endian: 70 ; 0x000: 0x46 kfbh.hard: 73 ; 0x001: 0x49 kfbh.type: 76 ; 0x002: *** Unknown Enum *** kfbh.datfmt: 69 ; 0x003: 0x45 kfbh.block.blk: 196656 ; 0x004: T=0 NUMB=0x30030 kfbh.block.obj: 33563364 ; 0x008: TYPE=0x0 NUMB=0x22e4 kfbh.check: 0 ; 0x00c: 0x00000000 kfbh.fcn.base: 65537 ; 0x010: 0x00010001 kfbh.fcn.wrap: 65592 ; 0x014: 0x00010038 kfbh.spare1: 416 ; 0x018: 0x000001a0 kfbh.spare2: 1024 ; 0x01c: 0x00000400 ERROR!!!, failed to get the oracore error message C:\Users\Administrator>kfed read '\\.\J:' blkn=256 kfbh.endian: 1 ; 0x000: 0x01 kfbh.hard: 130 ; 0x001: 0x82 kfbh.type: 13 ; 0x002: KFBTYP_PST_NONE kfbh.datfmt: 1 ; 0x003: 0x01 kfbh.block.blk: 2147483648 ; 0x004: T=1 NUMB=0x0 kfbh.block.obj: 2147483654 ; 0x008: TYPE=0x8 NUMB=0x6 kfbh.check: 17662471 ; 0x00c: 0x010d8207 kfbh.fcn.base: 0 ; 0x010: 0x00000000 kfbh.fcn.wrap: 0 ; 0x014: 0x00000000 kfbh.spare1: 0 ; 0x018: 0x00000000 kfbh.spare2: 0 ; 0x01c: 0x00000000 ERROR!!!, failed to get the oracore error message C:\Users\Administrator>kfed read '\\.\J:' blkn=510 kfbh.endian: 1 ; 0x000: 0x01 kfbh.hard: 130 ; 0x001: 0x82 kfbh.type: 1 ; 0x002: KFBTYP_DISKHEAD kfbh.datfmt: 1 ; 0x003: 0x01 kfbh.block.blk: 254 ; 0x004: T=0 NUMB=0xfe kfbh.block.obj: 2147483654 ; 0x008: TYPE=0x8 NUMB=0x6 kfbh.check: 717599272 ; 0x00c: 0x2ac5b228 kfbh.fcn.base: 0 ; 0x010: 0x00000000 kfbh.fcn.wrap: 0 ; 0x014: 0x00000000 kfbh.spare1: 0 ; 0x018: 0x00000000 kfbh.spare2: 0 ; 0x01c: 0x00000000 kfdhdb.driver.provstr: ORCLDISKDATA6 ; 0x000: length=13 kfdhdb.driver.reserved[0]: 1096040772 ; 0x008: 0x41544144 kfdhdb.driver.reserved[1]: 54 ; 0x00c: 0x00000036 kfdhdb.driver.reserved[2]: 0 ; 0x010: 0x00000000 kfdhdb.driver.reserved[3]: 0 ; 0x014: 0x00000000 kfdhdb.driver.reserved[4]: 0 ; 0x018: 0x00000000 kfdhdb.driver.reserved[5]: 0 ; 0x01c: 0x00000000 …………
通过分析,可以确定asm disk的备份block没有被覆盖,原则上可以通过备份block实现磁盘组恢复,从而减小了恢复难度
kfed恢复磁盘头
C:\Users\Administrator> kfed repair '\\.\J:' C:\Users\Administrator>kfed read '\\.\J:' kfbh.endian: 1 ; 0x000: 0x01 kfbh.hard: 130 ; 0x001: 0x82 kfbh.type: 1 ; 0x002: KFBTYP_DISKHEAD kfbh.datfmt: 1 ; 0x003: 0x01 kfbh.block.blk: 254 ; 0x004: T=0 NUMB=0xfe kfbh.block.obj: 2147483654 ; 0x008: TYPE=0x8 NUMB=0x6 kfbh.check: 717599272 ; 0x00c: 0x2ac5b228 kfbh.fcn.base: 0 ; 0x010: 0x00000000 kfbh.fcn.wrap: 0 ; 0x014: 0x00000000 kfbh.spare1: 0 ; 0x018: 0x00000000 kfbh.spare2: 0 ; 0x01c: 0x00000000 kfdhdb.driver.provstr: ORCLDISKDATA6 ; 0x000: length=13 kfdhdb.driver.reserved[0]: 1096040772 ; 0x008: 0x41544144 kfdhdb.driver.reserved[1]: 54 ; 0x00c: 0x00000036 kfdhdb.driver.reserved[2]: 0 ; 0x010: 0x00000000 kfdhdb.driver.reserved[3]: 0 ; 0x014: 0x00000000 kfdhdb.driver.reserved[4]: 0 ; 0x018: 0x00000000 kfdhdb.driver.reserved[5]: 0 ; 0x01c: 0x00000000 …………
确定asm disk相关信息
对于7个被格式化的磁盘都进行类似处理之后,通过工具看到相关磁盘信息如下
恢复处理
根据ntfs的文件系统分布,我们可以知道,虽然asm disk header备份block正常,但是asm disk中间部分依旧有不少au会被破坏
这样的情况,不合适直接使用工具拷贝出来datafile(由于可能记录block的字典正好被覆盖,导致拷贝出来的文件异常,在恢复过程中我们也做了试验小文件拷贝ok,大文件拷贝然后使用dbv检测有很多坏块),我们采用工具(asm disk header 彻底损坏恢复)从底层扫描直接重组出来asm disk中的数据文件,然后结合拷贝出来的控制文件,redo文件,参数文件,然后通过重命名相关路径,然后直接open数据库
Q:\>sqlplus / as sysdba SQL*Plus: Release 11.2.0.1.0 Production on 星期三 1月 22 16:08:18 2014 Copyright (c) 1982, 2010, Oracle. All rights reserved. 连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> set pages 1000 SQL> col name for a100 SQL> set lines 150 SQL> select file#,name from v$datafile; FILE# NAME ---------- -------------------------------------------------------------------- 1 +DATA/vspdb/datafile/system.256.778520603 2 +DATA/vspdb/datafile/sysaux.257.778520603 3 +DATA/vspdb/datafile/undotbs1.258.778520603 4 +DATA/vspdb/datafile/users.259.778520603 5 +DATA/vspdb/datafile/vsp_tbs.293.779926097 ………… 147 +DATA/vspdb/datafile/index_dg.418.864665747 148 +DATA/vspdb/datafile/data_dg.419.864667053 149 +DATA/vspdb/datafile/vsp_mm_tbs.420.890410367 150 +DATA/vspdb/datafile/vsp_mm_tbs.421.890410457 SQL> select member from v$logfile; MEMBER ------------------------------------------------------------------------------------- +DATA/vspdb/onlinelog/group_7.263.862676593 +DATA/vspdb/onlinelog/group_7.262.862676601 +DATA/vspdb/onlinelog/group_4.410.862652291 +DATA/vspdb/onlinelog/group_4.411.862652307 +DATA/vspdb/onlinelog/group_5.412.862653715 +DATA/vspdb/onlinelog/group_5.413.862653727 +DATA/vspdb/onlinelog/group_6.414.862676425 +DATA/vspdb/onlinelog/group_6.415.862676433 重命名数据文件和redo文件,open数据库 SQL> recover database; 完成介质恢复。 SQL> alter database open; 数据库已更改。 已用时间: 00: 00: 04.51
由于部分block被覆盖,使用空块代替,导致数据访问到该block就会出现ora-8103(模拟普通ORA-08103并解决,模拟极端ORA-08103并解决)错误,对于该种对象,最简单处理方法就是直接通过dul抽出来数据然后truncate table重新导入数据,当然如果你想彻底安全逻辑方式重建库最靠谱
如果您遇到此类情况,无法解决请联系我们,提供专业ORACLE数据库恢复技术支持
Phone:17813235971 Q Q:107644445 E-Mail:dba@xifenfei.com
ORA-15042: ASM disk “N” is missing from group number “M” 故障恢复
接到一个朋友恢复请求,19个lun的asm 磁盘组,由于其中一个lun有问题,他们进行了增加一个新lun,删除老lun的方法操作,但是操作一半hang住了(因为坏的lun是底层损坏,无法完成rebalance),然后存储工程师继续修复异常lun,非常幸运异常lun修复好了,但是高兴过了头,直接从存储上删除了新加入的lun(已经rebalance一部分数据进去了),这个时候asm dg彻底趴下了,不能mount成功,请求恢复支持。由于某种原因,无法从lun层面恢复,只能让我们提供数据库层面恢复
Mon Sep 21 19:52:35 2015 SQL> alter diskgroup dg_XFF add disk '/dev/rhdisk116' size 716800M drop disk dg_XFF_0012 NOTE: Assigning number (1,20) to disk (/dev/rhdisk116) NOTE: requesting all-instance membership refresh for group=1 NOTE: initializing header on grp 1 disk DG_XFF_0020 NOTE: requesting all-instance disk validation for group=1 Mon Sep 21 19:52:44 2015 NOTE: skipping rediscovery for group 1/0xb94738f1 (DG_XFF) on local instance. NOTE: requesting all-instance disk validation for group=1 NOTE: skipping rediscovery for group 1/0xb94738f1 (DG_XFF) on local instance. NOTE: initiating PST update: grp = 1 Mon Sep 21 19:52:44 2015 GMON updating group 1 at 25 for pid 27, osid 12124486 NOTE: PST update grp = 1 completed successfully NOTE: membership refresh pending for group 1/0xb94738f1 (DG_XFF) GMON querying group 1 at 26 for pid 18, osid 10092734 NOTE: cache opening disk 20 of grp 1: DG_XFF_0020 path:/dev/rhdisk116 GMON querying group 1 at 27 for pid 18, osid 10092734 SUCCESS: refreshed membership for 1/0xb94738f1 (DG_XFF) Mon Sep 21 19:52:47 2015 SUCCESS: alter diskgroup dg_XFF add disk '/dev/rhdisk116' size 716800M drop disk dg_XFF_0012 NOTE: starting rebalance of group 1/0xb94738f1 (DG_XFF) at power 1 Starting background process ARB0 Mon Sep 21 19:52:47 2015 ARB0 started with pid=28, OS id=10944804 NOTE: assigning ARB0 to group 1/0xb94738f1 (DG_XFF) with 1 parallel I/O NOTE: Attempting voting file refresh on diskgroup DG_XFF Mon Sep 21 20:35:06 2015
SQL> ALTER DISKGROUP DG_XFF MOUNT /* asm agent *//* {1:51107:7083} */ NOTE: cache registered group DG_XFF number=1 incarn=0xdd6f975a NOTE: cache began mount (first) of group DG_XFF number=1 incarn=0xdd6f975a NOTE: Assigning number (1,0) to disk (/dev/rhdisk10) NOTE: Assigning number (1,1) to disk (/dev/rhdisk11) NOTE: Assigning number (1,2) to disk (/dev/rhdisk16) NOTE: Assigning number (1,3) to disk (/dev/rhdisk17) NOTE: Assigning number (1,4) to disk (/dev/rhdisk22) NOTE: Assigning number (1,5) to disk (/dev/rhdisk23) NOTE: Assigning number (1,6) to disk (/dev/rhdisk28) NOTE: Assigning number (1,7) to disk (/dev/rhdisk29) NOTE: Assigning number (1,8) to disk (/dev/rhdisk33) NOTE: Assigning number (1,9) to disk (/dev/rhdisk34) NOTE: Assigning number (1,10) to disk (/dev/rhdisk4) NOTE: Assigning number (1,11) to disk (/dev/rhdisk40) NOTE: Assigning number (1,12) to disk (/dev/rhdisk41) NOTE: Assigning number (1,13) to disk (/dev/rhdisk45) NOTE: Assigning number (1,14) to disk (/dev/rhdisk46) NOTE: Assigning number (1,15) to disk (/dev/rhdisk5) NOTE: Assigning number (1,16) to disk (/dev/rhdisk52) NOTE: Assigning number (1,17) to disk (/dev/rhdisk53) NOTE: Assigning number (1,18) to disk (/dev/rhdisk57) NOTE: Assigning number (1,19) to disk (/dev/rhdisk58) Wed Sep 30 11:08:07 2015 NOTE: start heartbeating (grp 1) GMON querying group 1 at 33 for pid 35, osid 4194488 NOTE: Assigning number (1,20) to disk () GMON querying group 1 at 34 for pid 35, osid 4194488 NOTE: cache dismounting (clean) group 1/0xDD6F975A (DG_XFF) NOTE: dbwr not being msg'd to dismount NOTE: lgwr not being msg'd to dismount NOTE: cache dismounted group 1/0xDD6F975A (DG_XFF) NOTE: cache ending mount (fail) of group DG_XFF number=1 incarn=0xdd6f975a NOTE: cache deleting context for group DG_XFF 1/0xdd6f975a GMON dismounting group 1 at 35 for pid 35, osid 4194488 NOTE: Disk in mode 0x8 marked for de-assignment NOTE: Disk in mode 0x8 marked for de-assignment NOTE: Disk in mode 0x8 marked for de-assignment NOTE: Disk in mode 0x8 marked for de-assignment NOTE: Disk in mode 0x8 marked for de-assignment NOTE: Disk in mode 0x8 marked for de-assignment NOTE: Disk in mode 0x8 marked for de-assignment NOTE: Disk in mode 0x8 marked for de-assignment NOTE: Disk in mode 0x8 marked for de-assignment NOTE: Disk in mode 0x8 marked for de-assignment NOTE: Disk in mode 0x8 marked for de-assignment NOTE: Disk in mode 0x8 marked for de-assignment NOTE: Disk in mode 0x8 marked for de-assignment NOTE: Disk in mode 0x8 marked for de-assignment NOTE: Disk in mode 0x8 marked for de-assignment NOTE: Disk in mode 0x8 marked for de-assignment NOTE: Disk in mode 0x8 marked for de-assignment NOTE: Disk in mode 0x8 marked for de-assignment NOTE: Disk in mode 0x8 marked for de-assignment NOTE: Disk in mode 0x8 marked for de-assignment NOTE: Disk in mode 0x8 marked for de-assignment ERROR: diskgroup DG_XFF was not mounted ORA-15032: not all alterations performed ORA-15040: diskgroup is incomplete ORA-15042: ASM disk "20" is missing from group number "1" ERROR: ALTER DISKGROUP DG_XFF MOUNT /* asm agent *//* {1:51107:7083} */
这里比较明显,由于存储工程师直接删除了lun,这里导致磁盘组DG_XFF丢失asm disk 20,使得磁盘组无法直接mount,由于该磁盘组已经进行了较长时间的rebalance,丢失的盘中已经有大量数据(包括元数据),因此就算修改pst让磁盘组mount起来(不一定成功),也会丢失大量数据,也不一定可以直接拿出来里面的数据,如果只是加入盘,但是由于某种原因没有做rebalance,那我们直接可以通过修改pst,使得磁盘组mount起来。因此对于这样的情况,我们能够做的,只能从底层扫描磁盘,生成数据文件(因为有部分文件的元数据在丢失lun之上,如果直接使用现存元数据信息,直接拷贝,或者unload数据都会丢失大量数据),然后再进一步unload数据,完成恢复。需要恢复磁盘信息
grp# dsk# bsize ausize disksize diskname groupname path ---- ---- ----- ------ -------- --------------- --------------- ------------- 1 0 4096 4096K 179200 DG_XFF_0000 DG_XFF /dev/rhdisk10 1 1 4096 4096K 179200 DG_XFF_0001 DG_XFF /dev/rhdisk11 1 2 4096 4096K 179200 DG_XFF_0002 DG_XFF /dev/rhdisk16 1 3 4096 4096K 179200 DG_XFF_0003 DG_XFF /dev/rhdisk17 1 4 4096 4096K 179200 DG_XFF_0004 DG_XFF /dev/rhdisk22 1 5 4096 4096K 179200 DG_XFF_0005 DG_XFF /dev/rhdisk23 1 6 4096 4096K 179200 DG_XFF_0006 DG_XFF /dev/rhdisk28 1 7 4096 4096K 179200 DG_XFF_0007 DG_XFF /dev/rhdisk29 1 8 4096 4096K 179200 DG_XFF_0008 DG_XFF /dev/rhdisk33 1 9 4096 4096K 179200 DG_XFF_0009 DG_XFF /dev/rhdisk34 1 10 4096 4096K 179200 DG_XFF_0010 DG_XFF /dev/rhdisk4 1 11 4096 4096K 179200 DG_XFF_0011 DG_XFF /dev/rhdisk40 1 12 4096 4096K 179200 DG_XFF_0012 DG_XFF /dev/rhdisk41 1 13 4096 4096K 179200 DG_XFF_0013 DG_XFF /dev/rhdisk45 1 14 4096 4096K 179200 DG_XFF_0014 DG_XFF /dev/rhdisk46 1 15 4096 4096K 179200 DG_XFF_0015 DG_XFF /dev/rhdisk5 1 16 4096 4096K 179200 DG_XFF_0016 DG_XFF /dev/rhdisk52 1 17 4096 4096K 179200 DG_XFF_0017 DG_XFF /dev/rhdisk53 1 18 4096 4096K 179200 DG_XFF_0018 DG_XFF /dev/rhdisk57 1 19 4096 4096K 179200 DG_XFF_0019 DG_XFF /dev/rhdisk58
这次运气比较好,丢失的磁盘组只是一个业务磁盘组,而且里面只有19个表空间,10个分区表,因此在数据字典完成的情况下,恢复10个分区表(一共6443个分区)的数据,整体恢复效果如下:
从整体数据量看恢复比例为:6003.26953/6027.26935*100%=99.6018127%,对于丢失了一个已经rebalance的大部分的lun,依旧能够恢复如此的数据,整体看非常理想.
如果您遇到此类情况,无法解决请联系我们,提供专业ORACLE数据库恢复技术支持
Phone:17813235971 Q Q:107644445 E-Mail:dba@xifenfei.com