您在这里:首页 > 学员专区 > 技术文章
Oracle视频
Oracle
CUUG课程

找回ASM中数据文件

 


很多时候由于asm不能正常启动,导致数据丢失。下面提供两种方法找回asm中的数据文件

一.使用AMDU工具

AMDU是Oracle 11g里自带的一个免费的工具,用于分析ASM磁盘组的元数据以及从不能mount的磁盘组中往外抽取数据文件“NOTE:553639.1 Placeholder for AMDU binaries and using with ASM 10g”明确指出:AMDU也可用于10g,并提供了可用于10g的AMDU的各个操作系统的版本供大家下载。

1.设置LD_LIBRARY_PATH

rac1-> export LD_LIBRARY_PATH=/tmp/amdu

2.查看asm磁盘信息

rac1-> ./amdu -diskstring '/dev/raw/raw*'

amdu_2012_03_05_03_17_19/

rac1-> cd amdu_2012_03_05_03_17_19/

rac1-> ls

report.txt

rac1-> more report.txt

-*-amdu-*-

******************************* AMDU Settings ********************************

ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1

System name:    Linux

Node name:      rac1

Release:        2.6.9-89.0.0.0.1.ELhugemem

Version:        #1 SMP Tue May 19 04:38:38 EDT 2009

Machine:        i686

amdu run:       05-MAR-12 03:17:19

Endianess:      1

--------------------------------- Operations ---------------------------------

------------------------------- Disk Selection -------------------------------

 -diskstring '/dev/raw/raw*'

------------------------------ Reading Control -------------------------------

------------------------------- Output Control -------------------------------

********************************* DISCOVERY **********************************

----------------------------- DISK REPORT N0001 ------------------------------

                Disk Path: /dev/raw/raw23

           Unique Disk ID:

               Disk Label:

     Physical Sector Size: 512 bytes

                Disk Size: 156 megabytes

** NOT A VALID ASM DISK HEADER. BAD VALUE IN FIELD blksize_kfdhdb **

----------------------------- DISK REPORT N0002 ------------------------------

                Disk Path: /dev/raw/raw11

           Unique Disk ID:

               Disk Label:

     Physical Sector Size: 512 bytes

                Disk Size: 156 megabytes

** NOT A VALID ASM DISK HEADER. BAD VALUE IN FIELD blksize_kfdhdb **

----------------------------- DISK REPORT N0003 ------------------------------

                Disk Path: /dev/raw/raw32

           Unique Disk ID:

               Disk Label:

     Physical Sector Size: 512 bytes

                Disk Size: 156 megabytes

** NOT A VALID ASM DISK HEADER. BAD VALUE IN FIELD blksize_kfdhdb **

----------------------------- DISK REPORT N0004 ------------------------------

                Disk Path: /dev/raw/raw31

           Unique Disk ID:

               Disk Label:

     Physical Sector Size: 512 bytes

                Disk Size: 156 megabytes

** NOT A VALID ASM DISK HEADER. BAD VALUE IN FIELD blksize_kfdhdb **

----------------------------- DISK REPORT N0005 ------------------------------

                Disk Path: /dev/raw/raw12

           Unique Disk ID:

               Disk Label:

     Physical Sector Size: 512 bytes

                Disk Size: 156 megabytes

** NOT A VALID ASM DISK HEADER. BAD VALUE IN FIELD blksize_kfdhdb **

----------------------------- DISK REPORT N0006 ------------------------------

                Disk Path: /dev/raw/raw2

           Unique Disk ID:

               Disk Label:

     Physical Sector Size: 512 bytes

                Disk Size: 1976 megabytes

               Group Name: DATA

                Disk Name: DATA_0001

       Failure Group Name: DATA_0001

              Disk Number: 1

            Header Status: 3

       Disk Creation Time: 2012/03/01 22:32:39.289000

          Last Mount Time: 2012/03/05 02:10:02.771000

    Compatibility Version: 0x0a100000

         Disk Sector Size: 512 bytes

         Disk size in AUs: 1976 AUs

         Group Redundancy: 1

      Metadata Block Size: 4096 bytes

                  AU Size: 1048576 bytes

                   Stride: 113792 AUs

      Group Creation Time: 2012/03/01 22:32:39.221000

  File 1 Block 1 location: AU 0

----------------------------- DISK REPORT N0007 ------------------------------

                Disk Path: /dev/raw/raw1

           Unique Disk ID:

               Disk Label:

     Physical Sector Size: 512 bytes

                Disk Size: 3137 megabytes

               Group Name: DATA

                Disk Name: DATA_0000

       Failure Group Name: DATA_0000

              Disk Number: 0

            Header Status: 3

       Disk Creation Time: 2012/03/01 22:32:39.289000

          Last Mount Time: 2012/03/05 02:10:02.771000

    Compatibility Version: 0x0a100000

         Disk Sector Size: 512 bytes

         Disk size in AUs: 3137 AUs

         Group Redundancy: 1

      Metadata Block Size: 4096 bytes

                  AU Size: 1048576 bytes

                   Stride: 113792 AUs

      Group Creation Time: 2012/03/01 22:32:39.221000

  File 1 Block 1 location: AU 2

