Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

0

积分

0

好友

0

主题
1#
发表于 2011-12-30 11:38:40 | 查看: 9505| 回复: 11
前天客户机房掉电,重启后,ASM磁盘组在check all的时候产生报错信息,磁盘组可以mount,但是数据库实例只可以mount无法open;alert_asm.log里在执行alter diskgroup data check all的时候产生报错信息:如下:

alert_+ASM2.log
SQL> alter diskgroup data check all
Fri Dec 30 09:52:09 2011
NOTE: starting check of diskgroup DATA
WARNING: cache read a corrupted block gn=1 fn=260 indblk=7 from disk 1
NOTE: a corrupted block was dumped to the trace file
WARNING: cache read a corrupted block gn=1 fn=260 indblk=7 from disk 1
NOTE: a corrupted block was dumped to the trace file
WARNING: cache read a corrupted block gn=1 fn=260 indblk=7 from disk 1
NOTE: a corrupted block was dumped to the trace file
WARNING: cache read a corrupted block gn=1 fn=260 indblk=7 from disk 1
NOTE: a corrupted block was dumped to the trace file
WARNING: cache read a corrupted block gn=1 fn=260 indblk=7 from disk 1
NOTE: a corrupted block was dumped to the trace file
WARNING: cache read a corrupted block gn=1 fn=260 indblk=7 from disk 1
NOTE: a corrupted block was dumped to the trace file
WARNING: cache read a corrupted block gn=1 fn=260 indblk=7 from disk 1
NOTE: a corrupted block was dumped to the trace file
WARNING: cache read a corrupted block gn=1 fn=260 indblk=7 from disk 1
NOTE: a corrupted block was dumped to the trace file
WARNING: cache read a corrupted block gn=1 fn=260 indblk=7 from disk 1
NOTE: a corrupted block was dumped to the trace file
ERROR: cache failed to read fn=260  indblk=0 from disk(s): 1
ORA-15196: invalid ASM block header [kfc.c:8033] [blk_kfbl] [260] [2147483655] [2147483879 != 2147483655]
System State dumped to trace file /u01/app/oracle/admin/+ASM/udump/+asm2_ora_18302.trc
NOTE: cache initiating offline of disk 1  group 1
WARNING: offlining disk 1.2520004629 (DATA_0001) with mask 0x3
NOTE: PST update: grp = 1, dsk = 1, mode = 0x6

18302.trc:

WARNING: cache read a corrupted block gn=1 fn=260 indblk=7 from disk 1
OSM metadata block dump:
kfbh.endian:                          1 ; 0x000: 0x01
kfbh.hard:                          130 ; 0x001: 0x82
kfbh.type:                           12 ; 0x002: KFBTYP_INDIRECT
kfbh.datfmt:                          1 ; 0x003: 0x01
kfbh.block.blk:              2147483879 ; 0x004: T=1 NUMB=0xe7
kfbh.block.obj:                     260 ; 0x008: TYPE=0x0 NUMB=0x104
kfbh.check:                  2166209699 ; 0x00c: 0x811dbca3
kfbh.fcn.base:                     3613 ; 0x010: 0x00000e1d
kfbh.fcn.wrap:                        0 ; 0x014: 0x00000000
kfbh.spare1:                          0 ; 0x018: 0x00000000
kfbh.spare2:                          0 ; 0x01c: 0x00000000
kffixb.dxsn:                      12636 ; 0x000: 0x0000315c
kffixb.xtntblk:                       0 ; 0x004: 0x0000
kffixb.dXrs:                         17 ; 0x006: SCHE=0x1 NUMB=0x1
kffixb.ub1spare:                      0 ; 0x007: 0x00
kffixb.ub4spare:                      0 ; 0x008: 0x00000000
kffixe[0].xptr.au:           4294967295 ; 0x00c: 0xffffffff

如何来修改这个块的相关metadata信息?谢谢各位!!
环境:redhat 5.2
oracle 10.2.0.4 rac+asm
ASM磁盘为外部冗余!
2#
发表于 2011-12-30 11:54:50
select path from v$asm_disk;

