Oracle 的闪回技术是什么

news2024/12/28 3:49:47

什么是闪回

Oracle 数据库闪回技术是一组独特而丰富的数据恢复解决方案,能够有选择性地高效撤销一个错误的影响,从人为错误中恢复。闪回是一种数据恢复技术,它使得数据库可以回到过去的某个状态,可以满足用户的逻辑错误的快速恢复。

注意:闪回仅对逻辑错误有效,如果是数据文件损坏,则闪回无效,须使用介质恢复。

特点:恢复速度快,无须备份文件。

开启方式

Oracle默认不启动闪回数据库,如果要启动闪回数据库特性必须将数据库设置为归档模式启动,并启用闪回恢复区。 

查看是否开启闪回
SQL>SELECT CREATED,FLASHBACK_ON FROM V$DATABASE;
 
CREATED     FLASHBACK_ON
----------- ------------------
2011/9/8 11 NO
确定归档的操作系统存储位置
SQL> show parameter db_recovery_file_Dest;
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                string      /data/oracle/flash_recovery_area
db_recovery_file_dest_size           big integer 2G
配置闪回保留时间
SQL> show parameter db_flashback_retention_target
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_flashback_retention_target        integer     1440

此参数为以分钟为单位的,默认为一天,即1440。其意义为从当前时间开始计算最大可以把数据库闪回到过去的时间。若要修改,有以下语句:

alter system set db_flashback_retention_tagget=2880 scope=both;

注意:设置的个值不一定能完全使数据库恢复到你想要的时候点,因为闪回是根据归档日志进行操作,而上面第2步配置的大小为2g,而闪回日志是由数据库自动记录的,如果由于空间不足,此时较早的闪回日志会被删除,导致闪回日志不完全而导致闪回失败,所以配置适合的大小。

开启闪回数据库
startup mount;
--开启闪回数据库
alter database flashback on;  
关闭闪回数据库

默认情况下,启动了闪回数据库,则数据库的永久表空间将受闪回数据库的保护,若想关闭闪回,执行如下:

startup mount;
alter database flashback off;

闪回技术

Oracle提供了四种可供使用的闪回技术(闪回查询,闪回删除,闪回归档,闪回数据库),每种都有不同的底层体系结构支撑,但其实这四种不同的闪回技术部分功能是有重叠的,使用时也需要根据实际场景合理选择最合适的闪回功能。

1)闪回查询 (Flashback Query)

功能描述

可以查询过去某个时间段的数据库状态。依赖undo数据,恢复数据时可以先查询,再做insert

工作原理

Oracle 会提取所需要的撤销数据(前提是撤销是可用的,即撤销数据还没被覆盖)进行回滚,但这种回滚是临时的,仅针对当前session可见。

select * from  useren as of timestamp to_timestamp('2016-09-10 11:00:00','yyyy-mm-dd hh24:mi:ss');

--带where条件的:
select * from useren as of timestamp to_timestamp('2022-10-15 11:00:00','yyyy-mm-dd hh24:mi:ss') where id='1000';

--例如恢复数据
insert into useren select * from useren as of timestamp to_timestamp('2013-09-23 11:52:06','yyyy-mm-dd hh24:mi:ss');
2)闪回删除(Flashback Drop)

功能描述

闪回删除可以轻松将一个已经被Drop的表还原回来。相应的索引,数据库约束也会被还原(除了外键约束),利用recyelebin回收站原理

原理描述

Drop命令其实是Rename命令,早期的Oracle版本(10g之前),闪回删除意味着从数据字典中删除了该表的所有引用,虽然表中数据可能还存在,但已成了孤魂野鬼,没法进行恢复了,10g版本之后,Drop命令则仅仅是一个Rename操作,所以恢复就很容易了。

--闪回useren用户表
flashback table useren to before drop;

--也可以在闪回删除的时候对表重命名
--格式flashback table TEST10 to before drop [rename to test11];
--例如
flashback table useren to before drop rename to useren_new

也可以通过回收站查看当前用户那些表被删除了,每个用户都有一个回收站,这个回收站是个逻辑结构,它不是一块独立的存储空间,它存在在当前表空间内,所以如果有别的操作需要空间,比如现在需要创建一张表,没有足够空间可用,回收站中的数据就会被清理,这也是导致闪回删除失败的原因。 

SQL> SHOW RECYCLEBIN;
--彻底删除表,闪回删除也无能为力
SQL> DROP TABLE EMP PURGE;
--清空回收站
SQL> PURGE RECYCLEBIN;

3)闪回数据归档(Flashback Data Archive )

