linux磁盘hang住,存储坏道造成数据库hang住

一、现象描述:

在测试环境HP-UX 11.2平台上oracle 10.2.0.4,突然数据库hang住,使用SQLPLUS登入,登入界面hang住,没有显示任何出错信息,无法访问bdump下目录,使得不能读取alert.log日志文件。

二、分析:

1、最先怀疑是操作系统问题,机器重启后,问题依然存在

2、查看系统日志,出现如下错误

vmunix: SCSI: Write error -- dev: b 31 0x1b6300, errno: 126, resid: 8192

3、使用exportvg和importvg后发现,原先的用于数据库数据文件的逻辑卷全部变成了lvol??的卷组名。

4、初步诊断是EMC DMX800存储盘出问题,反馈厂家检查,发现同一个RAID5磁盘组中的两个磁盘出现了坏道。

5、需要对数据库重新进行迁移到新的磁盘。

三、数据库迁移

1、mount 文件系统(包含udump等目录)出现如下错误

$ mount /dev/xxxxx/lvol1 /home/xxxx

system error "UX:vxfs mount: ERROR: V-3-21268: /dev/xxxxx/lvol1 is

corrupted. needs checking"

2、修复该文件系统

$fsck -F vxfs -o full, nolog /dev/xxxxxx/lvol1

$mount /dev/xxxxx/lvol1 /home/xxxx

3、因为lv的卷名已发生了变化,需要通过strings命令查看lv信息,确认逻辑卷是否可读,并定位该逻辑卷名可能属于的数据库表空间

4、先恢复控制文件,导出控制文件信息,读取控制文件中数据文件信息

SQL>alter database backup controlfile to trace

5、将每个数据文件中的逻辑卷硬dd命令拷贝到新的磁盘中所创建的lv

dd  if=/dev/xxxx/rlvolxx  f=/dev/xxx/rnewxxlv bs=4k

6、dd完成后,重新按照控制文件中数据文件所指定的目录进行ln -s命令操作

7、重新打开数据库成功

四、其他

在查看alert.log文件中发现数据库损坏前出现如下错误:

ORA-00494: enqueue [CF] held for too long (more than 900 seconds) by 'inst 1,

osid 7789'

该问题解决可参看metelink 779552.1

从文档中知道与 和Bug 7914003相关,解决办法如下:

1、If you want to avoid the kill of the blocker

(background or

non-background process) you can set

_kill_controlfile_enqueue_blocker=false.

2、In order to prevent a background blocker from being killed, you can

set the following init.ora parameter to 1 (default is 3).

_kill_enqueue_blocker=1

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/354732/viewspace-621579/,如需转载,请注明出处,否则将追究法律责任。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值