234390216 的留下学习 原文地址 http://haohaoxuexi.iteye.com/blog/1594391

Oracle的闪回功能可以在对数据库进行不完全恢复的情况下,对某一个指定的表进行恢复。闪回数据库是进行时间点恢复的新方法,它能够快速将Oracle恢复到以前的时间,以更正由于逻辑数据损坏或用户错误而引起的问题。当需要恢复时,可以将数据库恢复到错误前的时间点,并且只恢复改变的数据块。

Oracle中的闪回操作包括以下4种:

(1)查询闪回:查询过去某个指定时间、指定实体的数据,恢复错误的数据库更新、删除等。

(2)表闪回:使表返回到过去的某一时间的状态,恢复表、取消对表进行的修改。

(3)删除闪回:可以将删除的表重新恢复。

(4)数据库闪回:可以将整个数据库回退到过去的某个时间点。

1、查询闪回

查询闪回可以查看过去某一时点的任何数据,如果要查询某一表在某一时点的内容,可以把查询目标对象定位为该表在某一时点的表,表在某一时刻的表可以如下表示:

Sql代码  
  1. table_name as of timestamp real_timestamp; --它作为一个整体表示一个表*/

例如,要查询person表在2012-6-2 19:00:00的状态,可以使用如下语句:

Sql代码  
  1. select * from person as of timestamp to_timestamp('2012-6-2 19:00:00', 'yyyy-mm-dd HH24:mi:ss');

知道了表在某一时刻的表之后,我们就可以很容易的把表恢复到某一时刻的样子了,例如我们在2012-6-2 19:00:00这个时候删除了person表中的3条记录,之后我又想把它恢复,那应该如何恢复呢?利用查询闪回我们可以这样操作:

方法一:

第一步,把当前表中的数据全删了:delete from person;

第二步,我们通过查询闪回把2012-6-2 19:00:00这个时点之前的数据拿出来然后插入到当前表中,调用语句如下:

Sql代码  
  1. insert into person select * from person as of timestamp to_timestamp('2012-6-2 18:59:59', 'yyyy-mm-dd HH24:mi:ss');

方法二:

先找出从person表中删除的记录,然后再把它们插到person表中,Sql语句如下:

Sql代码  
  1. insert into person select * from person as of timestamp to_timestamp('2012-6-2 18:59:59', 'yyyy-mm-dd HH24:mi:ss') p where not exists(select * from person where id=p.id);

因为查询闪回是跟时间有关系的,所以说到这就再说一个设置,在sqlplus中输入set time on语句可以打开时间显示功能,这会使得在每次执行语句后都会在该语句的前面显示该语句的执行时间,使用set time off语句可以关闭该功能。

2、表闪回

利用表闪回可以轻松的取消对表的修改。只有Oracle的企业版才能进行表闪回。

对进行表闪回的表必须row movement为enable。

表闪回的语法格式如下:

Sql代码  
  1. flashback table [schema.]table_name[,...n] to {[scn] | [timestamp] [[enable | disable] triggers]};

其中,

scn:表示系统改变号,可以从flashback_transaction_query数据字典中查询。

timestamp:表示通过时间戳的形式来进行闪回。

enable|disable triggers:表示触发器恢复之后的状态,默认为disable。

示例代码:

(1)确保需要闪回的表row movement为enable:

Sql代码  
  1. alter table hello enable row movement;

(2)对表进行闪回:

Sql代码  
  1. flashback table hello to timestamp to_timestamp('2012-6-3 14:00:00','yyyy-mm-dd HH24:mi:ss');--恢复表到2012-6-3 14:00:00这个时候的样子*/

3、删除闪回

在Oracle数据库中有一个叫recyclebin的回收站,当回收站的功能是启用的时候,被用户drop的对象都会保存在recyclebin中,普通用户可以通过select * from recyclebin;语句查看被自己drop掉的对象的相关信息,当然如果普通用户想查看所有用户的recyclebin信息也是可以的,可以通过查看dba_recyclebin视图,DBA用户不存在recyclebin。来获取,如:select * from dba_recyclebin。如果被删除的对象不是彻底删除,而是放到了回收站的话,我们就可以在需要的时候从回收站中进行恢复了。

为了避免被删除的表与其他对象存在名称冲突,Oracle对被删除的对象进行了重命名,当然Oracle也保存了对象的原始名称。在进行对象恢复的时候可以使用对象的原始名称,也可以使用被重新命名的新名称。

系统参数recyclebin控制表删除后是否到回收站,show parameter recyclebin可以查看该参数的状态。

对于系统参数的修改有两种,全局的修改和会话的修改:

(1)alter system set param_name=param_value;

(2)alter session set param_name=param_value;

show recyclebin:可以显示当前用户recyclebin中的表。

purge tablespace tablespace_name:用于清空指定表空间的recyclebin;

purge tablespace tablespace_name user username:清空指定表空间的recyclebin中指定用户的对象。

purge table table_name:清除回收站中的指定表对象。如:purge table hello语句则将清除回收站中的hello表。这里的table_name既可以是原来的表对象名,也可以是

recyclebin中自动生成的名字。

purge recyclebin:删除当前用户的recyclebin中的对象。

purge dba_recyclebin:删除所有用户的recyclebin中的对象