功能描述:

闪回数据归档可使表具有回退到过去任何时间点的能力,前面提到的闪回查询,闪回表都会受限于撤销数据是否失效,如果撤销数据被覆盖重写了,闪回操作自然会失败,闪回删除则受限于表空间是否有足够可用空间,而闪回数据归档,则没有这些限制

--1.创建一个用户闪回数据归档的表空间test_tb
 create tablespace test_tb datafile 'test.dbf' size 20m;  
 --2.创建一个保留时间为2年的闪回归档
 create flashback archive test_fa tablespace test_tb retention 2 year;
 --3.为scott用户下的emp表启用闪回归档
 grant flashback archive on test_fa to scott;
 --链接
 conn scott/tiger
 --4.为emp表启用闪回归档,至此emp表就拥有了可以查询或回退到过去2年任意时间点的能力!
 alter table emp flashback archive test_fa;

       

4)闪回数据库(Flashback Database )

DDL语句,依赖闪回区的闪回日志

功能描述:

闪回数据库可将整个数据库回退到过去某个时间点,闪回表是某张表的时空穿梭,闪回数据库则是整个数据库的时空穿梭。当然,闪回点之后的所有工作就丢失了,其实就相当于数据库的不完整恢复,所以只能以resetlogs模式打开数据库。闪回数据库会造成停机时间,当然相比于传统备份恢复机制,恢复过程会快很多。这是一种快速的数据库恢复方案,这种恢复是基于用户的逻辑错误,通常是将数据库恢复到之前的某一个时间点

工作原理:

闪回数据库不使用撤销数据,使用另外一种机制来保留回退所需要的恢复数据,当启用闪回数据库,发生变化的数据块会不断从数据库缓冲区缓存中复制到闪回缓冲区,然后,称为恢复写入器(Recovery Writer)的后台进程会将这些数据刷新到磁盘中的闪回日志文件中。闪回的过程,则是一个 提取闪回日志-->将块映像复制回数据文件 的过程。

实现方式

--1.指定闪回恢复区,也就是存放闪回日志的位置,
alter system set db_recovery_file_dest ='/flash_recovery_area';
--2.指定恢复区大小
alter system set db_recovery_file_dest_size=4G; 
--3.指定闪回日志保留时间为2小时,即通过闪回操作,可以将数据库回退到前两小时内的任意时间点
alter system set db_flashback_retention_target=120; 
--4.有序关闭数据库--mount模式下启用闪回数据库--打开数据库 至此,闪回数据库配置完成!
shutdown immediate;
startup mount;
--开启闪回数据库
alter database flashback on; 
alter database open;

--5.使用闪回数据库功能
shutdown immediate;
startup mount;

--6使用闪回数据库闪回数据库
flashback database to timestamp sysdate-60/1440;
--或者使用SCN 例如:flashback database to scn 13081009;
alter database open resetlogs;

上一篇:Oracle 锁的概念以及分类

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

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

相关文章

Walrus 实用教程|Walrus + Gitlab,打通CI/CD 自动化交付!

Walrus file 是 Walrus 0.5 版本推出的新功能,用户可以通过一个非常简洁的 YAML 描述应用或基础设施资源的部署配置,然后通过 Walrus CLI 执行 walrus apply或在 Walrus UI 上进行import,将 Walrus file 提交给 Walrus server,由 …

N65总账凭证管理凭证查询(sql)

--核算账簿 select code , name , pk_setofbook from org_setofbook where ( pk_setofbook in ( select pk_setofbook from org_accountingbook where 1 1 and ( pk_group N0001A11000000000037X ) and ( accountenablestate 2 ) ) ) order by code;--核算账簿 select code …

60、Flink CDC 入门介绍及Streaming ELT示例(同步Mysql数据库数据到Elasticsearch)-完整版

Flink 系列文章 一、Flink 专栏 Flink 专栏系统介绍某一知识点,并辅以具体的示例进行说明。 1、Flink 部署系列 本部分介绍Flink的部署、配置相关基础内容。 2、Flink基础系列 本部分介绍Flink 的基础部分,比如术语、架构、编程模型、编程指南、基本的…

Spring MVC-01

关于Spring MVC Spring MVC是基于Spring框架基础之上的,主要解决了后端服务器接收客户端提交的请求,并给予响应的相关问题。 MVC Model View Controller,它们分别是: - Model:数据模型,通常由业务逻辑层…

TypeScript(七) 函数

1. TypeScript 函数 1.1. 函数的定义 函数就是包裹在花括号中的代码块,前面使用关键字function。 语法: // An highlighted block function function_name() {// 执行代码 }实例: function test() { // 函数定义console.log("我就是…

