1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > asm disk header 彻底损坏恢复

asm disk header 彻底损坏恢复

时间:2022-10-19 23:21:51

相关推荐

asm disk header 彻底损坏恢复

数据库|mysql教程

asm,disk,header,彻底,损坏,恢复,asm,磁

数据库-mysql教程

螃蟹网站源码,ubuntu系统好用不,爬虫监控怎么删除,php shuzuc,js实现seolzw

在asm 磁盘组不能mount的情况下,如果是磁盘头的少数部分损坏,或者是asm disk header存在,可以通过kfed修复,或者使用备份的磁盘头信息去恢复从而实现磁盘组mount来恢复数据库.如果没有备份也无法修复可以尝试使用amdu,dul来实现对不能mount的磁盘组进行恢复.

网站手机模板源码,ubuntu怎么卸载干净,tomcat环境变量原因,信息爬虫技术,北京php分销平台源码,开发 seolzw

mom指标源码,ubuntu 从光驱启动,单片机连接Tomcat,爬虫运行方式,php编写登录界面,自学seo找工作seo公司lzw

在asm 磁盘组不能mount的情况下,如果是磁盘头的少数部分损坏,或者是asm disk header存在,可以通过kfed修复,或者使用备份的磁盘头信息去恢复从而实现磁盘组mount来恢复数据库.如果没有备份也无法修复可以尝试使用amdu,dul来实现对不能mount的磁盘组进行恢复.在极端情况下(比如磁盘组完全丢失),amdu/dul都无论为力的情况下,可以考虑使用扫描磁盘找出来datafile 的方法求救数据的最后稻草.本实验大概的模拟了asm disk 前10M完全损坏的情况下数据库恢复

测试准备

创建新表空间,创建T_XIFENFEI测试表

SQL> create tablespace xifenfei datafile +XIFENFEI SIZE 50m;Tablespace created.SQL> CREATE TABLE T_XIFENFEI TABLESPACE XIFENFEI 2 AS SELECT * FROM DBA_OBJECTS;Table created.SQL> SELECT COUNT(*) FROM T_XIFENFEI; COUNT(*)----------50031SQL> select ts#,rfile#,bytes/1024/1024,blocks,name from v$datafile; TS#RFILE# BYTES/1024/1024BLOCKS NAME---------- ---------- --------------- ---------- -------------------------------------------------- 01 48061440 +XIFENFEI/asm10g/datafile/system.256.845260203 12 25 3200 +XIFENFEI/asm10g/datafile/undotbs1.258.845260205 23 25032000 +XIFENFEI/asm10g/datafile/sysaux.257.845260203 445 640 +XIFENFEI/asm10g/datafile/users.259.845260205 65 50 6400 +XIFENFEI/asm10g/datafile/xifenfei.266.845262139SQL> select GROUP_NUMBER,DISK_NUMBER,STATE,TOTAL_MB,FREE_MB,NAME,path from v$asm_disk;GROUP_NUMBER DISK_NUMBER STATETOTAL_MB FREE_MB NAME PATH------------ ----------- -------- ---------- ---------- -------------------- ------------------ 1 0 NORMAL 20480 XIFENFEI_0000 /dev/raw/raw1 1 1 NORMAL7840 XIFENFEI_0001 /dev/raw/raw2 1 2 NORMAL 70590 XIFENFEI_0002 /dev/raw/raw3--关闭数据库SQL> shutdown immediate;Database closed.Database dismounted.ORACLE instance shut down.--关闭ASMSQL> shutdown immediateASM diskgroups dismountedASM instance shutdown

查看裸设备对应磁盘

[oracle@xifenfei dul]$ more /etc/sysconfig/rawdevices/dev/raw/raw1 /dev/sdc/dev/raw/raw2 /dev/sdd1/dev/raw/raw3 /dev/sdd2

dd磁盘头

dd asm disk 前面10M,彻底破坏asm disk

