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_targetNAME                                 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_tbcreate 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.mzph.cn/news/658489.shtml

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

相关文章

SpringCloudAlibaba组件总结笔记(如Nacos、SpringCloudGateway、OpenFeign,Ribbon,RabbitMQ)

这目录 1.Ribbon负载均衡1负载均衡原理2.负载均衡策略1.负载均衡策略2.自定义负载均衡策略 3.饥饿加载 2.Nacos注册中心与Eureka的区别3.Nacos配置中心1.从微服务拉取配置2.配置热更新1.2.1.方式一1.2.2.方式二 3.配置共享1.配置共享的优先级 4.Feign1.Feign使用优化2.配置连接…

使用Promethues+Grafana监控Elasticsearch

PromethuesGrafana监控Elasticsearch 监控选用说明指标上报流程说明实现监控的步骤搭建elasticsearch-exporter服务搭建promethues和grafana服务 监控选用说明 虽然用Kibana来监控ES,能展示一些关键指标,但ES本身收集的指标并不全面,还需要在…

torchvision.models._utils.IntermediateLayerGetter()使用

torchvision.models._utils.IntermediateLayerGetter()使用 源码如下: from collections import OrderedDictimport torch from torch import nnclass IntermediateLayerGetter(nn.ModuleDict):"""Module wrapper that ret…

Python采集学习笔记-读取excel数据

表格格式 方法一:使用xlrd import xlrd 1.读取Excel文件 workbook xlrd.open_workbook(plc.xlsx) 2.读取第一个表 sheet workbook.sheet_by_index(0) 3.获取表格总行数 total_rows sheet.nrows 4.创建列表,存储表格一行中每一列信息 plc_info [] for row in range(1…

【JAVA】Long类型返回到前端,精度丢失

一. 问题阐述 20位long类型的数字,从后端接口返回到前端后【四舍五入】 MYSQL端 (1)bigint (20) (2)具体某一条数据 JAVA端 (1)实体类 (2)服务类 (3&…

docker可视化操作

docker可视化操作,ui界面操作 1.检查docker服务状态 docker status2.安装服务 部署 Portainer 1.从镜像仓库中拉取 Portainer:docker pull portainer/portainer2.创建数据卷: docker volume create portainer_db 3.启动 Portainer命令&…

86.网游逆向分析与插件开发-物品使用-物品丢弃的逆向分析与C++代码的封装

内容参考于:易道云信息技术研究院VIP课 上一个内容:物品使用的逆向分析与C代码的封装-CSDN博客 码云地址(ui显示角色数据 分支):https://gitee.com/dye_your_fingers/sro_-ex.git 码云版本号:7563f86877c…

NFTScan 与 Merlin Protocol 共同推出 BRC20 Indexer Oracle,于今日正式上线!

近日,NFT 数据基础设施 NFTScan 与 Merlin Protocol 进行战略合作,联合推出了比特币网络原生资产 Indexer Oracle 服务,现在该服务已在 NFTScan 开发者平台上线,任何开发者都可以注册使用! Merlin Protocol 是一个专用…

linux 磁盘标签类型MBR转换为GPT

[rootlocalhost /]# fdisk -l 磁盘 /dev/sda:299.4 GB, 299439751168 字节,584843264 个扇区 Units 扇区 of 1 * 512 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类…

解读 HTTP 和 HTTPS:有何异同?

超文本传输安全协议(HTTPS)是建立在超文本传输协议(HTTP)之上的一种安全网络传输协议。在计算机网络上传输时,HTTPS 通过传输层安全性(TLS)或它的前身安全套接字层(SSL)为…

谷歌上架防关联VPS开到和原来一样的IP造成关联?应该怎么选?

随着Google paly的发展,竞争越来越激烈,开发者们也面临的越来越多的挑战。其中,如何降低关联风险是开发者们重点关注的问题。 为了防止开发者账号的滥用或欺诈,谷歌会通过判断账号之间是否存在关联,并对违规账号进行处…

【Vue】二、Vue 组件展示控制的优雅解决方案

vue项目中展示的组件,我平常都是通过v-show进行展示控制,类似这样 通常情况下,一个正常展示组件的流程,是通过前端用户点击触发函数,在函数中对data数据进行操作,从而展示不同的页面 showWork: false, sho…

首次接触共享办公室,有哪些问题需要注意?

随着互联网和创业的发展,越来越多的企业和个人选择共享办公空间作为他们的办公场所。共享办公空间是一种提供灵活的办公模式和配套的设施和服务的空间,可以帮助企业和个人节省成本和空间,提高效率和创新,拓展人脉和资源。但是&…

【C++】STL之空间配置器(了解)

一、什么是空间配置器 空间配置器 ,顾名思义就是为各个容器高效的管理空间(空间的申请与回收)的,在默默地工作。虽然在常规使用 STL 时,可能用不到它,但站在学习研究的角度,学习它的实现原理对…

注册亚马逊店铺用动态IP可以吗?

注册亚马逊店铺可以用动态IP,只要是独立且干净的网线就没问题,亚马逊规则要求一个IP地址只能出现一个亚马逊店铺,若使用不当会导致关联账户。 固定ip可以给我们的账户带来更多的安全,要知道关联问题是亚马逊上的一个大问题&#…

PHP/原生类/Java/Python反序列化总结

PHP反序列化 #方法&属性-调用详解&变量数据详解 对象变量属性: public(公共的):在本类内部、外部类、子类都可以访问 protect(受保护的):只有本类或子类或父类中可以访问 private(私人的):只有本类内部可以使用 序列化数据显示: private 属性序…

python爬虫之豆瓣首页图片爬取

网址:https://movie.douban.com/ import requests from lxml import etree import re url https://movie.douban.com headers {User-Agent : Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.5735.289 Safari/5…

如何快速知道app当前页面是哪一个Activity(2.0升级版)

点我跳转 如何快速知道app当前页面是哪一个Activity 1.0版本 这个版本是用adb 命令实现的,想看的可以看看,学习一下adb 命令。 今天做了一个非常简易的app来直接监控当前页面Activity,效果直接炸裂,效果图如下: 有需要…

详解SpringCloud微服务技术栈:深入ElasticSearch(2)——自动补全、拼音搜索

👨‍🎓作者简介:一位大四、研0学生,正在努力准备大四暑假的实习 🌌上期文章:详解SpringCloud微服务技术栈:深入ElasticSearch(1)——数据聚合 📚订阅专栏&…

Windows断开映射磁盘提示“此网络连接不存在”,并且该磁盘直在资源管理器中

1、打开注册表编辑器 快捷键winR 打开“运行”, 输入 regedit 2、 删除下列注册表中和无法移除的磁盘相关的选项 \HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\ 3、打开“任务管理器”,重新启动“Windows资源…