注:关于在PostgreSQL上面实现Oracle数据库的闪回功能(闪回查询 闪回表 闪回删除…)的这个想法已经有很长时间了,但是鉴于本人的能力 精力和身体条件 迟迟没有完成。期间也有很多的小伙伴跟我一起研究过这个功能,但是最终都因为各种各样的问题 没有做下去。Oracle数据库闪回功能跨越版本较大,功能也比较强大 在PostgreSQL数据库上实现,需要对数据库内核有很深入的理解 两大数据库不同的底层原理也终将影响各自的实现策略,PostgreSQL标记删除就地插入的特点和基于事务快照行可见性的特性是我们可以开发PostgreSQL闪回查询的大前提。本文主要介绍 实现闪回查询的 一种实现方案!
从9i开始,Oracle提供了闪回(FLASHBACK)功能。使用FLASHBACK TABLE语句从撤消段中(undo segment)读取该表的过去映像,并利用Oracle9i中引入的回闪查询重建表行。UNDO_RETENTION给出了闪回支持的最小时间。也就是说,FLASHBACK最少可以支持UNDO_RETENTION给出的时间,如果系统比较闲,则可以闪回更长的时间。(当然,如果回滚表空间的空间分配不足,当系统处于忙时,有可能重用还没有达到UNDO_RETENTION时间限制的数据的空间)。使用闪回的一个前提是表不能进行DDL操作。不但不能对DDL操作进行回闪,而且,也无法闪回到DDL操作以前的数据了。
对于闪回部分,Oracle本身提供了非常多相关的特性,我个人对于闪回数据库这个特性最为喜爱,尤其是应用再Data Guard环境中,真是一大杀器。 而对于DML的闪回部分其实也相对比较容易理解,毕竟就是原操作的逆操作,之前通过logminer的方式来读取redo来间接得以印证。Oracle闪回原理-Logminer解读redo(r11笔记第17天) 但是对于DDL的闪回,这个特性真是非常强悍了。比如一个truncate操作,它的逆操作改怎么定义,就很难去界定了。当然这个里面肯定有一些
对于Oracle的闪回,很多朋友也问过问,到底是怎么玩的?如果自己做过一些闪回数据库的操作,就会发现这个功能非常强悍。 Flashback DML的操作其实还蛮容易理解的,但是Flashback DDDL那可就是另外一个level了,我们大概了解一下MySQL里面的闪回就会发现,真要实现无缝的全闪回,确实有很多的细节和场景需要考虑。而Oracle作为一个成熟的商业软件,是不希望我们了解很多底层的细节的,用着好就行,所以如果你想得到一些闪回更细节的东西,这个渠道就非常的窄,我们之前也测试了两期,做了
有一次在某微信群里,有人提问以下两条操作还能恢复吗?而且是在没有开归档。紧接着又有人提问数据库是否开了闪回?
1。select * from znjtresource.t_device_epolice as of timestamp to_timestamp(‘2019-3-21 15:20:00′,’yyyy-mm-dd hh24:mi:ss’) 2,。insert into znjtresource.t_device_epolice (select * from znjtresource.t_device_epolice as of timestamp to_timestamp(‘2019-3-21 15:20:00′,’yyyy-mm-dd hh24:mi:ss’));
【DB笔试面试813】在Oracle中,什么是闪回删除(Flashback DROP)?回收站的作用是什么?
AntDB数据库是一款国产自研的MPP架构的分布式数据库,高度兼容Oracle语法,在通信、金融、交通等多个行业应用广泛。用户在使用AntDB数据库的过程中,经常由于误操作、应用程序Bug等,导致了误删数据或者误更新数据,影响业务正常使用。误删数据不是某个数据库的个例,几乎所有的数据库都会遇到类似问题,并且大多数数据库都会提供一个【数据闪回】的工具,利用该工具可以快速恢复误操作数据。
以下以oracle数据库为例,介绍关于表中数据删除的解决办法。(不考虑全库备份和利用归档日志)
到目前为止,介绍的所有功能均不会直接将数据恢复为“以前”的样子。闪回查询只是查看,闪回数据归档只是延伸了闪回查询的时间窗口,闪回事务查询虽然提供了撤销SQL,但是否执行及如何执行还需要管理员进一步手动操作。
条件:1、误强制删除linux下的数据文件(rm -rf)。2、未重启数据库或操作系统。3、数据库是归档模式
Configuring Your Database for Oracle Flashback Technology
11g里面的新特性闪回归档,为历史数据的定制查询提供了一种可能。抽时间学习了一下这个特性,发现还是比较清晰易用。如果使用得当还是很不错的一个特性。 我们来简单模拟一个例子来看看。 首先需要创建独立的表空间,属性需要为segment space management auto,因为默认属性就是如此,所以我们简化语句。 SQL> create tablespace fbarch datafile'/U01/app/oracle/oradata/actvdb/fbarch.dbf' size 10M ; Tabl
Oracle闪回技术从根本上改变了数据恢复策略,利用闪回技术,可以使更正错误的时间大大缩短,而且它简单易用,使用一条短命令便可恢复整个数据库,而不必执行复杂的程序。闪回技术是Oracle数据库独有的特性,支持各级恢复,包括行、事务、表、表空间和数据库范围。采用闪回技术,可以针对行级和事务级发生过变化的数据进行恢复,减少了数据恢复的时间,而且操作简单,通过SQL语句就可以实现数据的恢复,大大提高了数据库恢复的效率。
--==========================================================
闪回技术通常用于快速简单恢复数据库中出现的认为误操作等逻辑错误,从闪回的方式可以分为基于数据库级别闪回、表级别闪回、事务
在Oracle中可以通过闪回技术来找回已经删除并且提交了的数据。当然,除了闪回技术外还可以采用LogMiner(使用该工具可以轻松获得Redo日志文件包含归档日志文件中的具体内容)进行日志挖掘,找出其撤销SQL并执行就可以找回DELETE语句删除的数据。
虽然ORA-01555错误可以通过种种手段来避免和减少,但是随着时间的流逝,这些UNDO信息总会失去,那么能否将这些信息保存起来,使得数据库在一定的历史周期之内可以不断向后追溯,使得我们可以看到一个数据表在任意历史时间点上的切片呢?
版权声明:本文为博主原创文章,欢迎扩散,扩散请务必注明出处。 https://blog.csdn.net/robinson_0612/article/details/83581000
闪回数据库这个特性在很多Oracle DBA眼里就是鸡肋特性,因为谁会因为恢复数据而需要在主库闪回,最后可能丢掉更多的数据,这个观点没错。 但是如果是备库呢,这个特性就顺利成章的满足了绝大多数的恢复需求,无论你是truncate,还是一些drop table的操作都是可以轻而易举的恢复。所以更多的时候我们其实更偏爱于Data Guard基础上的这种数据恢复方式,而原本的逻辑备份exp,expdp,物理备份RMAN就显得有些臃肿了。 拿一个真实的小案例来说明,有一次因为数据查询的SQ
编辑手记:对于数据库的闪回功能,可能大家都不陌生,那么如何在多租户环境下使用该功能,如果关闭了表空间的闪回功能,会给数据库带来哪些影响?我们一起来学习。 本文来自周四大讲堂内容整理。 我们先说一下Flashback这个单词,我们大家常称它为闪回,可能有的人称它为回闪。Flashback 是oracle 9i 版本开始提供的一项特性,利用oracle查询多版本一致的特点,实现从回滚段中读取一定的时间内在表中操作过的数据。 Flashback Database是Oracle10g的新增功能,在启动Flashba
【DB笔试面试815】在Oracle中,什么是闪回数据归档(Flashback Data Archive)?
【DB笔试面试814】在Oracle中,什么是闪回数据库(Flashback Database)?
Flashback Database 功能非常类似与RMAN的不完全恢复, 它可以把整个数据库回退到过去的某个时点的状态, 这个功能依赖于Flashback log 日志,而且比RMAN更快速、高效。 因此Flashback Database 可以看作是不完全恢复的替代技术。 但它也有某些限制: 1. Flashback Database 不能解决Media Failure, 这种错误RMAN恢复仍是唯一选择 2. 如果删除了数据文件或者利用Shrink技术缩小数据文件大小,这时不能用Flashback Database技术回退到改变之前的状态,这时候就必须先利用RMAN把删除之前或者缩小之前的文件备份restore 出来, 然后利用Flashback Database 执行剩下的Flashback Datbase。 3. 如果控制文件是从备份中恢复出来的,或者是重建的控制文件,也不能使用Flashback Database。 4. 使用Flashback Database锁能恢复到的最早的SCN, 取决与Flashback Log中记录的最早SCN。
1.简介 在oracle数据库中,当一个误操作被提交后,我们可以通过oracle提供的闪回功能将表闪回至误操作之前的状态。mysql中没有原生的flushback功能,DBA误操作时,传统的恢复方式是利用全备+二进制日志前滚进行恢复。 今天给大家介绍一种使用python脚本在mysql中实现类似oracle中flushback table的闪回功能,相比于传统的全备+增备,本方法更为快速、简单。
数据库闪回技术在Oracle Database 10g就向大家提供了。因为闪回不需要对数据文件做restore的动作,所以数据恢复的时间相比传统RMAN进行恢复要快许多。这项技术一直受到DBA的喜欢,比如经常可以使用表闪回,数据库闪回快速修复人为造成的数据错误,也可以使用闪回查询,了解记录之前的状态。但闪回技术不是万能的,它也受到许多限制,但随着数据库版本的不断更新,闪回功能在各个版本都得到了增强。
1.闪回drop的表:(当表所在的表空间空间不足,oracle也会删除回收站里的内容,所以此方法需要表空间空间充足、recyclebin没有被清空、删除时没加purge)
说到闪回日志,我们都知道闪回日志中记录的都是逆操作,那么就有两个问题需要解释了。 闪回日志和回滚段保存的数据有什么差别? 如果做了truncate操作,闪回日志是怎么记录的,怎么能够通过闪回恢复数据。 第一个问题是一个同学问的,第二个问题是我偶然想起来的,当然这两个问题还是蛮有意思。我们的目标就是解释清楚下面的两个问题。 当然要深刻理解这个问题,一个重要的部分就是得先明白redo的基本情况。 借用大师Jonathan Lewis的话说,Oracle里面最重要的特性是在V6提出的改变向量,改变向量是
usr1@ORCL> define length="15" --定义变量length
Oracle闪回区已经有了好几载的岁月了,在10g的时候就被推出一直延续到现在。Oracle闪回区是为RMAN准备的,尽管抛开它我们可以同样完成数据库备份恢复的相关工作,Oracle依旧强烈推荐使用且它让其成为RMAN的组件之一。这是因为该区域可集中简化管理所有和备份恢复工作,这也是其魅力所在。本文描述了Oracle闪回区的特性及其配置闪回区,监控闪回区等。
昨天聊了一篇关于高可用方案中Oracle的RAC和MySQL的MHA的对比。 今天来说下Oracle的DG和MySQL的方案对比,相比来说,可能这方面MySQL会单薄一些,所以文末会说下InnoDB Cluster。 在灾备的概念中,Oracle DBA喜欢叫做主备,即为Primary,Standby,而MySQL喜欢叫做主从,即为Master,Slave 首先在Oracle中,数据是基于物理复制(此处说的都是physical standby),所以对于数据库的状态和角色就很好定位,从库正常状况下是
最近处理了几个网友的疑问,拿过来总结一下。 1)11gR2静默安装的校验失败 有些朋友反馈使用静默安装的时候,配置了响应文件,但是总是会校验邮箱和密码,这个地方总是过不去。根据我的以往经验,需要注意一个参数 DECLINE_SECURITY_UPDATES默认是false,我们在学习测试中可以设置为true,无需输入这些信息。而这位朋友反馈的是 DECLINE_SECURITY_UPDATES已经设置为了TRUE,但是还是存在问题。 输入的命令如下: ./runInstaller -silent -resp
--==============================================
今天琢磨一个问题,在平时的工作中如果碰到一些不规范的操作,drop,truncate,delete,恢复起来还是很困难的,drop操作在oracle中如果开启了recycle bin还是基本安全的,delete操作可以借助flashback delete操作,可能有些更细微的操作update,insert等等操作导致了问题,需要做数据修复的时候,这个时候可以使用flashback query来辅助,如果来一个truncate,那就没辙了,其实在truncate操作完成后,一般来说数据还都是在数据文件里的,这
今天早上收到一条报警短信,提示是dg的接收出了问题,从v$dataguard_status得到的最新记录如下: 2015-09-18 07:13:36.0 Fetch Archive LogErrorFAL[server, ARC1]: Error 270 creating remote archivelog file 'stest' 2015-09-18 07:13:36.0 Fetch Archive LogErrorFAL[server, ARC3]: Error 270 creating remot
如果一不小心对Oracle数据库中的数据进行了误删除操作,那么如何进行数据恢复呢(不考虑全库备份和利用归档日志)?如果使用的是9i以及之后的版本,那么我们可以采用闪回技术对误删除的数据进行恢复。方式有两种。
Q 题目 Table EMP resides in the USERS tablespace. Examine this command: SQL> DROP TABLE emp PURGE; Whi
今天是DTCC第二天了,抽空去听了下,因为手头有一些活,听到一半只能赶回公司继续工作。 客户今天有一个需求,因为开发现在在生产环境中遇到了一些困难,需要在测试生产环境中复现问题,这样就需要从生产环境抽取出一些数据,可能数据量相对比较小,有个1G左右。需要把这些数据加载到测试生产环境中, 还是来张图更加清晰。我们需要把图中右边部分的生产环境中抽取部分数据导入到测试生产环境中,这里所说的测试生产环境是按照生产环境的结构来复制的。测试环境已经有一些测试数据,很可能和生产环境中的数据冲突。 就如同图中下面的部分列出
误删oracle数据库中的数据,在不考虑全库备份和利用归档日志情况,怎样快速恢复数据呢?
作者简介:李海翔,网名“那海蓝蓝”,腾讯金融云数据库技术专家。中国人民大学信息学院工程硕士企业导师。著有《数据库事务处理的艺术:事务管理和并发访问控制》、《数据库查询优化器的艺术:原理解析与SQL性能优化》,广受好评。
–sql>alter database mount (读取控制文件),没有实例恢复。
1.简介 在Oracle数据库中,当一个误操作被提交后,我们可以通过Oracle提供的闪回功能将表闪回至误操作之前的状态。mysql中没有原生的flushback功能,DBA误操作时,传统的恢复方式是利用全备+二进制日志前滚进行恢复。
其实帮助很多的朋友解决过Oracle数据库数据不同步的问题,看似简单的问题分析出来的原因也是五花八门。比如: Oracle数据库问题的一点总结 在查看一些没有专业DBA维护的数据库的时候,会发现很多的潜在问题,有些可能无伤大雅,看起来是不规范不标准的问题,倒不会直接造成问题,而有些问题会让人后背发凉,正如同歌词里唱的,一旦错过就不再,这里说的就是数据,所以也希望大家能够在一些案例中得到启发和参考,避免在自己的系统中重演。 先啰嗦一句,尽管在Oracle命令行下敲过命令了,但是完整的命令和思路还算清晰,所以大
对于Oracle的Flashback来说,在11g里面有了一个很细微的变化,可以说是一个很不错的福利,那就是开启闪回不需要重启数据库至mount状态下,归档模式下open状态就可以开启,关闭。 但是有一点自己也记不太清楚了,那就是有时候数据库开启/关闭很容易,有的时候却需要额外花点功夫。今天索性花了点时间理了理。 查看是否开启闪回数据库,可以简单使用下面的方式。 SQL> select database_role,flashback_on from v$database; DATABASE
--==================================================
今天看到有一个网友提了一个问题,描述很简短 测试DG时,主库不能宕机,如何测试failover? 其实这个需求从业务层面来说是合理的,一个数据量很大的核心数据库,如果需要做灾难演练,就
误删除了Oracle部分重要数据,已提交,需要恢复。首先尝试Flashback Query闪回数据。
本文介绍一下,在DG环境中,若主库做了闪回数据库的操作后,备库如何通过flashback操作,继续和主库保持同步,而不用重新搭建DG。
启动数据库时,收到了ORA-32004 的错误,错误多是一些过时且在当前版本中不在使用的参数,如果碰到类似的错误,只需要将其
领取专属 10元无门槛券
手把手带您无忧上云