Oracle 的闪回技术是什么

什么是闪回

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 锁的概念以及分类

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LabVIEW电液伺服控制系统

介绍了如何利用ARM微处理器和LabVIEW软件开发一个高效、精准的电液伺服控制系统。通过结合这两种技术,我们能够提高系统的数字化程度、集成化水平,以及控制精度,从而应对传统电液伺服控制器面临的问题。 该电液伺服控制系统由多个关键部分组…

TypeScript(八) number和string

1. TypeScript number 1.1. 描述 Number对象是原始数值的包装对象。 1.2.语法 var num new Number(value);;注意:如果一个参数值不能转换为一个数字,将返回NaN(非数字值)。 1.3. 对象属性 属性描述MAX_VALUE可表示的最大的数…

Postman-接口测试教程

接口是软件开发中常用的概念,是软件生产过程中比较核心的任务。对于接口开发者,调试接口是一件较为繁琐的事情,很多时候需要线上线下来回切换。在这里,我就跟大家介绍一个只需要在本地就可以调试接口的方法,即使用post…

Dubbo 3.x源码(17)—Dubbo服务发布导出源码(6)

基于Dubbo 3.1,详细介绍了Dubbo服务的发布与引用的源码。 此前我们学习了Dubbo 3.x源码(16)—Dubbo服务发布导出源码(5),也就是Dubbo远程服务在导出远程服务得到Exporter之后,继续通过Registry将其注册到远程注册中心的源码。 实际上&#x…

git的分支操作

目录 简介: 操作:查看 操作:创建 操作:切换​编辑 操作:本地分支推送到远程 操作:git merge [name]合并分支​编辑 简介: 在Git中,可以通过分支来管理和处理不同的版本和功能。分…

DSP系统时钟总结

一、stm32中断偏移向量介绍 1.1 为什么要设置中断向量偏移 上图可以看出程序上电先进入0x08000000开始运行,紧接着执行复位中断向量,然后执行复位中断程序,然后进入main函数。 如果想要app的中断正常运行,那就必须手动设置中断向…

在本地电脑上打开服务器里面的localhost网址

远程连接服务器,启动了一个服务 显示访问地址为:http://127.0.0.1:7860 在本地浏览器将127.0.0.1改成服务器ip但是无法访问 解决办法: 1. ssh新建一个远程连接,将服务器的7860端口重定向到本机 ssh -L 18097:127.0.0.1:7860 us…

LeetCode 54 螺旋矩阵

题目描述 螺旋矩阵 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 示例 1: 输入:matrix [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,6,9,8,7,4,5]示例 2: 输入&#x…

qt-C++笔记之QStringList、QList<QString>、QString、QChar、QList<QChar>区别

qt-C笔记之QStringList、QList、QString、QChar、QList区别 —— 杭州 2024-01-30 凌晨0:27 参考博文&#xff1a;qt-C笔记之QStringList code review! 文章目录 qt-C笔记之QStringList、QList<QString>、QString、QChar、QList<QChar>区别1.Qt的字符容器类1.QSt…

PHP抽奖设置中奖率,以及防高并发

一、中奖率,先在后台设定好奖项名称,抽奖份数,以及中奖百分比 奖品表draw 二、 借助文件排他锁,在处理下单请求的时候,用flock锁定一个文件,如果锁定失败说明有其他订单正在处理,此时要么等待要么直接提示用户"服务器繁忙" 阻塞(等待)模式,一般都是用这个模…

五大架构之一:系统架构数据流风格

系统架构数据流风格详细介绍 系统架构数据流风格是一种软件体系结构风格&#xff0c;它强调了系统内部不同部分之间的数据流动。这种风格侧重于描述系统中的数据处理过程&#xff0c;以及数据是如何从一个组件传递到另一个组件的。以下是系统架构数据流风格的详细介绍&#xff…

-1- Python环境安装

1、Python安装 1、Windows安装Python 进入python官网&#xff1a;Welcome to Python.org点击 download——>all releases&#xff1b;建议选择3.7.2版本&#xff08;网页链接&#xff1a;Python Release Python 3.7.2 | Python.org&#xff09;&#xff1b;下拉&#xff0…

云原生数据库GaiaDB的核心技术演进

导读 越来越强调云原生的环境下&#xff0c;存算分离作为一种新的架构理念&#xff0c;已经是大势所趋。新的技术架构带来新的问题和挑战&#xff0c;GaiaDB 在自研过程中采用Quorum分布式协议、高性能网络、高可靠分布式存储引擎等技术实现更高的性能和可用性。 本文针对一系列…

Opencv——霍夫变换

霍夫直线变换 霍夫直线变换(Hough Line Transform)用来做直线检测 为了加升大家对霍夫直线的理解,我在左图左上角大了一个点,然后在右图中绘制出来经过这点可能的所有直线 绘制经过某点的所有直线的示例代码如下,这个代码可以直接拷贝运行 import cv2 as cv import matplot…

element -table,多行或列合并

需求&#xff1a;后端返回的表格数据&#xff0c;如果某列值一样&#xff0c;前端表格样式需要合并他们&#xff0c;需要合并的列的行数未知&#xff08;所以需要有数据后遍历后端数据对需要合并的属性进行计数&#xff09;即动态遍历表格合并 效果 - 重点方法&#xff1b;ta…

《金融电子化》昆仑银行在应用性能监控(APM)平台的实践与探索

《金融电子化》昆仑银行在应用性能监控&#xff08;APM&#xff09;平台的实践与探索 中国人民银行印发的《金融科技发展规划&#xff08;2022-2025年&#xff09;》是对金融科技发展的重要引领。规划强调了金融科技在推动金融行业现代化转型、提升金融服务效率和风险防控水平…

【LeetCode: 25. K 个一组翻转链表 + 链表 + 递归】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

大数据学习之Redis,十大数据类型的具体应用(三)

目录 3.7 Redis位图&#xff08;bitmap&#xff09; 概念 需求 是什么 说明 能干嘛? 基本命令 3.7 Redis位图&#xff08;bitmap&#xff09; 概念 由0和1状态表现的二进制位的bit数组 需求 用户是否登陆过&#xff1f;Y / N 广告是否被点击过&#xff1f; 钉钉打…

Swift Vapor 教程(项目创建)

The future of web development. 在初次接触 Swift Vapor 时&#xff0c;感觉代码比较清爽&#xff0c;用起来逻辑比较清晰。 困难点&#xff1a; Swift Vapor 使用了JWT管理三方库&#xff0c;比较吃网络Swift Vapor 搭建环境比较复杂初次使用Swift Vapor 尽量不要使用MySql。…

关于 IntelliJ IDEA 中 Schedule for Addition 的问题

IntelliJ IDEA是一款强大的Java集成开发环境&#xff0c;由JetBrAIns公司开发。它以其智能代码编辑、代码分析工具、自动代码补全、强大的调试功能和内建的版本控制等特性而闻名。此外&#xff0c;它还支持Kotlin、Groovy、Scala和Android开发等多种语言和框架。 IntelliJ IDE…