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

异机用 LogMiner 挖掘归档日志:实践要点与最小化恢复思路

作者:Digital Observer(施嘉伟)
Oracle ACE Pro
PostgreSQL ACE Partner
Oracle OCM、KCM、PGCM、DB2 、MySQL OCP、PCTP、PCSD、OCI、PolarDB技术专家、达梦师资认证,从业11年+
ITPUB认证专家、崖山YVP、PolarDB开源社区技术顾问、HaloDB技术顾问、TiDB社区技术布道师、青学会MOP技术社区专家顾问、国内某高校企业实践指导教师
公众号/墨天轮/金仓社区/IF Club:Digital Observer;CSDN/PGfans:施嘉伟;ITPUB:sjw1933

背景描述

在面对归档日志分析或误操作取证时,异机挖掘是一种既安全又高效的方案:不扰动生产端,又能还原业务变更轨迹。实践中应关注两类工作流——纯挖掘(仅解析归档日志)挖掘辅以最小化恢复(恢复 SYSTEM/SYSAUX/UNDO 以开库)。关键准备包括:在源库开启补充日志或生成字典文件、确保归档日志序列完整、并把归档日志与字典文件安全复制到分析机。
在分析机上,用 LogMiner 加载字典并按序列加载归档日志后,就能通过 V$LOGMNR_CONTENTS 等视图解析出 DML/DDL。要注意字典的两种常见方式:写入 redo(便携)或导出为平面文件(显式拷贝)。若缺少某段序列,会导致解析中断,因此提前校验归档序列完整性是常态化操作。

当遇到不能完整恢复数据库但又必须“看到”业务变更时,可采取最小化恢复策略:仅恢复控制文件、SYSTEM、SYSAUX、UNDO,打开库(resetlogs),此时业务表空间可以离线,通过 LogMiner 在打开的库或分析机上解析并导出相关 DML,再在目标业务库重放或用脚本回放。RMAN 报错如 “no backup of archived log … found” 通常提示归档文件缺失,需要在备份介质或归档存储中补回对应序列,或从备份目录执行 catalog/restore。

常见排查要点:

核对归档序列与 SCN 范围、确认字典是否匹配(相同点时间点的字典)、确保控制文件备份可用、在恢复路径上使用 catalog 命令注册离线归档与备份集。异机挖掘不是替代完整备份恢复的手段,而是高价值的“取证与补救”工具:能为误删回滚、审计取证和业务补偿提供明确的 SQL 与时间线,配合 RMAN 的最小化恢复策略,能在最短风险暴露窗口内最大化地恢复业务可见性与可操作性。

一、最小化恢复数据文件

需要恢复的文件有:
system表空间
sysaux表空间
undo表空间

恢复备份片的时候报错:

rman备份后恢复不了

我在suse下进行rman备份,然后恢复数据,但是恢复不了了,出现个问题,请各位大哥帮忙解决下

RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 08/19/2010 15:40:01
RMAN-06026: some targets not found - aborting restore
RMAN-06025: no backup of archived log for thread 1 with sequence 972 and starting SCN of 41534693 found to restore
RMAN-06025: no backup of archived log for thread 1 with sequence 971 and starting SCN of 41511124 found to restore
RMAN-06025: no backup of archived log for thread 1 with sequence 970 and starting SCN of 41475694 found to restore

解决方法

指定恢复restrore数据库文件:
1、 rman target / ----startup mount;
2、 restore controlfile from '/xxx/xxctl.bak'
3、alter database mount;
4、offline所有数据文件
5、resstore datafile 1;
   resstore datafile 2;
   resstore datafile 3;
6、recover database skip forever tablespace TBS_EA_BUSI,TBS_EA_BUSI_IDX,TBS_EA_CGYW,TBS_EA_CGYW_HIST,TBS_EA_CGYW_HIST_IDX,....;
7、alter database open resetlogs;

二、用 LogMiner 加载字典

下面给出常用的示例命令(代码段供直接使用或参考):

在源库准备字典(示例)

-- 写入 redo 日志字典(便于携带) BEGIN DBMS_LOGMNR_D.BUILD(OPTIONS => DBMS_LOGMNR_D.STORE_IN_REDO_LOGS); END; / -- 或生成平面字典文件 BEGIN DBMS_LOGMNR_D.BUILD( DICTFILENAME => '/u01/dict/logmnr_dict.ora', OPTIONS => DBMS_LOGMNR_D.STORE_IN_FLAT_FILE); END; /

拷贝归档与字典到分析机(示例)

scp /archive/ARCH_1_970.arc analyst:/data/logs/ scp /u01/dict/logmnr_dict.ora analyst:/data/dict/

在分析机启动 LogMiner(示例)

EXEC DBMS_LOGMNR.ADD_LOGFILE(LOGFILENAME => '/data/logs/ARCH_1_970.arc', OPTIONS => DBMS_LOGMNR.NEW); EXEC DBMS_LOGMNR.ADD_LOGFILE(LOGFILENAME => '/data/logs/ARCH_1_971.arc', OPTIONS => DBMS_LOGMNR.ADDFILE); EXEC DBMS_LOGMNR.START_LOGMNR(DICTFILENAME => '/data/dict/logmnr_dict.ora'); SELECT OPERATION, SQL_REDO FROM V$LOGMNR_CONTENTS WHERE ...;

结语

LogMiner 异机挖掘归档日志,不仅是一种常见的审计和分析手段,更是应急场景下的重要补救措施。通过合理规划字典生成方式、确保归档日志的完整性,再结合 RMAN 的最小化恢复策略,我们就能在数据库出现问题时,快速还原出关键业务操作的轨迹。它并不能替代系统化的备份与恢复体系,但却能在危机时刻,帮助我们更快定位问题、重放数据和恢复业务连续性。对于运维人员而言,熟练掌握 LogMiner 的异机挖掘技巧,无疑是一种必备的核心能力。
hhh7.jpg

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

评论