免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 891 | 回复: 0
打印 上一主题 下一主题

flashback (4) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-21 08:43 |只看该作者 |倒序浏览
4.对DML操作的闪回查询
Oracle10g对于闪回查询进行了增强,支持更简单的SQL操作,允许对误删除、误更新等DML操作进行闪回。关于9i的闪回查询请参考另一篇blog文章:
http://blog.chinaunix.net/u/10516/showart.php?id=482946
 
a.测试
  1. SQL>conn u1/u1
  1. SQL> create table t as select * from dba_users;
Table created.
 
  1. SQL> select count(*) from dba_users;
  COUNT(*)
----------
        22
 
  1. SQL> delete from t;
22 rows deleted.
 
  1. SQL> select count(*) from t;
  COUNT(*)
----------
         0
 
  1. SQL> select dbms_flashback.get_system_change_number from dual;
select dbms_flashback.get_system_change_number from dual
       *
ERROR at line 1:
ORA-00904: : invalid identifier

  1. SQL> conn sys/sys as sysdba
Connected.

  1. SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
                 1388195
 
  1. SQL> select count(*) from t as of scn 1388190;
select count(*) from t as of scn 1388190
                     *
ERROR at line 1:
ORA-00942: table or view does not exist
 

  1. SQL> conn u1/u1
Connected.
 
  1. SQL> select count(*) from t as of scn 1388193;
  COUNT(*)
----------
         0
 
  1. SQL> select count(*) from t as of scn 1388190;
  COUNT(*)
----------
        22
 
--在scn 1388190的时刻数据都还在。
 
  1. SQL> insert into t select * from t as of scn 1388190;
22 rows created.
 
  1. SQL> select count(*) from t;
  COUNT(*)
----------
        22
 

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP