如何在asm数据库上做手工备份恢复
发布网友
发布时间:2022-04-11 10:17
我来回答
共1个回答
热心网友
时间:2022-04-11 11:47
具体步骤:
1. 从以往的操作日志中, 找到asm磁盘标签,跟具体的partition的对应关系. 如DATAVOL1 对应'/dev/emcpowera1'等.
root用户的history中,可能存在这些信息.(个人建议,还是自己平常存一份这样的日志).
2. 备份需要修复的文件头, 以/dev/oracleasm/disks/DATAVOL24为例
dd if=/dev/oracleasm/disks/DATAVOL24 bs=4096 count=102400 of=/tmp/DATAVOL24.TXT
(备份是为了以防万一,还需要用到原来的状态).
用kfed这个工具去读一个正常(没有损坏的文件头), 你可以清楚的知道 每个Oracle的ASM AU大小1M, 一个block是4096bytes(4KB), 一个AU有256这样
的block.
详细的命令,你可以参考itpub的帖子-->
下面贴一段asm disk header的内容
kfed read /dev/oracleasm/disks/DATAVOL1 (此命令等于kfed read /dev/oracleasm/disks/DATAVOL1 aunum=0 blkn=0)
kfbh.endian: 1 ; 0x000: 0x01
kfbh.hard: 130 ; 0x001: 0x82kfbh.type: 1 ; 0x002: KFBTYP_DISKHEAD
kfbh.datfmt: 1 ; 0x003: 0x01
kfbh.block.blk: 0 ; 0x004: T=0 NUMB=0x0
kfbh.block.obj: 2147483648 ; 0x008: TYPE=0x8 NUMB=0x0
kfbh.check: 3064160095 ; 0x00c: 0xb6a35f5f
kfbh.fcn.base: 31569924 ; 0x010: 0x01e1b804
kfbh.fcn.wrap: 0 ; 0x014: 0x00000000
kfbh.spare1: 0 ; 0x018: 0x00000000
kfbh.spare2: 0 ; 0x01c: 0x00000000
kfdhdb.driver.provstr: ORCLDISKDATAVOL1 ; 0x000: length=16
kfdhdb.driver.reserved[0]: 1096040772 ; 0x008: 0x41544144
kfdhdb.driver.reserved[1]: 827084630 ; 0x00c: 0x314c4f56
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
kfdhdb.compat: 186646528 ; 0x020: 0x0b200000
kfdhdb.dsknum: 0 ; 0x024: 0x0000
kfdhdb.grptyp: 1 ; 0x026: KFDGTP_EXTERNAL
kfdhdb.hdrsts: 3 ; 0x027: KFDHDR_MEMBER
kfdhdb.dskname: RACDB_DATA_0000 ; 0x028: length=15
kfdhdb.grpname: RACDB_DATA ; 0x048: length=10
kfdhdb.fgname: RACDB_DATA_0000 ; 0x068: length=15
kfdhdb.capname: ; 0x088: length=0
kfdhdb.crestmp.hi: 32952973 ; 0x0a8: HOUR=0xd DAYS=0x14 MNTH=0x4 YEAR=0x7db
kfdhdb.crestmp.lo: 2723721216 ; 0x0ac: USEC=0x0 MSEC=0x22c SECS=0x25 MINS=0x28
kfdhdb.mntstmp.hi: 32957163 ; 0x0b0: HOUR=0xb DAYS=0x17 MNTH=0x8 YEAR=0x7db
kfdhdb.mntstmp.lo: 3257819136 ; 0x0b4: USEC=0x0 MSEC=0x398 SECS=0x22 MINS=0x30
kfdhdb.secsize: 512 ; 0x0b8: 0x0200
kfdhdb.blksize: 4096 ; 0x0ba: 0x1000
kfdhdb.ausize: 1048576 ; 0x0bc: 0x00100000
kfdhdb.mfact: 113792 ; 0x0c0: 0x0001bc80
kfdhdb.dsksize: 97660 ; 0x0c4: 0x00017d7c
kfdhdb.pmcnt: 2 ; 0x0c8: 0x00000002
kfdhdb.fstlocn: 1 ; 0x0cc: 0x00000001
kfdhdb.altlocn: 2 ; 0x0d0: 0x00000002
kfdhdb.f1b1locn: 2 ; 0x0d4: 0x00000002
kfdhdb.redomirrors[0]: 0 ; 0x0d8: 0x0000
kfdhdb.redomirrors[1]: 65535 ; 0x0da: 0xffff
kfdhdb.redomirrors[2]: 65535 ; 0x0dc: 0xffff
kfdhdb.redomirrors[3]: 65535 ; 0x0de: 0xffff
kfdhdb.dbcompat: 168820736 ; 0x0e0: 0x0a100000
kfdhdb.grpstmp.hi: 32952973 ; 0x0e4: HOUR=0xd DAYS=0x14 MNTH=0x4 YEAR=0x7db
kfdhdb.grpstmp.lo: 2723542016 ; 0x0e8: USEC=0x0 MSEC=0x17d SECS=0x25 MINS=0x28