暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

RMAN备份恢复典型案例——快速检查数据库一致性

原创 Digital Observer 2025-02-14
46

作者:Digital Observer(施嘉伟)
Oracle ACE Pro: Database
PostgreSQL ACE Partner
11年数据库行业经验,现主要从事数据库服务工作
拥有Oracle OCM、DB2 10.1 Fundamentals、MySQL 8.0 OCP、WebLogic 12c OCA、KCP、PCTP、PCSD、PGCM、OCI、PolarDB技术专家、达梦师资认证、数据安全咨询高级等认证
ITPUB认证专家、PolarDB开源社区技术顾问、HaloDB技术顾问、TiDB社区技术布道师、青学会MOP技术社区专家顾问、国内某高校企业实践指导教师
公众号/墨天轮:Digital Observer;CSDN/PGfans:施嘉伟;ITPUB:sjw1933

1. 案例背景

很多时候,我们需要通过rman备份恢复的形式去创建生产数据库的测试库,那么在测试库打开之前我们要确认最小恢复量是多少?执行RESTORE/RECOVER后,我们需要快速验证确保数据库是一致的,并准备OPEN RESETLOGS。
对于冷/离线备份,不需要归档日志/恢复。可以顺利使用resetlogs打开数据库。但是,对于HOT / ONLINE备份,必须先应用从备份开始到备份结束的所有归档日志,然后才能打开数据库。

2. 具体步骤

检查一:检查点时间和Fuzziness
目的:确认数据库文件都恢复到预期时间点(PIT)并且他们是一致性(FUZZY=NO)。

SQL> select fuzzy, status, error, recover, checkpoint_change#, checkpoint_time, count(*) from v$datafile_header group by fuzzy, status, error, recover, checkpoint_change#, checkpoint_time ;
FUZ STATUS  ERROR           REC CHECKPOINT_CHANGE# CHECKPOINT_TIME        COUNT(*)
--- ------- --------------- --- ------------------ -------------------- ----------
NO  ONLINE                                 5311260 31-AUG-2011 23:10:14          6
YES ONLINE                                 5311260 31-AUG-2011 23:10:14          1

a)确认checkpoint_time / checkpoint_change#与预期的UNTIL TIME / SCN一致。如果不一致且有更多可用的归档日志,请进一步恢复数据库。
b)如果一些数据文件FUZZY=YES,这意味着我们进一步的恢复
检查二:数据文件状态
目的:确认需要recover的文件不是offline状态

SQL> select status, enabled, count(*) from v$datafile group by status, enabled ;
STATUS  ENABLED      COUNT(*)
------- ---------- ----------
SYSTEM  DISABLED            1
ONLINE  READ WRITE          4
RECOVER DISABLED            2

检查三:Fuzzy
目的: Fuzzy检查
有时,对于所有恢复的数据文件,可以看到Fuzzy = NO和相同的checkpoint_change#,但OPEN RESETLOGS仍然失败。例如以下信息:

SQL> select fuzzy, status, error, recover, checkpoint_change#, checkpoint_time, count(*) from v$datafile_header group by fuzzy, status, error, recover, checkpoint_change#, checkpoint_time ;
FUZ STATUS  ERROR           REC CHECKPOINT_CHANGE#      CHECKPOINT_TIME   COUNT(*)
--- ------- --------------- --- ------------------ -------------------- ----------
NO  ONLINE                                 5311260 31-AUG-2011 23:10:14          7
SQL> ALTER DATABASE OPEN RESETLOGS ;
ORA-01194: file 4 needs more recovery to be consistent
ORA-01110: data file 3: '/<path>/undotbs02.dbf'

因此我们要执行附加的fuzzy检查:
image.png
那什么情形下可以通过检查?
a)以上查询没有返回结果
b) Min_PIT_SCN 的返回值小于 Checkpoint_Change#
真实案例如下:

select hxfil file#, substr(hxfnm, 1, 50) name, fhscn checkpoint_change#, fhafs Absolute_Fuzzy_SCN, max(fhafs) over () Min_PIT_SCN from x$kcvfh where fhafs!=0 ;

image.png

查询最小一致性scn,recover即可解决

recover database untile scn 82419715478

3. 案例总结

以上操作都检查完毕后一般就可以顺利打开数据库,不过在打开过程中我们需要关注数据库alert日志,确认没有额外的报错,比如临时表空间问题。
hhh6.jpg

最后修改时间:2025-02-18 14:04:35
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论