Oracle—数据恢复

news2024/11/15 4:42:56

文档结构

  • 1、恢复原理
    • 1.1、recyclebin(回收站)
      • 相关操作
  • 2、恢复场景
    • 2.1、定义删除
    • 2.2、记录删除
      • 2.2.1、undo恢复
      • 2.2.2、redo恢复
      • 2.2.3、dbms_logmnr

场景:在 Oracle数据库使用过程中,误删对象或误删记录的情况时有发生;这种情况下通过技术手段可以将对象的状态和数据恢复到删除前的某个时刻;

建议:技术手段的恢复毕竟是有限的,为了降低类似的误操作还是要通过规范的流程和定期的备份来规避,就像是车技再好的车手也不该经常在悬崖边漂移,否则可能都来不及说再见!


1、恢复原理

Oracle数据库提供了多种方式可以将数据库或对象或记录恢复到某个时间节点;
1)undo文件
说明:undo文件的数据有空间大小限制,数据库按照循环写的方式类使用,可恢复的数据也限于短时间内的操作;

2)redo日志
说明:redo日志因为有空间大小限制,和 undo文件数据类似,是循环写数据,所以可以恢复的数据时间跨度不会很大,一般只限于很短的时间内的操作;

3)archived redo(归档日志)
说明:归档日志是将online redo日志固化为文件存储下来,会占用不小的服务器空间;

4)rman备份

5)recyclebin(回收站)

1.1、recyclebin(回收站)

从ORACLE 10g开始,引入了一个叫回收站(RecycleBin)的概念,全称为Tablespace Recycle Bin。回收站实际是一个逻辑区域,它以表空间中现有已经分配的空间为基础,而不是从表空间上物理划出一个固定区域用作回收站。这意味着回收站和表空间中的对象共用存储区域、系统没有给回收站预留空间。

当表被DROP后,如果可用空间充足,并且没有对回收站进行清理,那么被DROP掉的对象会一直存在回收站中,仍然会占用空间。但是如果可用空间紧张的情况下,数据库会根据先进先出的顺序覆盖Recycle Bin中的对象。所以回收站机制也不是百分百的保险机制。另外从原理上来说它就是一个数据字典表,放置用户Drop掉的数据库对象信息。

相关操作

  • 参数状态
SQL> 
SQL> show parameter recyclebin;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
recyclebin                           string      on

SQL> 

或者

select t.NAME, t.VALUE, t.DISPLAY_VALUE
  from v$parameter t
 where t.NAME = 'recyclebin';

---输出
   	NAME	VALUE	DISPLAY_VALUE
1	recyclebin	on	on

  • 开启关闭
    回收站的开启和关闭可以按照时效分为会话级别和系统级别;

1)会话级别

---session
alter session set recyclebin=on/off;

2)系统级别

---system
alter system set recyclebin=on/off;
  • 对象查找
    涉及的系统表或视图有
    A:RECYCLEBIN(指向 USER_RECYCLEBIN的同义词)
    B:USER_RECYCLEBIN
    C:DBA_RECYCLEBIN
---query_sql
select owner,
       object_name,
       original_name,
       operation,
       type,
       ts_name,
       createtime,
       droptime,
       dropscn,
       partition_name,
       can_undrop,
       can_purge,
       related,
       base_object,
       purge_object,
       space
  from DBA_RECYCLEBIN t
 where t.owner = '&username'
 order by t.createtime desc;

2、恢复场景

2.1、定义删除

对于对象被误删除定义的场景,只能依靠回收站来恢复;需要确定回收站处于开启状态,且在 dba_recyclebin 里可以查到相应记录;

执行恢复操作

flashback table ${schema_name.object_name} to before drop;

对于被恢复定义的对象,索引和主键等名称处于乱码状态,需要重建;

2.2、记录删除

对象数据被误删除在没有开启归档且没有 RMAN 备份的情况下,可以依靠 Undo 数据或者 Redo 数据来恢复;

2.2.1、undo恢复

通过闪回查询确定删除前的记录:

select * from ${schema_name.object_name} as of timestamp to_timestamp('2020-07-26 17:00:50','yyyy-mm-dd hh24:mi:ss') where 1=1 and ${query_condition};

闪回操作:

flashback table ${schema_name.object_name} to timestamp to_timestamp('2020-07-26 17:00:50','yyyy-mm-dd hh24:mi:ss');