drop table table_name purge:删除对象且不放在recyclebin中。

删除闪回的语法格式如下:

Sql代码  
  1. flashback table table_name to before drop [rename to new_name]; --恢复表table_name并重命名为new_name*/

示例代码:

Sql代码  
  1. flashback table hello to before drop rename to dropped_hello;

4、数据库闪回

数据库闪回可以使数据库回到过去某一时间点或SCN的状态,用户可以不用备份就能快速地实现时间点的恢复。只有Oracle的企业版才能进行数据库闪回。

转载于:https://www.cnblogs.com/pigga/p/10098283.html

oracle 闪回操作(flashback)相关推荐

  1. Oracle 闪回特性(FLASHBACK DROP RECYCLEBIN)

    --============================================== -- Oracle 闪回特性(FLASHBACK DROP & RECYCLEBIN) --= ...

  2. oracle中闪回和回滚,oracle闪回操作详解

    Oracle的闪回 oracle中为什么会有闪回呢!它的作用是什么呢?我们来学习一下闪回吧!闪回和回滚异曲同工之妙. 一闪回的介绍 (1)在Oracle的操作工程中,会不可避免地出现操作失误或者用户失 ...

  3. oracle闪回15分钟前,Oracle闪回技术(Flashback)

    闪回技术有闪回表.闪回删除.闪回查询.闪回事务查询.闪回事务.闪回数据库.闪回数据归档.其中,闪回查询.闪回事务查询用来"观察"过去:闪回数据归档并不是一个独立的功能,其功能是扩展 ...

  4. oracle闪回操作

    一.查询指定时间的数据快照 --1.查询执行过SQL语句,确定快照的时间 SELECT R.FIRST_LOAD_TIME,R.SQL_TEXT,R.* FROM V$SQLAREA R  WHERE ...

  5. Oracle闪回技术(Flashback)

    闪回技术有闪回表.闪回删除.闪回查询.闪回事务查询.闪回事务.闪回数据库.闪回数据归档.其中,闪回查询.闪回事务查询用来"观察"过去:闪回数据归档并不是一个独立的功能,其功能是扩展 ...

  6. Oracle 闪回(flashback)数据库到指定时间点

    如果是update,delete类误操作且已经commit,优先考虑使用flashback query进行恢复. select * from test1 as of timestamp to_time ...

  7. 6. Oracle闪回特性

    Oracle 闪回 (flashback)是9i版本提供的新特性.这一特性:其他数据库(PostgreSQL,Mysql)是羡慕不已.对数据恢复提供非常便捷的方式.闪回技术通常用于快速简单恢复数据库中 ...

  8. oracle会闪,Oracle闪来操作

    Oracle闪回操作 Oracle闪回操作 1.记录当前时间或SCN 在数据库变动前记录时间或SCN SQL> select  to_char(sysdate,'YYYY-MM-DD HH24: ...

  9. oracle10G 错误删除数据或者表 闪回功能帮你忙。。。闪回操作例子

    闪回查询 (1).查询闪回 例如: 1)在删除员工smith记录后,希望查询到删除该行记录前的值,则可以查询emp在'2007-02-11 23:34:05'时的数据,查询方法如下: select * ...

最新文章

  1. springboot超详细教程_全网最细致的SpringBoot实战教程,超适合新手小白入坑学习...
  2. OpenYurt v0.4.0 新特性发布:高效地管理边缘存储资源
  3. 【转摘】如何得心应手的玩转Excel
  4. include_fns.php_一步一步教你用PHP+MySql筹建网站 No.3 管理页面_mysql
  5. jsf 项目_您将在下一个项目中使用JSF吗?
  6. EF 6 code first - 从SQL server迁移到MySQL
  7. Cocos2dx 3.11版本 视频添加跳过按钮
  8. 【转】Windows Azure的账户体系
  9. .NET牛人应该知道些什么(转)?
  10. [转]神奇选股指标问世,每月稳定获利有保障
  11. java applet介绍,Java Applet 介绍
  12. 【转载】前端项目开发流程及技术选型
  13. ps批量修改图片尺寸
  14. 2019年最新手游脚本开发教程
  15. Linux C语言磁盘U盘容量读取、目录列表读取、文件夹大小读取
  16. 【SourceTree】项目版本控制
  17. 一文搞懂lib中physical cell
  18. 拖稿一年的开心网研究
  19. 推理规则/经典规则(排中律/反证法双重否定消除)
  20. 计算机组成原理各章测试错题

热门文章

  1. eclipse占用内存过大_Java性能调优学习(三)-jmap+mat分析内存溢出问题实战
  2. Python正则表达式笔记
  3. linux android build tools,build.gradle 文件中的 Android SDK Build Tools version
  4. lisp文字上标源码_创建文本/标注样式源码 - AutoLISP/Visual LISP 编程技术 - CAD论坛 - 明经CAD社区 - Powered by Discuz!...
  5. python中自带的模块_python中的模块详解
  6. 【开源项目】保存YUV420数据到本地
  7. C语言 | 6种常用的转换工具函数盘点
  8. java打印等边三角市,java 打印菱形和等边三角形
  9. 田忌赛马c语言程序设计,还是杭电1052田忌赛马
  10. Ubuntu20.04 服务器版安装