[oracle@xifenfei ~]$ dd if=/dev/zero of=/dev/raw/raw1 bs=1M count=10 conv=notrunc 10+0 records in10+0 records out10485760 bytes (10 MB) copied, 0.175424 seconds, 59.8 MB/s[oracle@xifenfei ~]$ dd if=/dev/zero of=/dev/raw/raw2 bs=1M count=10 conv=notrunc 10+0 records in10+0 records out10485760 bytes (10 MB) copied, 0.11584 seconds, 90.5 MB/s[oracle@xifenfei ~]$ dd if=/dev/zero of=/dev/raw/raw3 bs=1M count=10 conv=notrunc 10+0 records in10+0 records out10485760 bytes (10 MB) copied, 0.353435 seconds, 29.7 MB/s

kfed查看磁盘

确定所有asm disk header完全被破坏

[oracle@xifenfei dul]$ kfed read /dev/raw/raw1kfbh.endian:0 ; 0x000: 0x00kfbh.hard: 0 ; 0x001: 0x00kfbh.type: 0 ; 0x002: KFBTYP_INVALIDkfbh.datfmt:0 ; 0x003: 0x00kfbh.block.blk: 0 ; 0x004: T=0 NUMB=0x0kfbh.block.obj: 0 ; 0x008: TYPE=0x0 NUMB=0x0kfbh.check: 0 ; 0x00c: 0x00000000kfbh.fcn.base: 0 ; 0x010: 0x00000000kfbh.fcn.wrap: 0 ; 0x014: 0x00000000kfbh.spare1:0 ; 0x018: 0x00000000kfbh.spare2:0 ; 0x01c: 0x00000000[oracle@xifenfei dul]$ kfed read /dev/raw/raw2kfbh.endian:0 ; 0x000: 0x00kfbh.hard: 0 ; 0x001: 0x00kfbh.type: 0 ; 0x002: KFBTYP_INVALIDkfbh.datfmt:0 ; 0x003: 0x00kfbh.block.blk: 0 ; 0x004: T=0 NUMB=0x0kfbh.block.obj: 0 ; 0x008: TYPE=0x0 NUMB=0x0kfbh.check: 0 ; 0x00c: 0x00000000kfbh.fcn.base: 0 ; 0x010: 0x00000000kfbh.fcn.wrap: 0 ; 0x014: 0x00000000kfbh.spare1:0 ; 0x018: 0x00000000kfbh.spare2:0 ; 0x01c: 0x00000000[oracle@xifenfei dul]$ kfed read /dev/raw/raw3kfbh.endian:0 ; 0x000: 0x00kfbh.hard: 0 ; 0x001: 0x00kfbh.type: 0 ; 0x002: KFBTYP_INVALIDkfbh.datfmt:0 ; 0x003: 0x00kfbh.block.blk: 0 ; 0x004: T=0 NUMB=0x0kfbh.block.obj: 0 ; 0x008: TYPE=0x0 NUMB=0x0kfbh.check: 0 ; 0x00c: 0x00000000kfbh.fcn.base: 0 ; 0x010: 0x00000000kfbh.fcn.wrap: 0 ; 0x014: 0x00000000kfbh.spare1:0 ; 0x018: 0x00000000kfbh.spare2:0 ; 0x01c: 0x00000000

amdu查看asm 磁盘

[oracle@xifenfei ~]$ amdu -diskstring /dev/raw/raw*amdu__04_18_23_17_17/[oracle@xifenfei ~]$ cd amdu__04_18_23_17_17[oracle@xifenfei amdu__04_18_23_17_17]$ lsreport.txt[oracle@xifenfei amdu__04_18_23_17_17]$ more report.txt -*-amdu-*-…………--------------------------------- Operations ---------------------------------------------------------------- Disk Selection ------------------------------- -diskstring /dev/raw/raw*------------------------------ Reading Control -------------------------------------------------------------- Output Control -------------------------------********************************* DISCOVERY **********************************----------------------------- DISK REPORT N0001 ------------------------------Disk Path: /dev/raw/raw1 Unique Disk ID:Disk Label:Physical Sector Size: 512 bytesDisk Size: 65536 megabytes** NOT A VALID ASM DISK HEADER. BAD VALUE IN FIELD blksize_kfdhdb **----------------------------- DISK REPORT N0002 ------------------------------Disk Path: /dev/raw/raw2 Unique Disk ID:Disk Label:Physical Sector Size: 512 bytesDisk Size: 65536 megabytes** NOT A VALID ASM DISK HEADER. BAD VALUE IN FIELD blksize_kfdhdb **----------------------------- DISK REPORT N0003 ------------------------------Disk Path: /dev/raw/raw3 Unique Disk ID:Disk Label:Physical Sector Size: 512 bytesDisk Size: 65536 megabytes** NOT A VALID ASM DISK HEADER. BAD VALUE IN FIELD blksize_kfdhdb ********************************* END OF REPORT ********************************