dd if=/dev/xxx of=xxx bs=4096 count=1

回复 只看该作者 道具 举报

3#
发表于 2011-12-30 12:34:38
您说的是关于disk header报错后的修复方式!报错信息显示的是关于block header的报错信息!谢谢!!
需要用BBED修复ASM?哪位老大指点指点!谢谢!

回复 只看该作者 道具 举报

4#
发表于 2011-12-30 13:31:29
哦,不是盘头啊,我错了

回复 只看该作者 道具 举报

5#
发表于 2011-12-30 13:39:23
alter diskgroup oradata check all repair ??

回复 只看该作者 道具 举报

6#
发表于 2011-12-30 18:14:31
WARNING: cache read a corrupted block gn=1 fn=260 indblk=7 from disk 1


Group number=1 file number=260  disk number=1

跑一下


select s.name, a.BLOCKS, a.block_size, a.REDUNDANCY, a.STRIPED, a.type
  from v$asm_file a, v$asm_alias s
where a.GROUP_NUMBER = s.GROUP_NUMBER
   and a.FILE_NUMBER = s.FILE_NUMBER
   and a.group_number = 1
   and a.file_number = 260;

回复 只看该作者 道具 举报

7#
发表于 2011-12-30 20:19:08
怎么样了?解决了没~

回复 只看该作者 道具 举报

8#
发表于 2011-12-31 09:17:47
原帖由 武汉-SSH 于 2011-12-30 13:39 发表
alter diskgroup oradata check all repair ??


执行check all repair是同样的报错信息!

回复 只看该作者 道具 举报

9#
发表于 2011-12-31 09:33:49
原帖由 maclean 于 2011-12-30 18:14 发表
WARNING: cache read a corrupted block gn=1 fn=260 indblk=7 from disk 1


Group number=1 file number=260  disk number=1

跑一下


select s.name, a.BLOCKS, a.block_size, a.REDUNDANCY, a.STRIPED, a.type
...




SQL> select s.name, a.BLOCKS, a.block_size, a.REDUNDANCY, a.STRIPED, a.type
  2    from v$asm_file a, v$asm_alias s
  3  where a.GROUP_NUMBER = s.GROUP_NUMBER
  4     and a.FILE_NUMBER = s.FILE_NUMBER
  5     and a.group_number = 1
  6     and a.file_number = 260;
NAME
--------------------------------------------------------------------------------
    BLOCKS BLOCK_SIZE REDUNDANCY   STRIPED
---------- ---------- ------------ ------------
TYPE
--------------------------------------------------------------------------------
UNDOTBS1.260.727093353
    102401       8192 UNPROT       COARSE
DATAFILE

回复 只看该作者 道具 举报

10#
发表于 2011-12-31 12:21:13
UNDOTBS1.260.727093353 存在讹误块的是UNDO 表空间的数据文件UNDOTBS1.260.727093353

Action Plan:

1.  尝试重启数据库实例, 可能引发一些ORA-600错误 4000之类的, 上传告警日志 和600 的trace文件

2.  

startup mount 后
利用脚本验证数据库是否有其他坏块  《利用RMAN检测数据库坏块的脚本》 http://www.oracledatabase12g.com ... orrupted-block.html


3.  若有备份和归档可用,那么 尝试恢复undo表空间

4. 没有 备份的情况下 , 使用特殊手段打开数据库

回复 只看该作者 道具 举报

11#
发表于 2011-12-31 12:31:16
如果是数据损坏的话,DB应该也有日志,难道楼主没看DB的日志?

我已开始还以为这个问题必需要在ASM层面解决呢。

回复 只看该作者 道具 举报

12#
发表于 2011-12-31 13:48:51
ASM metadata的block header在做check all的时候存在报错信息!数据库咋open的时候当然也有其他的报错,controlfile和datafile之类的!我是想学习下用KFED来处理ASM block header的报错信息!!
谢谢两位,我还是从备份恢复吧!谢谢!

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-12-23 20:25 , Processed in 0.055766 second(s), 22 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569