******************************* END OF REPORT ********************************

从这里可以得到信息如下:

1)只有/dev/raw/raw1和raw2是有效的asm磁盘

2)磁盘组只有DATA

 

3.找出数据文件信息

rac1-> ../amdu -diskstring '/dev/raw/raw*'  -dump 'DATA'

amdu_2012_03_05_03_19_38/

rac1-> cd amdu_2012_03_05_03_19_38/

rac1-> ls

DATA_0001.img  DATA.map  report.txt

rac1-> strings DATA_0001.img |grep DATAFILE

DATAFILE

DATAFILE

DATAFILE

DEVDB/DATAFILE/SYSTEM.256.776817753

DEVDB/DATAFILE/SYSAUX.257.776817753

DEVDB/DATAFILE/UNDOTBS1.258.776817753

DEVDB/DATAFILE/USERS.259.776817753

DEVDB/DATAFILE/UNDOTBS2.267.776817909

从这里可以得出数据文件的file号(第一位数字)

 

4.恢复数据文件

rac1-> ../../amdu -diskstring '/dev/raw/raw*' -extract 'DATA.259'

amdu_2012_03_05_03_27_21/

rac1-> cd amdu_2012_03_05_03_27_21/

rac1-> ls -l

total 5148

-rw-r--r--  1 oracle oinstall 5251072 Mar  5 03:27 DATA_259.f

-rw-r--r--  1 oracle oinstall    6468 Mar  5 03:27 report.txt

rac1-> dbv file=DATA_259.f

DBVERIFY: Release 10.2.0.1.0 - Production on Mon Mar 5 03:28:00 2012

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

DBVERIFY - Verification starting : FILE = DATA_259.f

DBVERIFY - Verification complete

Total Pages Examined         : 640

Total Pages Processed (Data) : 15

Total Pages Failing   (Data) : 0

Total Pages Processed (Index): 2

Total Pages Failing   (Index): 0

Total Pages Processed (Other): 26

Total Pages Processed (Seg)  : 0

Total Pages Failing   (Seg)  : 0

Total Pages Empty            : 597

Total Pages Marked Corrupt   : 0

Total Pages Influx           : 0

Highest block SCN            : 442362 (0.442362)

二.使用aulasm工具

1.配置ASM使用磁盘

[root@rac1 oracle]# more disk

/dev/sdb1

/dev/sdb2

2.使用aulasm

[root@rac1 oracle]# ./aulasm_linux32_trial.bin

AUL : AnySQL UnLoader(MyDUL) for Oracle ASM, release 2.0.0

(C) Copyright Lou Fangxin 2011-2012 (AnySQL.net), all rights reserved.

ASM> help

  SET        -- set options (BLOCK_SIZE, AU_SIZE, F1B1_DISK, F1B1_AU)

  OPEN       -- open data file

  ADD        -- add disk with customized disk num (disk, path)

  LIST       -- list opened disks information (to)

  LSAU       -- list file of given AU (disk, au, count)

  FILE       -- list all file entries in ASM (file, [disk, au, block]).

  ALIAS      -- list all alias entries in ASM (file, [disk, au, block]).

  EXTENT     -- list or adjust variable extent (level, au, count).

  FMAP       -- list file extent (file, [disk, au, block], to)

  DUMP       -- dump file extent (file, [disk, au, block], offset, to)

  COPY       -- copy file to os  (file, [disk, au, block], to)

  QUIT/EXIT  -- exit the program.

ASM> open disk

2012-03-05 03:32:48

2012-03-05 03:32:48

ASM> list

2012-03-05 03:32:49

Total Disks = 2, ausize=1048576, blksize=4096

 disk     size block disk name        disk group   disk path

===== ======== ===== ================ ============ ========================

    0     3137  4096 DATA_0000        DATA         /dev/sdb1

    1     1976  4096 DATA_0001        DATA         /dev/sdb2

f1b1disk = 0, f1b1au = 2, score=256, compat=0x0a100000

file=(1,0,2,1), disk=(2,0,2,2), alias=(6,0,2,6)

2012-03-05 03:32:49

ASM> alias

2012-03-05 03:33:15

    file          inc parent fstblk flag  refer alias