通过这里证明,当asm disk header 损坏严重之时,amdu无法识别,更加无法恢复相关数据库

dul查看完全损坏asm disk header

测试在asm disk header完全损坏情况下,dul是否还能够实现asm磁盘组中抽取数据,同理amdu也无法正常工作.

[oracle@xifenfei dul]$ ./dulData UnLoader: 10.2.0.5.28 - Internal Only - on Sat Apr 19 04:02:02 with 64-bit io functionsCopyright (c) 1994 Bernard van Duijnen All rights reserved. Strictly Oracle Internal Use OnlyDUL: Warning: block 0 is not a disk header blockDUL: Error: Block is not in useDUL: Error: Block type mismatch ( seen 0 expect 1) when parsing block 0 of disk /dev/raw/raw1DUL: Warning: block 0 is not a disk header blockDUL: Error: Block is not in useDUL: Error: Block type mismatch ( seen 0 expect 1) when parsing block 0 of disk /dev/raw/raw2DUL: Warning: block 0 is not a disk header blockDUL: Error: Block is not in useDUL: Error: Block type mismatch ( seen 0 expect 1) when parsing block 0 of disk /dev/raw/raw3

这里可以看出来,当asm disk header完全异常,dul也无法识别出来asm磁盘组(该情况下dul无法正常操作)

通过工具扫描磁盘抽取数据块

CPFL> scan disk /dev/raw/raw1Scanning disk /dev/raw/raw1, at -04-19 04:05:11Completed disk /dev/raw/raw1, at -04-19 04:05:56CPFL> scan disk /dev/raw/raw1Scanning disk /dev/raw/raw1, at -04-19 04:05:56Completed disk /dev/raw/raw1, at -04-19 04:06:15CPFL> scan disk /dev/raw/raw1Scanning disk /dev/raw/raw1, at -04-19 04:06:15Completed disk /dev/raw/raw1, at -04-19 04:07:44CPFL> list datafiles Tablespace: SYSTEM File: 1 Blocks:61440 Tablespace: UNDOTBS1 File: 2 Blocks: 3200 Tablespace: SYSAUX File: 3 Blocks:32000 Tablespace: USERSFile: 4 Blocks: 640 Tablespace: XIFENFEI File: 5 Blocks: 6400 CPFL> copy datafile 1 to /u01/oracle/oradata/datafile/1.dbfcopy datafile start: -04-19 04:10:35copy datafile 1 have blocks 61440copy datafile completed: -04-19 04:11:18CPFL> copy datafile 2 to /u01/oracle/oradata/datafile/2.dbfcopy datafile start: -04-19 04:11:52copy datafile 2 have blocks 3200copy datafile completed: -04-19 04:11:54CPFL> copy datafile 3 to /u01/oracle/oradata/datafile/3.dbfcopy datafile start: -04-19 04:12:03copy datafile 3 have blocks 32000copy datafile completed: -04-19 04:12:27CPFL> copy datafile 4 to /u01/oracle/oradata/datafile/4.dbfcopy datafile start: -04-19 04:13:07copy datafile 4 have blocks 640copy datafile completed: -04-19 04:13:08CPFL> copy datafile 5 to /u01/oracle/oradata/datafile/5.dbfcopy datafile start: -04-19 04:13:18copy datafile 5 have blocks 6400copy datafile completed: -04-19 04:13:19

查看使用工具抽取数据文件

