当前位置:  数据库>oracle

Oracle delete数据后恢复办法示例

    来源: 互联网  发布时间:2017-04-27

    本文导语:  1       创建表 SQL>create table wdongh(   2  id  integer,   3  name  varchar2(60)   4  ); 2       插入数据 SQL>insert into wdongh values(1,'wdh'); 1 rowinserted SQL>insert into wdongh values(2,'xiaoming'); 1 rowinserted SQL>insert into wdongh values(3,'hanmei'); 1 ro...

1       创建表

SQL>create table wdongh(

  2  id  integer,

  3  name  varchar2(60)

  4  );

2       插入数据

SQL>insert into wdongh values(1,'wdh');

1 rowinserted

SQL>insert into wdongh values(2,'xiaoming');

1 rowinserted

SQL>insert into wdongh values(3,'hanmei');

1 rowinserted

SQL>insert into wdongh values(4,'leilei');

1 rowinserted

SQL>select * from wdongh;

                     ID               NAME

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

                      1               wdh

                      2               xiaoming

                      3               hanmei

                      4               leilei

3       删除数据

SQL>delete from wdongh;

4 rowsdeleted

SQL>commit;

Commitcomplete

SQL>select * from wdongh;

                    ID               NAME

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

4       获得当前SCN

Oracle 仅根据 SCN 执行恢复,它定义了数据库在某个确切时刻提交的版本。在事务提交时,它被赋予一个唯一的标示事物的SCN 。获得当前SCN的目的是:可以进行闪回查询尝试.

SQL>select dbms_flashback.get_system_change_number from dual;

GET_SYSTEM_CHANGE_NUMBER

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

                  668754

SQL>select count(*) from wdongh as of scn 668754;

  COUNT(*)

----------

         0

5       确定delete时的scn号 5.1   建立一个临时表用于存储在scn为多少的时候执行了delete

SQL>create table temp(count int,scn int);

Tablecreated

5.2   往临时表中加入数据

SQL>declare

  2  iint :=668700;

  3 begin

  4  fori in 668700..668754 loop

  5   insert into temp (scn) values (i);

  6   update  temp set count=(selectcount(*) from wdongh as of scn i) where scn=i;

  7  endloop;

  8  end;

  9  /

PL/SQLprocedure successfully completed

SQL>commit;

Commitcomplete

5.3   查询scn为多少时执行了delete

SQL>select  * from temp where count >0;

                                  COUNT                                     SCN

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

                                      4                                  668700

                                      4                                  668701

                                      4                                  668702

                                      4                                  668703

                                      4                                  668704

                                      4                                  668705

                                      4                                  668706

                                      4                                  668707

8 rowsselected

SQL>select count(*) from wdongh as of scn 668707;

  COUNT(*)

----------

         4

SQL>select count(*) from wdongh as of scn 668708;

  COUNT(*)

----------

         0

我们看到在scn为668707时数据还在,即scn为668708就是我们delete的事务号。

6       恢复数据

SQL>insert into wdongh select * from wdongh as of scn 668707;

4 rowsinserted

SQL>select count(*) from wdongh;

  COUNT(*)

----------

         4

7       干掉临时表temp

SQL>drop table temp;

Tabledropped

SQL>commit;

Commitcomplete

更多Oracle相关信息见 专题页面


    
 
 

您可能感兴趣的文章:

  • oracle while的用法示例分享
  • CSS属性参考手册 iis7站长之家
  • ORACLE 毫秒与日期的相互转换示例
  • java使用jdbc链接Oracle示例类分享
  • Oracle数据库安装配置示例
  • java操作oracle数据库示例
  • Oracle数据库安装配置流程示例详细解析
  • oracle表空间中空表统计方法示例介绍
  • oracle创建删除用户示例分享(oracle删除用户命令及授权)
  • 数据库查询排序使用随机排序结果示例(Oracle/MySQL/MS SQL Server)
  • Oracle层次查询和with函数的使用示例
  • php连接oracle数据库的示例代码
  • ORACLE实现字段自增示例说明
  • SqlServer实现类似Oracle的before触发器示例
  • oracle截取字符(substr)检索字符位置(instr)示例介绍
  • Oracle外键不加索引引起死锁示例
  • Oracle定义DES加密解密及MD5加密函数示例
  • Oracle数据库密码重置、导入导出库命令示例应用
  • 随机获取oracle数据库中的任意一行数据(rownum)示例介绍
  • oracle comment命令用法示例分享
  • Oracle数据库恢复后心得
  • 关于系统重装后Oracle数据库完全恢复的解决办法
  • oracle drop table(表)数据恢复方法
  • Oracle数据库备份和恢复工具 RMan
  • oracle备份恢复的具体方法
  • oracle中误删除表后恢复语句(FLASHBACK)
  • oracle冷备份恢复和oracle异机恢复使用方法
  • 在Oracle 10gR2中设定指定的恢复点实现轻松闪回
  • Oracle重做日志文件损坏或丢失后的恢复
  • Oracle11g备份和恢复功能的提高
  • 实战Oracle数据库备份与恢复
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • oracle远程连接服务器出现 ORA-12170 TNS:连接超时 解决办法
  • Linux系统下安装Oracle X11错误解决办法
  • oracle中文乱码解决的办法
  • Oracle安装后8080和80端口被占用的解决办法
  • Oracle em中按钮乱码解决办法
  • Oracle 11G SELinux原因启动失败的解决办法
  • linux下用什么办法连接oracle数据库并且读取数据呢?(用c++代码实现时)
  • Oracle 实现类似SQL Server中自增字段的一个办法
  • oracle em 按钮乱码解决办法及em网页变成英文
  • 用jsp连上oracle后,在JSP中用(INSERT)插入中文数据后,显示乱码,有办法吗?
  • Oracle 8i字符集乱码问题析及其解决办法
  • PDO取Oracle lob大字段,当数据量太大无法取出的问题的解决办法
  • Linux 下数据库oracle出现ORA-27102错误的解决办法
  • Oracle中被锁定的解决办法
  • Oracle控制文件的损坏或完全丢失的恢复办法
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍
  • SCO unix下安装oracle,但没有光盘,请大家推荐一个oracle下载站点(unix版本的)。谢谢!!!!
  • oracle中如何把表中具有相同值列的多行数据合并成一行
  • 请问大家用oracle数据库, 用import oracle.*;下的东西么? 还是用标准库?
  • Oracle 数据库(oracle Database)性能调优技术详解
  • Linux /$ORACLE_HOME $ORACLE_HOME


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,