======== ============ ====== ====== ==== ====== ==========================

      -1           -1      0      0    4      1 DEVDB

      -1           -1      0      1    4      2 DATAFILE

      -1           -1      0      1    4      3 CONTROLFILE

      -1           -1      0      1    4      4 ONLINELOG

      -1           -1      0      1    4      5 TEMPFILE

      -1           -1      0      1    4      6 PARAMETERFILE

      -1           -1      0      1    4      7 ARCHIVELOG

     256    776817753      1      2   18     -1 SYSTEM

     257    776817753      1      2   18     -1 SYSAUX

     258    776817753      1      2   18     -1 UNDOTBS1

     259    776817753      1      2   18     -1 USERS

     267    776817909      1      2   18     -1 UNDOTBS2

     261    776817829      1      3   18     -1 Current

     260    776817829      1      3   18     -1 Current

     262    776817833      1      4   18     -1 group_1

     263    776817835      1      4   18     -1 group_1

     264    776817837      1      4   18     -1 group_2

     265    776817841      1      4   18     -1 group_2

     268    776818011      1      4   18     -1 group_3

     269    776818013      1      4   18     -1 group_3

     270    776818015      1      4   18     -1 group_4

     271    776818017      1      4   18     -1 group_4

     266    776817859      1      5   18     -1 TEMP

     272    776818021      1      6   18     -1 spfile

      -1           -1      1      7    4      8 2012_03_01

      -1           -1      1      7    4      9 2012_03_03

      -1           -1      1      7    4     10 2012_03_05

     273    776818747      7      8   18     -1 thread_1_seq_2

     274    776819571      7      8   18     -1 thread_1_seq_3

     275    776819721      7      8   18     -1 thread_2_seq_1

     276    776820331      7      8   18     -1 thread_1_seq_4

     277    776992321      7      9   18     -1 thread_1_seq_5

     278    776992321      7      9   18     -1 thread_2_seq_2

     279    777089437      7     10   18     -1 thread_1_seq_6

2012-03-05 03:33:15

ASM> fmap file 259

2012-03-05 03:34:49

fid=259, disk=0, au=56, block=3

siz=5, ecnt=6, eeof=6, flags=17, type=12, alias=109,-1

     extid  disk       auid  cnt flg chk

========== ===== ========== ==== === ===

         1     0        428    1   0 135

         2     1        408    1   0 178

         3     0        429    1   0 134

         4     1        409    1   0 179

         5     0        430    1   0 133

         6     1        410    1   0 176

2012-03-05 03:34:49

ASM> copy file 259 to user_259

2012-03-05 03:35:01

2012-03-05 03:35:01

[root@rac1 oracle]# ll

total 6252

-rwxr-xr-x  1 root   root       84619 Mar  6  2012 aulasm_linux32_trial.bin

-rw-r--r--  1 root   root          20 Mar  5 02:52 disk

-rw-r--r--  1 root   root     6291456 Mar  5 03:35 user_259

[root@rac1 oracle]# su - oracle

rac1-> dbv file=user_259 

DBVERIFY: Release 10.2.0.1.0 - Production on Mon Mar 5 03:35:27 2012

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

DBVERIFY - Verification starting : FILE = user_259

DBVERIFY - Verification complete

Total Pages Examined         : 640

Total Pages Processed (Data) : 15

Total Pages Failing   (Data) : 0

Total Pages Processed (Index): 2

Total Pages Failing   (Index): 0

Total Pages Processed (Other): 26

Total Pages Processed (Seg)  : 0

Total Pages Failing   (Seg)  : 0

Total Pages Empty            : 597

Total Pages Marked Corrupt   : 0

Total Pages Influx           : 0

Highest block SCN            : 442362 (0.442362)

通过dbv验证,两个数据文件(文件大小有出入,可能在对待未格式化数据块上,两者处理有出入)可以基本上确定一致,证明两种方法都可以从异常的ASM中获取数据文件

 

三.总结与比较

1.AMDU完全免费,aulasm超过16块硬盘需要收费

2.AMDU操作相对于aulasm麻烦一点,但是整体还是可以接受

3.获取到asm中的数据文件后恢复数据内容或者open库,那都是容易的事情

 

 


(以上内容摘于网络,如有侵权,请告之,将第一时间删除)

相关文章 [上一篇] ASM DISK HEADER 备份与恢复
010-88589926(88587026)
CUUG热门培训课程
Oracle DBA就业培训
CUUG名师
网络课程
技术沙龙
最新动态

总机:(010)-88589926,88589826,88587026 QQ讨论群:243729577 182441349 邮箱:cuug_bj@cuug.com
通信地址:北京市海淀区紫竹院路98号北京化工大学科技园609室(CUUG)邮政编码:100089 
中国UNIX用户协会 Copyright 2010  ALL Rights Reserved 北京神脑资讯技术有限公司
京ICP备11008061号  京公网安备110108006275号