1、问题定义

闪回是dba做的工作。现在也可授权给某个用户。

闪回的定义:就是将用户错误的操作回恢到以前的状态。即使你的事务提交的commit。

如果你删除了一个表。Drop table(DDL) 不用commit直接生效的。

闪回:flashback。

概念:

Oracle默认有2G硬盘空间,这2G的数据,保存的是用户的某些操作记录。如果用户操作的数据在这2G之内的。则可以条件闪回。

这个区域可以设置为最大10G。

在Oracle中,默认还有一个选项,时间选项。默认是900秒。

通过以下方式可以查询这个时间选项:

可以修改这个值:

2、闪回

闪回分类:

1:闪回表中的数据 –

闪回执行错误的CRUD语句。

且是提交以后的数据。

即对insert,update,delete有效。且已经提交了,则可以使用闪回。

2:闪回删除

错误的执行了drop table语句。则通过闪回删除可以找回以前数据。

3:闪回版本查询

向一个表中,做的任何一个commit语句。Oracle数据库,都会给你记录一个版本。

4:闪回事务查询

执行了多条sql语句,且是对多个表,或是对一个表的多次操作。

闪回的语法:

Flashback table {tableName} to

{

(scn|timestamp)

|

Before drop

}

SCN :System Changement Number – 其实就是一个时间。与时间一一对应的

Timestamp: 时间点 ,sysdate

--如何获取时间号:SCN

通过一个函数:

2.1、闪回表

必须要打开行移动功能,为rowid设置移动空间。

根据SCN时间号闪回:

根据时间闪回:

2.2、闪回删除

就是闪回通过drop删除到回收站中的表数据。

Flashback table tableName to before drop;

SQL> --删除stud这表

SQL> drop table stud;

表已删除。

SQL> select *from tab;

TNAME TABTYPE CLUSTERID

--------------- ---------------- ----------

BIN$O1guMhXtQtK TABLE

BrmH0wA44/Q==$0

BONUS TABLE

DEPT TABLE

EMP TABLE

SALGRADE TABLE

SYS_TEMP_FBT TABLE

已选择6行。

SQL> --通过show 可以查看回收站中信息

SQL> show recyclebin;

ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME

---------------- ------------------------------ ------------ -------------------

STUD BIN$O1guMhXtQtKBrmH0wA44/Q==$0 TABLE 2013-03-28:19:29:16

SQL> --闪回

SQL> flashback table stud to before drop;

闪回完成。

SQL> show recyclebin;

SQL> select *from tab;

TNAME TABTYPE CLUSTERID

--------------- ---------------- ----------

BONUS TABLE

DEPT TABLE

EMP TABLE

SALGRADE TABLE

STUD TABLE

SYS_TEMP_FBT TABLE

已选择6行。

SQL> select * from stud;

ID NAME

---------- ----------

1 Jack

2 张三

3 Rose

表如果重名:

SQL> drop table stud;

表已删除。

SQL> show recyclebin;

ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME

---------------- ------------------------------ ------------ -----------------

STUD BIN$jMt4lVtBQXieHhRHitV3KA==$0 TABLE 2013-03-28:19:33:

STUD BIN$4mfx44bSSo+NPkgEhU/Mig==$0 TABLE 2013-03-28:19:31:

SQL> --通过表名闪回,只会删除最近删除的那一个

SQL> flashback table stud to before drop;

闪回完成。

SQL> select * from stud;

AGE ADDR

---------- ------------------------------------------------------------

90 山东

SQL> show recyclebin;

ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME

---------------- ------------------------------ ------------ -----------------

STUD BIN$4mfx44bSSo+NPkgEhU/Mig==$0 TABLE 2013-03-28:19:31:

SQL> flashback table stud to before drop rename to stud2;

闪回完成。

SQL> select * from stud2;

ID NAME

---------- ----------

1 Jack

2 张三

3 Rose

还有一种闪加方式:

2.3、闪回版本查询

在Oracle数据库中,有一个对象versions记录的是对某个表的commit操作。

记录下的信息

1:versions_starttime – 什么时间开始的。对insert

2:versions_endtime – 什么时间数据就没有了,当执行delete,update时。

3:versions_startscn – 与1对应

4:versions_endscn – 与2对应

5:versions_xid – 操作的事务的id。

2.3.1、在Oracle中事务的边界

开始:

在Oracle中以insert,update,delete为事务的开始标记。

结束:

在执行rollback,commit.

在执行DDL(create ,drop ,alter)语句时,也是事务的结束。Commit

示例:

SQL> select *from stud;

AGE ADDR

---------- ----------------------------------------

90 山东

SQL> insert into stud values(12,'BJ');

已创建 1 行。

SQL> select * from stud;

AGE ADDR

---------- ----------------------------------------

90 山东

12 BJ

SQL> create table stss(iii int);

表已创建。

SQL> rollback;

回退已完成。

SQL> select * from stud;

AGE ADDR

---------- ----------------------------------------

90 山东

12 BJ

SQL> commit;

提交完成。

SQL> delete from stud where age=12;

已删除 1 行。

SQL> select * from stud;

AGE ADDR

---------- ----------------------------------------

90 山东

SQL> drop table st;

drop table st

*

第 1 行出现错误:

ORA-00942: 表或视图不存在

SQL> select * from stud;