说明:这类操作需要确保 undo被删除前的数据没有被覆盖,如果执行flashback操作报错 ora-01555,则相应的回滚段数据已经被覆盖;此时这种方式已经无法恢复数据,或者只能恢复一部分;

2.2.2、redo恢复

该类恢复方式需要依赖到redo日志文件,需要确保redo文件内容没有被覆盖;

step_1:select * from v$logfile t;
在这里插入图片描述
step_2:登录数据库服务器

sqlplus '/as sysdba'
exec dbms_logmnr.add_logfile('/data/zxcp/redo05.log',options=>dbms_logmnr.new);
exec dbms_logmnr.add_logfile('/data/zxcp/redo06.log', dbms_logmnr.ADDFILE);
exec dbms_logmnr.start_logmnr(options=>dbms_logmnr.dict_from_online_catalog);

create table log_recover as select * from v$logmnr_contents;

select to_char(timestamp,'yyyy-mm-dd hh24:mi:ss'),sql_redo,sql_undo from log_recover  where username='xxxx' and table_name='xxxx';

---最后执行
exec dbms_logmnr.end_logmnr();

此处 sql_redo里的dml语句是当时执行的删除语句,sql_undo里的语句是对应恢复的dml语句;可以将 sql_undo 里的语句存储为动态语句循环执行;

注意:此种方式对于 lob 字段,值内容很长的,可能最终恢复的数据 lob 列的值部分记录为空;因为对于 lob 字段,数据不直接存储在表里;

2.2.3、dbms_logmnr

  • dbms_logmnr.start_logmnr
begin
  -- Call the procedure
  sys.dbms_logmnr.start_logmnr(startScn => :startScn,
                               endScn => :endScn,
                               startTime => :startTime,
                               endTime => :endTime,
                               DictFileName => :DictFileName,
                               Options => :Options);
end;

说明:该方法有如上几个参数,在进行redo日志文件分析时,可以加 scn号的限制或时间戳的限制;

============================================== over ================================================

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/505545.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

07- 算法解读 Faster_R-CNN (目标检测)

要点: Faster_R-CNN RPN Fast R-CNN GitHub地址:vision/torchvision/models/detection at main pytorch/vision GitHub 三 Faster_R-CNN Faster R-CNN 是作者 Ross Girshick 继 Fast R-CNN 后的又一力作。同样使用 VGG16 作为网络的 backbone &am…

Windows 10 安装安卓子系统 WSA(Magisk/KernelSU)使用 WSA 工具箱安装 APK

from https://blog.zhjh.top/archives/XokySA7Rc1pkVvnxAEP5E 前提是系统为 Windows 10 22H2 10.0.19045.2311 或更高版本,尽量新。 步骤 使用 WSAPatch 和 MagiskOnWSALocal 安装 WSA 在 Microsoft Store 中安装 Ubuntu LTS(或你喜欢的发行版&#xf…

Linux的进程

目录 一、进程占用的内存资源 二、进程的系统环境 三、进程一直在切换 四、父进程和子进程 五、进程状态 六、查看进程 1.ps -ef 列出所有进程 2.ps -lax 列出所有进程 3.ps aux列出所有进程 4.树形列出所有进程 七、作业(用来查看管理进程) …

windows环境安装运行kafka

一、配置java环境变量 1、下载安装包 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 2、添加系统变量:JAVA_HOMED:\Program Files (x86)\Java\jdk1.8.0_144 二、安装zooKeeper 1、 下载安装包 http://zookeeper.apache.…

【Java笔试强训 34】

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 一、选择题 二、编程题 🔥收件人列…

eks实践案例

Eks: ami-0c23197c88296c1b5 eks集群: 拉面 - 知乎 https://blog.csdn.net/saynaihe/category_12204222.html 什么是 Amazon EKS? - Amazon EKS kubectl 使用指南 https://zhuanlan.zhihu.com/p/364994610 k8s HPA自动伸缩 手把手教你 K8…

centOS7忘记登录密码该如何重新修改登录密码

文章目录 前言一、重新修改登录密码1.1、第一步1.2、第二步1.3、第三步1.4、第四步1.5、第五步1.6、第六步1.7、第七步1.8、第八步 前言 忘记密码并不可怕,只要学会方法,密码随时都可以找回。 一、重新修改登录密码 1.1、第一步 当打开centOS7之后忘记…

