Oracle里面有一个回闪的操作,这个貌似sql server是没有的。要使用这个功能,需要用到两个时间内部函数

TIMESTAMP和TO_TIMESTAMP。其中,函数TO_TIMESTAMP的语法格式为:

TO_TIMESTAMP('timepoint', 'format')

另外我发现Oracle里的所有操作,如果不使用commit;的话,都是没起实际作用的。另起一个操作窗口就会发现数据还是完好的。如下图示,我依次输入的是:

set time on
select * from rollxsb;
delete from rollxsb;
select * from rollxsb;
select * from rollxsb as of timestamp to_timestamp('2013-7-8 21:51:34','yyyy-mm-dd hh24:mi:ss');

请注意,我这个时间还没有敲commit;然后我用Oracle SQL Developer连接,再次输入select * from rollxsb;发现照样可以看到那三条记录,于是我再次返回SQL*PLUS并输入commit;这一次之后,我在SQLDevelper里面只能输入

select * from rollxsb as of timestamp to_timestamp('2013-7-8 21:51:34','yyyy-mm-dd hh24:mi:ss');才能查询到那三条记录了。

既然能够查询到,那么我想理所当然的可以用insert into 插回来了。sql server都支持的insert into 操作,作为数据库中的王牌Oracle没有道理没有这种语法,于是输入:

insert into rollxsb select * from rollxsb as of timestamp to_timestamp('2013-7-8 21:51:34','yyyy-mm-dd hh24:mi:ss');

发现数据已插回了rollxsb表了。这里同样的需要按F11或图示中的红圈以提交改动,才能在SQL*PLUS里面用select * from rollxsb看到那三条结果。

感觉Oracle这里必须手动commit;才能提交改动的设计确认很高,防止很多人的误操作delete,不过千万记住,truncate是不支持这一操作的。如果你不幸在SQL*PLUS中执行了

truncate table rollxsb;的话,那么很悲剧的告诉你,是无法回滚回来的,而且这个也无须commit;就立即生效了。最后,我用了表回滚也没有成功。

alter table rollxsb enable row movement;
flashback table rollxsb of timestamp to_timestamp('2013-7-8 21:51:34','yyyy-mm-dd hh24:mi:ss');

所以truncate这一权限,慎开慎放为妙。

另外我使用上面的语句在delete from rollxsb;之后执行,发现显示是执行成功,但数据是没有找回来。这说明表闪回,只是对表结构的回滚操作,对找回数据是没有用的。

Oracle11g R2学习系列 之五回闪的更多相关文章

  1. Oracle11g R2学习系列 之二基本概念和环境介绍

    昨天安装好了之后,发现用Chrome打开OEM发现是英文的,搞得我好奇怪:安装时明明自动显示的是中文的,为何会是英文的呢.后来想想会不会是Oracle用的是浏览器的语言呢,果断打开Chrome的设置, ...

  2. Oracle11g R2学习系列 之七安全性

    其实,对于目前我使用的Oracle的水平来看,还达不到使用安全管理的高度,只是作为一个学习来看一下. 关于Oracle的安全管理,一般使用OEM来操作完成好了,入口是:OEM的“服务器”属性页中,选择 ...

  3. Oracle11g R2学习系列 之一安装篇

    前言 最近想去前同事推荐的一个Oracle相关的岗位竞争一下,由于之前没有使用Oracle的相关经验,所以决定学习一下,就算最终岗位应聘不成,至少也有了一些Oracle经验了,说不定哪天就用上了.再说 ...

  4. Oracle11g R2学习系列 之十 解决EM不能用

    不知道是什么原因https://localhost:1158/em,今天突然就不能用了.做了好多搜索也没有解决.现象是在services.msc中,不能重启OracleDBConsole服务,提示: ...

  5. Oracle11g R2学习系列 之九 PL/SQL语言

    这是个重头戏,如果精通了PL/SQL,毫不夸张的说明精通了Oracle了.PL/SQL由以下三个部分组成(Definition,Manipulation,Control): DDL:数据定义语言,Cr ...

  6. Oracle11g R2学习系列 之八高级数据类型

    所谓的高级数据类型,就是大数据类型,即BCNB(助记词:BC牛逼)+XML数据类型. B:blob,用来存储可变长度的二进制数据. C:clob,主要用来存储可变长度的字符型数据,也就是其他数据库中提 ...

  7. Oracle11g R2学习系列 之六数据库链接,快照及序列

    Create public database link link_name Connect to user identified by password using 'DBName' 为'DBName ...

  8. Oracle11g R2学习系列 之四Maven+Struts+Spring实验

    今天试一下Java调用Oracle来看一下.会不会也如昨天实验的一样坑呢?由于我对于Java也接触的不多,所以不打算直接使用该收提供的实验文档,而是自己利用Maven+Struts+Spring来自己 ...

  9. Oracle11g R2学习系列 之三教程选择

    工欲善其事必先利其器,选择一本入门教程也是很重要的,本人使用的也是这位同事推荐的电子工业出版社的<<Oracle 实用教程(第3版)>>郑阿奇主编,可以至这里购买到,我个人还是 ...

随机推荐

  1. 关于exec命令函数

    exec执行某命令在命令行下没有问题,但是在php中就出错.这个问题99.99%与权限有关,但是exec执行的命令不会返回错误.一个技巧就是使用管道命令,假设你的exec调用如下: exec('con ...

  2. 万维网发布服务(w3svc)已停止,除非万维网发布服务(w3svc)正在运行。

    近来遇到一个IIS服务启动问题,重启服务器PC后,网站启动的时候,提示“ 万维网发布服务(w3svc)已停止,除非万维网发布服务(w3svc)正在运行”. 解决方法: 点击"开始" ...

  3. Ubuntu 12.04 更新源

    转载自:http://www.cnblogs.com/eastson/archive/2012/08/24/2654163.html 1.首先备份Ubuntu12.04源列表 sudo cp /etc ...

  4. 使用jquery 操作checkbox

    checkbox 的全选与全不选以及获取选择的值. 效果: <!DOCTYPE html> <html lang="en"> <head> &l ...

  5. cf C. Matrix

    http://codeforces.com/contest/365/problem/C 构造出的矩阵中的长方形的和等于构成它的长的那些数字的和加上构成它的宽的那些数字的和. 也就是求这个字符串中的两个 ...

  6. SVN莫名出错,网上找遍无果,递归删除当前目录下所有.svn文件名

    哎,太深刻的教训. 原来以前其它目录里有.SVN目录 ,而此SVN目录COPY到真正的SVN工作目录之后,会将有用的.SVN目录覆盖. 那么一样,显然,CI,UPDATE,CO之间的命令全部异常... ...

  7. Bring it on

    I am going to open a whole new English Blog here. Most blogs here would be computer technologies, in ...

  8. Spring 的优秀工具类盘点第 1 部分

    文件资源操作 文件资源的操作是应用程序中常见的功能,如当上传一个文件后将其保存在特定目录下,从指定地址加载一个配置文件等等.我们一般使用 JDK 的 I/O 处理类完成这些操作,但对于一般的应用程序来 ...

  9. jQuery鼠标悬停图片放大显示

    jQuery鼠标悬浮放于图片上之后图片放大显示的效果,即鼠标移到图片上图片突出显示,鼠标移开后恢复原来的模样,你可以在图片滚动效果中加上本特效,相信会更炫一些. <!DOCTYPE html P ...

  10. inline-block及解决空白间距

    參考:http://www.jb51.net/css/76707.html http://www.webhek.com/remove-whitespace-inline-block/ inline-b ...