AGE ADDR

---------- ----------------------------------------

90 山东

SQL> rollback;

回退已完成。

SQL> select * from stud;

AGE ADDR

---------- ----------------------------------------

90 山东

SQL>

2.3.2、查询一个表的版本信息

对于versions而言语法:

Select id,name,

Versions_xid

From person

Versions between ( scn | timestamp) minvalue and maxvalue;

SQL> select id,name,versions_xid from person versions between timestamp minvalue

and maxvalue;

ID NAME VERSIONS_XID

---------- ---------- ----------------

22 BCCCCC 0500130099020000

2 BBBBB 0500130099020000

11 ABBBB 0700020080020000

1 AAA 0700020080020000

2.4、闪回事务查询

原则就是根据某个versions_xid- 事务id

对应这versionss_id会有一个撤销的sql==== undo_sql

即对于insert的commit来说,则撤销应该是delete

在oracle中,有一个表

Flashback_transaction_query表。保存了所有用户可撤销的sql语句。

以下是这个表的结构:

Table_name

Undo_sql

Xid对应的就是versions_xid

Grant select any transaction to scott;

Oracle闪回详解的更多相关文章

  1. Oracle 闪回特性(FLASHBACK DATABASE)

    --===================================== -- Oracle 闪回特性(FLASHBACK DATABASE) --======================= ...

  2. Oracle闪回flashback

    参考资料:Using Oracle Flashback Technology Oracle 11g的新特性闪回操作 闪回查询 闪回查询 闪回版本查询 闪回事务查询 闪回数据 闪回表 闪回删除 闪回数据 ...

  3. Oracle权限管理详解

    Oracle权限管理详解 转载--CzmMiao的博客生活 Oracle 权限 权限允许用户访问属于其它用户的对象或执行程序,ORACLE系统提供三种权限:Object 对象级.System 系统级. ...

  4. Oracle AWR 报告详解

    转自:http://blog.csdn.net/laoshangxyc/article/details/8615187 持续更新中... Oracle awr报告详解 DB Name DB Id In ...

  5. ORACLE数据库备份与恢复详解

    ORACLE数据库备份与恢复详解 学习过程中的总结,有兴趣不妨看看,如果有不对的地方,高手不要留情!! Oracle的备份与恢复有三种标准的模式,大致分为两 大类,备份恢复(物理上的)以及导入导出(逻 ...

  6. Oracle执行计划详解

    Oracle执行计划详解 --- 作者:TTT BLOG 本文地址:http://blog.chinaunix.net/u3/107265/showart_2192657.html --- 简介:   ...

  7. oracle表分区详解

    原文来自:http://www.cnblogs.com/leiOOlei/archive/2012/06/08/2541306.html oracle表分区详解 从以下几个方面来整理关于分区表的概念及 ...

  8. Java从入门到精通——数据库篇Oracle 11g服务详解

    装上Oracle之后大家都会感觉到我们的电脑慢了下来,如何提高计算机的速度呢?我们应该打开必要的服务,关闭没有用的服务.下面是Oracle服务的详解: Oracle ORCL VSS Writer S ...

  9. oracle rac IP详解

    rac环境下vip/public/private IP的区别 每个节点要2块网卡, 3个IP,虚拟IP或者叫做业务IP,单个网卡当掉可以“漂”到其他网卡是继续提供服务 在Oracle RAC环境下,每 ...

随机推荐

  1. 0124——KVC KVO模式

    1.KVC KVC是Key-Value-Coding的简称,它是一种可以直接通过字符串的名 字(key)来访问类属性(实例变量)的机制.而不是通过调用Setter.Getter方法访问.当使用KVO. ...

  2. 1215.1——动态分配内存的补充realloc

    当再次在原来申请的内存基础上再加内存的时候用realloc,如果第一次分配的内存后面存储地方够用,则连着原来的申请,如果不够用,就重新找到一块够用的地方,然后把原来的复制过去 int main(int ...

  3. javascript 高级程序设计学习笔记(面向对象的程序设计) 1

    Object构造函数或对象字面量都可以用来创建对象,但这些方式有个明显的缺点:使用相同一个接口创建很多对象,会产生大量重复代码. 工厂模式 //工厂模式 function createDog (nam ...

  4. Image的Stride

    参看下面链接:http://msdn.microsoft.com/en-us/library/aa473780

  5. Redis 入门之编译安装

    Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发工作由VMware主 ...

  6. iOS Layer CABasicAnimation

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  7. iOS GCD使用整理

    自己进行一个复习整理 1.最简单的用法 全局并行 dispatch_async(dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_ ...

  8. 利用Azure Automation实现云端自动化运维(3)

    Azure automation的认证方式:证书   该种方式是推荐的进行Automation认证的方式,好处在于安全性高,过期时间由自己控制,不好的地方在于大家在Windows上要生成证书比较麻烦, ...

  9. Apache监控

    Apache性能监控 http://www.cnblogs.com/fnng/archive/2012/11/11/2765463.html 要监控apache的性能,我们需要修改配置文件,允许查看a ...

  10. BZOJ 1062 糖果雨

    http://www.lydsy.com/JudgeOnline/problem.php?id=1062 思路:找到平行四边形以后,变换坐标:y->y-kx,k为斜率,这样变成了矩形,然后只要二 ...