当前位置: 首页 > news >正文

Oracle不完全恢复实战指南:从原理到操作详解

核心提示:当误删表、日志损坏或控制文件丢失时,Oracle的不完全恢复是DBA最后的救命稻草。掌握关键恢复技术,可在数据灾难中力挽狂澜。


一、不完全恢复核心概念

1. 核心特点
  • 必须关闭数据库:在MOUNT状态下执行重做日志恢复
  • 权限要求:以SYSDBA身份连接操作
  • 数据回溯:整个数据库回滚到指定时间点,后续数据永久丢失
2. 适用场景
  1. 重要数据被破坏(如误删表)
  2. 最小化备份测试验证
  3. 完全恢复时丢失归档日志或当前在线日志(重要考点)
  4. 误删除表空间(需使用备份控制文件)
3. 恢复类型
类型应用场景
基于时间点恢复到指定时间点前的状态
基于SCN恢复到特定SCN号前的状态
基于CANCEL恢复到归档日志/当前日志断点
使用备份控制文件误删表空间等控制文件损坏场景

二、不完全恢复通用步骤

  1. 定位错误点:使用LogMiner分析DDL/DML误操作(时间点/SCN/SQL)
  2. 备份当前库:立即执行数据库全量备份
  3. 还原旧备份:恢复错误发生前的数据文件备份
  4. 前滚恢复:应用日志至目标时间点/SCN
  5. 重置日志ALTER DATABASE OPEN RESETLOGS

三、实战案例解析

▶ 案例1:恢复误删表(基于时间点)

场景scott.t1表被误删且PURGE

-- 1. 定位删除操作
SELECT username,scn,to_char(timestamp,'yyyy-mm-dd hh24:mi:ss') time,sql_redo 
FROM v$logmnr_contents 
WHERE lower(sql_redo) LIKE 'drop table%';-- 输出结果
USERNAME SCN      TIME                SQL_REDO
SCOTT    1918000  2022-10-01 17:28:29 drop table t1 purge;-- 2. 关闭库并还原备份
SHUTDOWN ABORT;
rm *.dbf  # 删除所有数据文件
cp /u01/back1/*.dbf ./  # 还原备份-- 3. 执行时间点恢复
STARTUP MOUNT;
RECOVER DATABASE UNTIL TIME '2022-10-01 17:28:29';
AUTO  # 自动应用日志-- 4. 重置日志打开
ALTER DATABASE OPEN RESETLOGS;
▶ 案例2:当前日志损坏恢复

场景redo01.log被删除导致崩溃

-- 1. 尝试完全恢复(失败)
RECOVER DATABASE; -- 2. 执行不完全恢复
RECOVER DATABASE UNTIL CANCEL;
CANCEL  # 手动终止恢复-- 3. 重置日志打开
ALTER DATABASE OPEN RESETLOGS;

四、备份控制文件恢复(核心难点)

▶ 案例1:控制文件+数据文件损坏

场景:表空间abcd数据文件丢失且控制文件损坏

-- 1. 还原备份文件
cp /u01/back/*.dbf ./  # 数据文件
cp con.bak1 control*.ctl  # 控制文件-- 2. 重建丢失的数据文件
STARTUP;
ALTER DATABASE CREATE DATAFILE '/u01/oradata/prod/abcd01.dbf';-- 3. 使用备份控制文件恢复
RECOVER DATABASE USING BACKUP CONTROLFILE;
输入日志路径:/u01/oradata/prod/redo03.log  # 手动指定当前日志-- 4. 重置打开
ALTER DATABASE OPEN RESETLOGS;
▶ 案例2:新增表空间后的控制文件恢复

场景:备份控制文件后新建表空间ceshi

-- 1. 启动时发现文件不匹配
STARTUP;
ORA-01589: 必须使用RESETLOGS或NORESETLOGS打开-- 2. 恢复时出现未命名文件
RECOVER DATABASE USING BACKUP CONTROLFILE;
ORA-01244: 未命名数据文件被添加到控制文件-- 3. 重建并重命名数据文件
ALTER DATABASE CREATE DATAFILE '/u01/oracle/dbs/UNNAMED00003' 
AS '/u01/oradata/prod/ceshi01.dbf';  # 关键命令!-- 4. 完成恢复并打开
RECOVER DATABASE USING BACKUP CONTROLFILE;
ALTER DATABASE OPEN RESETLOGS;

五、关键技术总结

  1. LogMiner精准定位

    EXECUTE dbms_logmnr_d.build('dict.ora','/logmnr_dir',dbms_logmnr_d.store_in_flat_file);
    EXECUTE dbms_logmnr.add_logfile('/arch/arch_1_111.log',options=>dbms_logmnr.NEW);
    
  2. 控制文件恢复核心命令

    RECOVER DATABASE USING BACKUP CONTROLFILE;  # 必须配合RESETLOGS
    
  3. 数据文件重建技巧

    ALTER DATABASE CREATE DATAFILE '损坏文件路径' AS '新路径'; 
    -- 同时完成物理文件创建和控制文件更新
    

重要警示:不完全恢复后务必用RESETLOGS方式打开数据库,此时会重置日志序列(可通过SELECT * FROM v$log验证)。此操作不可逆,需立即执行全量备份!

http://www.dtcms.com/a/297962.html

相关文章:

  • OpenCV 图像变换全解析:从镜像翻转到仿射变换的实践指南
  • Undertow 可观测性最佳实践
  • 医疗器械:DFEMA和PFEMA
  • 【嵌入式汇编基础】-ARM架构基础(二)
  • 锁相环技术简介(面向储能变流器应用)
  • 从Taro的Dialog.open出发,学习远程控制组件之【事件驱动】
  • Langchain学习——PromptTemplate
  • Class21卷积层的多输入通道和多输出通道
  • 基于纳米流体强化的切割液性能提升与晶圆 TTV 均匀性控制
  • 轻量级音乐元数据编辑器Metadata Remote
  • [NPUCTF2020]ReadlezPHP
  • iOS —— 天气预报仿写总结
  • SQL164 2021年11月每天新用户的次日留存率
  • ReAct Agent(LangGraph实现)
  • 去除视频字幕 2, 使用 PaddleOCR 选取图片中的字幕区域, 根据像素大小 + 形状轮廓
  • MCP 与传统集成方案深度对决:REST API、GraphQL、gRPC 全方位技术解析
  • react 内置hooks 详细使用场景,使用案例
  • 轮盘赌算法
  • Python爬虫实战:研究Talon相关技术构建电商爬虫系统
  • ZLMediaKit 源代码入门
  • Java排序算法之<选择排序>
  • IT领域需要“落霞归雁”思维框架的好处
  • 熵与交叉熵:从信息论到机器学习的「不确定性」密码
  • Jmeter的元件使用介绍:(四)前置处理器详解
  • 告别静态文档!Oracle交互式技术架构图让数据库学习“活“起来
  • 多步相移小记
  • epoll_event数据结构及使用案例详解
  • springboot(3.4.8)整合mybatis
  • 分布式方案 一 分布式锁的四大实现方式
  • android app适配Android 15可以在Android studio自带的模拟器上进行吗,还是说必须在真机上进行