博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
oracle10G 错误删除数据或者表 闪回功能帮你忙。。。闪回操作例子
阅读量:6203 次
发布时间:2019-06-21

本文共 2214 字,大约阅读时间需要 7 分钟。

闪回查询
(1).查询闪回
例如:
1)在删除员工smith记录后,希望查询到删除该行记录前的值,则可以查询emp在'2007-02-11 23:34:05'时的数据,查询方法如下:
 
  1. select * from emp as of timestamp to_timestamp('2007-02-11 23:34:05','yyyy-mm-dd hh24:mi:ss') where ename='SMITH';
2)查询当前时间
alter session set nls_date_format='yyyy-mm-dd hh24:mi;ss';  select sysdate from dual;  delete from emp;  commit;
  1. select * from emp as of timestamp to_timestamp('2007-02-11 23:34:05','yyyy-mm-dd hh24:mi:ss');  
可以将闪回的数据重新插入到表中:
insert into empbak (select * from empbak as of timestamp to_timestamp('2007-02-11 23:34:05','yyyy-mm-dd hh24:mi:ss'));
(2).表闪回
表闪回要求用户必须要有flash any table权限,首先,必须对表进行下以下操作:
 
  1. alter table empbak enable row movement;
执行闪回操作
 
  1. flashback table emp to timestamp to_timestamp('2007-02-11 23:34:05','yyyy-mm-dd hh24:mi:ss');
注:如果表结构发生改变就没有办法闪回。
(3).删除闪回
删除闪回为删除oracle10g中的数据库实体提供了一个安全机制,当用删除一个表时,oracle10g 会将该表放到回收站中,回收站中的对象一真会保留,直到用户决定永久删除它们或出现表空间的空间不足时才会被删除。回收站是一个虚拟容器,用于存储所有被删除的对象。数据字典user_tables中的列dropped表示被删除的表.查询方法如下:
 
  1. select table_name,dropped from user_tables;
也可以使用show命令显示回收站信息
 
  1. sql>show recyclebin
或查询数据字典user_recyclebin获得回收站信息
 
  1. SQL> select object_name,original_name,type,droptime from user_recyclebin;
例如;恢复被删除的表emp.
 
  1. SQL>flashback table emp to before drop;
如果不知道原表名,可以直接使用回收站中的名称进行闪回。
 
  1. SQL>flashback table "Bin$DSbdfd4rdfdfdfegdfsf==$0" to before drop;
在回收的同时可以修改表名:
 
  1. SQL>flashback table "Bin$DSbdfd4rdfdfdfegdfsf==$0" to before drop rename to emp1;
真正删除某一个表,而不进入回收站,可以在删除表时增加purge选项.如将emp表彻底删除.
 
  1. SQL>drop table emp purge;
也可以通过删除recyclebin区域来永久性删除表 ,原始删除表
 
  1. drop table emp cascade constraints
 
  1. SQL>purge table emp;
     
删除当前用户的回收站
 
  1. SQL>purge recyclebin;
删除全体用户在回收站的数据.
 
  1. SQL>purge dba_recyclebin
(4).数据库闪回
使用数据库闪回功能,可以使数据库回到过去某一状态, 语法如下:  
SQL>alter database flashback on  SQL>flashback database to scn 46963;  SQL>flashback database to timestamp to_timestamp('2007-2-12 12:00:00','yyyy-mm-dd hh24:mi:ss');

 表中数据删除 闪回 。,,,,,
1、运行 ------cmd--------
2、C:\Documents and Settings\Administrator>sqlplus 回车
3、请输入用户名:fw/fw@oradb22    (闪回数据库用户名/密码@数据库)
4、
SQL> alter table pr_project enable row movement;     (更改表的属性 。)
5、
SQL> flashback table pr_project to timestamp to_timestamp('2008-11-07 11:20:00','yyyy-mm-dd hh24:mi:ss');
 
闪回例子: 

转载于:https://www.cnblogs.com/smile-wei/archive/2012/02/16/2354049.html

你可能感兴趣的文章
被吐嘈的NodeJS的异常处理
查看>>
html meta标签使用总结(转)
查看>>
iOS APP 安全测试
查看>>
Bitmap尺度变换
查看>>
mybatis if-else(写法)
查看>>
apache 虚拟主机详细配置:http.conf配置详解
查看>>
ON DUPLICATE KEY UPDATE
查看>>
SRA秘钥生成与解密
查看>>
Spring Cloud 5分钟搭建教程(附上一个分布式日志系统项目作为参考) - 推荐
查看>>
JSON.parseObject(String str)与JSONObject.parseObject(String str)的区别
查看>>
Word中摘要和正文同时分栏后,正文跑到下一页,怎么办?或Word分栏后第一页明明有空位后面的文字却自动跳到第二页了,怎么办?...
查看>>
android JNI调用(Android Studio 3.0.1)(转)
查看>>
元类型与类型的区别
查看>>
【Android Studio安装部署系列】目录
查看>>
长生生物狂犬病疫苗造假
查看>>
牛客网_Go语言相关练习_选择题(2)
查看>>
Spring Boot 静态资源访问原理解析
查看>>
[Leetcode] Next Permutation
查看>>
美国移民局的I797表原件和I129表是什么呢
查看>>
jqGrid + JSON + WebService 完整示例
查看>>