flutter系列之:做一个修改组件属性的动画

文章目录 简介flutter中的动画widgetAnimatedContainers使用举例总结 简介 什么是动画呢?动画实际上就是不同的图片连续起来形成的。flutter为我们提供了一个AnimationController来对动画进行详尽的控制,不过直接是用AnimationController是比较复杂的&a…

Colab使用教程(自己胡乱弄了半天,发现不行,还是得学一下)

文章目录 在google云盘中创建笔记本,并红设置笔记本的运行环境常见设置挂载云硬盘更改工作目录移动训练数据防止断链设置方法一、控制台设置方法二、安装Colab Alive 训练结果保存到硬盘中相关链接 在google云盘中创建笔记本,并红 云盘链接,…

K公司项目文件管理系统的分析与设计_kaic

摘 要 2020年的新冠疫情促进了线上办公市场的发展,加快了企业进入全面数字化时代的脚步。办公自动化是当今的大趋势,越来越多的企业采用电子文档的形式存储内外部资料。K公司是一家致力于为政府和企业提供数据安全服务的小型B2B企业,公司承…

Nessus 10.5 Auto Install for macOS Ventura(自动化安装 Nessus 试用版)

发布 Nessus 试用版自动化安装程序,支持 macOS Ventura、RHEL 9 和 Ubuntu 22.04 请访问原文链接:https://sysin.org/blog/nessus-auto-install-for-macos/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.o…

STM32输入捕获之快速构建频率计

简介:配置好STM32 CUBE IDE后只需要额外7行代码就可以构建一个频率计,目前只计算测频,占空比测量需要加入下降沿捕获标记(暂时没做)。 一、原理 频率:单位时间内完成周期性变化的次数,f 1/T。…

如何裁剪图片大小尺寸?

如何裁剪图片大小尺寸?平时我们在工作或者学习的时候,会经常需要将图片上传到不同的网站或者平台上,然而上传的时候经常会受到尺寸的限制,有时候尺寸太大就需要变小,为了确保上传成功,我们需要将图片进行裁…

Vue Router 最新版惊现使用 BUG

就在刚刚,当我在 写 Vue3 的项目的时候,使用到了 Vue Router 4 的最新版本(4.1.6),然而在使用过程中,发现了一个使用问题,起初我还以为,是我这边的代码逻辑有问题,然而在…

九联UNT402A_当贝纯净桌面-卡刷固件包-内有教程

九联UNT402A_当贝纯净桌面-卡刷固件包-内有教程 特点: 1、适用于对应型号的电视盒子刷机; 2、开放原厂固件屏蔽的市场安装和u盘安装apk; 3、修改dns,三网通用; 4、大量精简内置的没用的软件,运行速度提…

【Java笔试强训 33】

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 一、选择题 二、编程题 🔥剪花布条…

虹科新闻 | HKATTO推出FastFrame™ 第四代智能以太网适配器系列

ATTO Technology, Inc. 是 35 多年来为数据密集型计算环境提供网络、存储连接和基础设施解决方案的全球领导者,今天宣布推出其新的FastFrame™ 第四代以太网产品系列智能网卡。 第四代FastFrame SmartNICs 产品线具有四种独特的型号,产品线涵盖 10/25/40…

OmniVerse + ChatGPT = 智能3D建模

全球各行各业对 3D 世界和虚拟环境的需求呈指数级增长。 3D 工作流是工业数字化的核心,开发实时模拟以测试和验证自动驾驶汽车和机器人,运行数字孪生以优化工业制造,并为科学发现铺平新道路。 今天,3D 设计和世界构建仍然是高度手…

IS200TPROH1BCB用于工业应用和电力分配等。高压型隔离开关用于变电站

​ IS200TPROH1BCB用于工业应用和电力分配等。高压型隔离开关用于变电站 什么是隔离器,它与断路器有何不同 什么是隔离器,为什么要使用隔离器 隔离器是一种开关装置,它可以手动或自动操作,隔离一部分电能。隔离器可用于在无负载情…

Python 实验四 常用数据结构(2)

6.某企业为职工发放奖金:如果入职超过5年,且销售业绩超过15000元的员工,奖金比例为0.2;销售业绩超过10000元的员工,奖金比例为0.15;销售业绩超过5000元的员工,奖金比例为0.1;其他奖金…