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. 改进的简单Tooltips显示

    使用js简单改进了Tooltips的显示效果,可进一步使用CSS对改进的Tooltips进行美化. 前台布局代码: <asp:Panel ID="Panel1" runat= ...

  2. java final 和instanceof 关键字

    /* final class A { public final void eat(){ System.out.println("测试"); } } */ class A { } c ...

  3. 【转载】NSURLSession教程

    原文:http://www.raywenderlich.com/51127/nsurlsession-tutorial 查理·富尔顿 2013年10月9日, 推特 注意从雷 :这是一个缩写版的一章 i ...

  4. Intellij Idea 创建Web项目入门(一)转

    Intellij Idea 创建Web项目入门(一) 相关软件: Intellij Idea14:http://pan.baidu.com/s/1nu16VyD JDK7:http://pan.bai ...

  5. [转]PictureEx.h和PictureEx.cpp源文件

    要显示一个gif,网上找了个,子类化了MFCl图片控件,用着方便,记一下 转自:http://www.bccn.net/Article/net/vcnet/jszl/200709/6386.html ...

  6. Draw2d中的布局管理器Layout比较

    最近在研究Eclipse中的GEF开发,在跟着GEF-whole-upload教程做一个GEF应用程序的例子时,发现Figure上的控件无法显示,谷歌了很久也没找到解决方案,最后终于发现是Layout ...

  7. slave延迟原因及优化方法

    转载叶总:http://imysql.com/2015/04/12/mysql-optimization-case-howto-resolve-slave-delay.shtml 一般而言,slave ...

  8. ORACLE的客户端如何连接到数据库

    如何连接oracle数据库及故障解决办法   如何配置才能使客户端连到数据库:     要使一个客户端机器能连接oracle数据库,需要在客户端机器上安装oracle的客户端软件,唯一的例外就是jav ...

  9. CI(CodeIgniter)学习第一讲

    一.CI的优势一. (1).CI是一个PHP框架:大家都知道PHP框架有很多,CI只是其中之一,框架是为了重用发明的.同样,CI的目标是实现让你比从零开始编写代码更快速地开发项目.CI可以将需要完成的 ...

  10. Yii 安装

    // 安装 composer curl -s http://getcomposer.org/installer | php // 把 composer 添加到全局命令 mv composer.phar ...