[oracle@xifenfei datafile]$ ls -ltotal 830320-rw-r--r-- 1 oracle oinstall 503324672 Apr 19 04:34 1.dbf-rw-r--r-- 1 oracle oinstall 26222592 Apr 19 04:34 2.dbf-rw-r--r-- 1 oracle oinstall 262152192 Apr 19 04:34 3.dbf-rw-r--r-- 1 oracle oinstall 5251072 Apr 19 04:34 4.dbf-rw-r--r-- 1 oracle oinstall 52436992 Apr 19 04:34 5.dbf

dul验证抽取文件

[oracle@xifenfei dul]$ ./dulData UnLoader: 10.2.0.5.28 - Internal Only - on Sat Apr 19 06:56:09 with 64-bit io functionsCopyright (c) 1994 Bernard van Duijnen All rights reserved. Strictly Oracle Internal Use OnlyDUL: Warning: Recreating file "dul.log"Found db_id = 181793355Found db_name = ASM10GDUL> show datafiles;ts# rf# start blocks offs open err file name 0 10 61440 0 1 0 /u01/oracle/oradata/datafile/1.dbf 1 203200 0 1 0 /u01/oracle/oradata/datafile/2.dbf 2 30 32000 0 1 0 /u01/oracle/oradata/datafile/3.dbf 4 40640 0 1 0 /u01/oracle/oradata/datafile/4.dbf 6 506400 0 1 0 /u01/oracle/oradata/datafile/5.dbfDUL> bootstrap;Probing file = 1, block = 377. unloading tableBOOTSTRAP$DUL: Warning: block number is non zero but marked deferred trying to process it anyhow57 rows unloadedDUL: Warning: Dictionary cache DC_BOOTSTRAP is emptyReading BOOTSTRAP.dat 57 entries loadedParsing Bootstrap$ contentsDUL: Warning: Recreating file "dict.ddl"Generating dict.ddl for version 10 OBJ$: segobjno 18, file 1 block 121 TAB$: segobjno 2, tabno 1, file 1 block 25 COL$: segobjno 2, tabno 5, file 1 block 25 USER$: segobjno 10, tabno 1, file 1 block 89Running generated file "@dict.ddl" to unload the dictionary tables. unloading tableOBJ$ 51171 rows unloaded. unloading tableTAB$ 1576 rows unloaded. unloading tableCOL$ 55264 rows unloaded. unloading tableUSER$59 rows unloadedReading USER.dat 59 entries loadedReading OBJ.dat 51171 entries loaded and sorted 51171 entriesReading TAB.dat 1576 entries loadedReading COL.dat 55264 entries loaded and sorted 55264 entriesReading BOOTSTRAP.dat 57 entries loadedDUL: Warning: Recreating file "dict.ddl"Generating dict.ddl for version 10 OBJ$: segobjno 18, file 1 block 121 TAB$: segobjno 2, tabno 1, file 1 block 25 COL$: segobjno 2, tabno 5, file 1 block 25 USER$: segobjno 10, tabno 1, file 1 block 89 TABPART$: segobjno 266, file 1 block 2121 INDPART$: segobjno 271, file 1 block 2161 TABCOMPART$: segobjno 288, file 1 block 2297 INDCOMPART$: segobjno 293, file 1 block 2345 TABSUBPART$: segobjno 278, file 1 block 2217 INDSUBPART$: segobjno 283, file 1 block 2257 IND$: segobjno 2, tabno 3, file 1 block 25 ICOL$: segobjno 2, tabno 4, file 1 block 25 LOB$: segobjno 2, tabno 6, file 1 block 25 COLTYPE$: segobjno 2, tabno 7, file 1 block 25 TYPE$: segobjno 181, tabno 1, file 1 block 1297 COLLECTION$: segobjno 181, tabno 2, file 1 block 1297 ATTRIBUTE$: segobjno 181, tabno 3, file 1 block 1297 LOBFRAG$: segobjno 299, file 1 block 2393 LOBCOMPPART$: segobjno 302, file 1 block 2425 UNDO$: segobjno 15, file 1 block 105 TS$: segobjno 6, tabno 2, file 1 block 57 PROPS$: segobjno 96, file 1 block 721Running generated file "@dict.ddl" to unload the dictionary tables. unloading tableOBJ$DUL: Warning: Recreating file "OBJ.ctl" 51171 rows unloaded. unloading tableTAB$DUL: Warning: Recreating file "TAB.ctl" 1576 rows unloaded. unloading tableCOL$DUL: Warning: Recreating file "COL.ctl" 55264 rows unloaded. unloading tableUSER$DUL: Warning: Recreating file "USER.ctl"59 rows unloaded. unloading table TABPART$72 rows unloaded. unloading table INDPART$80 rows unloaded. unloading tableTABCOMPART$ 0 rows unloaded. unloading tableINDCOMPART$ 0 rows unloaded. unloading tableTABSUBPART$ 0 rows unloaded. unloading tableINDSUBPART$ 0 rows unloaded. unloading tableIND$ 2231 rows unloaded. unloading tableICOL$ 3650 rows unloaded. unloading tableLOB$530 rows unloaded. unloading table COLTYPE$ 1701 rows unloaded. unloading tableTYPE$ 1945 rows unloaded. unloading tableCOLLECTION$555 rows unloaded. unloading tableATTRIBUTE$ 7275 rows unloaded. unloading table LOBFRAG$ 1 row unloaded. unloading table LOBCOMPPART$ 0 rows unloaded. unloading tableUNDO$21 rows unloaded. unloading table TS$ 7 rows unloaded. unloading table PROPS$28 rows unloadedReading USER.dat 59 entries loadedReading OBJ.dat 51171 entries loaded and sorted 51171 entriesReading TAB.dat 1576 entries loadedReading COL.dat 55264 entries loaded and sorted 55264 entriesReading TABPART.dat 72 entries loaded and sorted 72 entriesReading TABCOMPART.dat 0 entries loaded and sorted 0 entriesReading TABSUBPART.dat 0 entries loaded and sorted 0 entriesReading INDPART.dat 80 entries loaded and sorted 80 entriesReading INDCOMPART.dat 0 entries loaded and sorted 0 entriesReading INDSUBPART.dat 0 entries loaded and sorted 0 entriesReading IND.dat 2231 entries loadedReading LOB.dat 530 entries loadedReading ICOL.dat 3650 entries loadedReading COLTYPE.dat 1701 entries loadedReading TYPE.dat 1945 entries loadedReading ATTRIBUTE.dat 7275 entries loadedReading COLLECTION.dat 555 entries loadedReading BOOTSTRAP.dat 57 entries loadedReading LOBFRAG.dat 1 entries loaded and sorted 1 entriesReading LOBCOMPPART.dat 0 entries loaded and sorted 0 entriesReading UNDO.dat 21 entries loadedReading TS.dat 7 entries loadedReading PROPS.dat 28 entries loadedDatabase character set is ZHS16GBKDatabase national character set is AL16UTF16DUL> unload table sys.t_xifenfei;. unloading tableT_XIFENFEI 50031 rows unloaded

通过这里可以发现,我们创建测试数据为50031条,dul读取抽取出来数据文件中对应表数据条数也为50031条;证明:在asm disk header完全损坏情况下,amdu,dul无法直接恢复asm里面数据库,但是可以通过工具扫描数据文件,找出来磁盘中的datafile block实现完整恢复数据[只要你的asm中的数据没有覆盖,都可以通过该方法恢复]

如果你在使用这些思路进行恢复遇到突发情况不能自行解决,请联系我们(ORACLE数据库恢复技术支持),将为您提供专业数据库技术支持:

Phone:13429648788 Q Q:107644445E-Mail:dba@

使用 dul 挖数据文件初试dul 10支持oracle 11g r2DUL10直接支持ORACLE 8.0dul支持ORACLE 12C CDB数据库恢复dul恢复truncate表测试dul处理分区表使用asm disk header 自动备份信息恢复异常asm disk headerDUL挖ORACLE 8.0数据库

原文地址:asm disk header 彻底损坏恢复, 感谢原作者分享。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。