Linux系统——文本三剑客

目录 一、grep 1.格式 2.选项 2.1 grep重定向 2.2grep -m 匹配到几次停止 2.3grep -i 忽略大小写 2.4grep -n 显示行号 2.5grep -c 统计匹配行数 2.6grep -A 后几行 2.7grep -C 前后三行 2.8grep -B 前三行 2.9grep -e 或 2.10grep -w 匹配整个单词 2.11grep -r…

聊聊百度造车

10月27日,极越-01上市,一个月后大幅降价,时至今日距离发布已经过去了两个月,官方迟迟不肯公布销量,实际情况大家也都心知肚明。 如今小米汽车技术发布会风头无两,而同一年宣布造车的极越却无人问津&#x…

ElementUI安装与使用指南

Element官网-安装指南 提醒一下:下面实例讲解是在Mac系统演示的; 一、开发环境配置 电脑需要先安装好node.js和vue2或者vue3 安装Node.js Node.js 中文网 安装node.js命令:brew install node node.js安装完后,输入&#xff1…

界面控件DevExtreme v23.2新版亮点 - 全新的Fluent主题

DevExtreme拥有高性能的HTML5 / JavaScript小部件集合,使您可以利用现代Web开发堆栈(包括React,Angular,ASP.NET Core,jQuery,Knockout等)构建交互式的Web应用程序。从Angular和Reac&#xff0c…

[力扣 Hot100]Day18 矩阵置零

题目描述 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 出处 思路 在原数组上直接操作势必会出现“冗余”的0,即原本[i,j]处不是0,例如由于i行的其他位置有0导致[i,j]…

【深度学习每日小知识】Precision 精度

Precision 精度 精度是机器学习 (ML) 中分类器或预测器准确性的度量。它被定义为分类器做出的真正正预测数与分类器所做的正预测总数之比。换句话说,真正正确的是正面预测的比例。 精度是机器学习中的一个关键参数,因为它量化了…

Adobe Photoshop 2024 v25.4.0 - 专业的图片设计软件

Adobe Photoshop 2024 v25.4.0更新了,从照片编辑和合成到数字绘画、动画和图形设计,任何您能想象到的内容都能通过PS2024轻松实现。 利用人工智能技术进行快速编辑。学习新技能并与社区分享您的工作。借助我们的最新版本,做令人惊叹的事情从未…

Java中支持父类转子类,不支持子类转父类吗?

不,我的意思是正好相反。在 Java 中: 子类转父类(向上转型):这是自动的且总是安全的。子类是父类的一个特化,因此子类的对象可以被视为是父类的一个实例。例如,如果 ExamineApproveNode 是 Base…

【Tomcat与网络3】Tomcat的整体架构

目录 1.演进1:将连接和处理服务分开 2演进2:Container的演进 3 再论Tomcat的容器结构 4 Tomcat处理请求的过程 5 请求的处理过程与Pipeline-Valve管道 在前面我们介绍了Servlet的基本原理,本文我们结合Tomcat来分析一下如何设计一个大型…

小程序真机调试websocket错误码1006

有心跳机制 模拟器上都没问题连接稳定 一到真机就30秒断连 怎么解决救救我T_T

Flink CEP实现10秒内连续登录失败用户分析

1、什么是CEP? Flink CEP即 Flink Complex Event Processing,是基于DataStream流式数据提供的一套复杂事件处理编程模型。你可以把他理解为基于无界流的一套正则匹配模型,即对于无界流中的各种数据(称为事件),提供一种组合匹配的…

C#,欧拉数(Eulerian Number)的算法与源代码

1 欧拉数 欧拉数特指 Eulerian Number,不同于 Euler numbers,Eulers number 哦。 组合数学中,欧拉数(Eulerian Number)是从1到n中正好满足m个元素大于前一个元素(具有m个“上升”的排列)条件的…

C++ 之LeetCode刷题记录(二十三)

😄😊😆😃😄😊😆😃 开始cpp刷题之旅。 目标:执行用时击败90%以上使用 C 的用户。 118. 杨辉三角 给定一个非负整数 numRows,生成「杨辉三角」的前 numRows …

力扣hot100 括号生成 递归回溯 超简洁版

Problem: 22. 括号生成 Code 使用 static 会被复用 class Solution {List<String> ans new ArrayList<>();public List<String> generateParenthesis(int n){dfs(n, n, "");return ans;}/*** param l 左括号待补个数* param r 右括号待补个数*…