数据库管理-第310期 坏块修复的小坑(20250405)

来源:这里教程网 时间:2026-03-03 21:48:34 作者:

数据库管理-第310期 坏块修复的小坑(20250405)

作者:胖头鱼的鱼缸(尹海文)
Oracle ACE Pro: Database
PostgreSQL ACE Partner
10年数据库行业经验
拥有OCM 11g/12c/19c、MySQL 8.0 OCP、Exadata、CDP等认证
墨天轮MVP,ITPUB认证专家
圈内拥有“总监”称号,非著 名社恐(社交恐怖分子)
公众号:胖头鱼的鱼缸
CSDN:胖头鱼的鱼缸(尹海文)
墨天轮:胖头鱼的鱼缸
ITPUB:yhw1809。
除授权转载并标明出处外,均为“非法”抄袭

胖头鱼的鱼缸_01.png 经过一天一夜的搏斗,最终排查出有90个文件有坏块需要修复,综合下来有接近3000个坏块需要修复,只能在判断完有坏块的数据文件后,多开几个终端进行dbv然后用Excel拼接出命令执行。在操作过程中还是发现一些小坑,这里做个扩展。

1 validate database

在rman中使用validate database后,不会像EM的备份日志那样有个统一地方展示有坏块的数据文件,而备份因发现有坏块数据文件后会中止备份导致文件检查不全,可以通过下面的方式记录validate database的结果:

cat > check_datafile.sh <<EOX
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
export ORACLE_SID=sid
export PATH=$ORACLE_HOME/bin:$PATH
rman target / <<EOF
validate database;
exit;
EOF
EOX
chmod +x ./check_datafile.sh
./check_datafile.sh >check_datafile_`date +%F_%T`.log
grep FAILED check_datafile_xxxx-xx-xx_xx:xx:xx.log|wc -l

image.png 这样可以简单查看有多少个有坏块的数据文件,然后再在文件中找到对应文件详细信息用dbv检查即可。

2 dbv

在使用dbv的过程中会输出文件编号和块编号: image.png 但是在实际操作中发现这里输出的文件编号不一定是正确的,可以用两种方式找到正确的文件编号:一是通过上面validate database生成的日志检查对应文件的文件编号;另一种方式可以通过下面语句查找:

select file#,name from v$datafile where name='/path/to/file';

通过正确的文件标号来执行blockrecover。

3 反响

其实以前我这边数据库被硬件维护那边吐槽最多的就是:

  • 占用了较多的高性能物理机
  • 占用了最多的高性能存储
  • 占用了最多的备份空间
  • 占用了较多的跨IDC网络带宽
  • 当本次故障发生处理完成后,硬件维护那边的态度发生了极大转变:

  • 还好有备库
  • 还好有备份
  • 占了那么大空间是值得的
  • 毕竟数据库是业务运行的基础。

    总结

    完成所有坏块修复,并反馈一些期间遇到一些小坑坑。

    老规矩,知道写了些啥。

  • 相关推荐