`
ztfjava
  • 浏览: 70253 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Oracke 误删数据的处理方法

阅读更多
SCN(系统改变号),它的英文全拼为:System Change Number ,它是数据库中非常重要的一个数据结构。
  SCN提供了Oracle的内部时钟机制,可被看作逻辑时钟,这对于恢复操作是至关重要的
  注释:Oracle 仅根据 SCN 执行恢复。
  它定义了数据库在某个确切时刻提交的版本。在事物提交时,它被赋予一个唯一的标示事物的SCN 。一些人认为 SCN 是指, System Commit Number ,而通常 SCN 在提交时才变化,所以很多情况下,
  这两个名词经常被交替使用。
  究竟是哪个词其实对我们来说并不是最重要的,重要的是我们知道 SCN 是 Oracle 内部的时钟机制, Oracle 通过 SCN 来维护数据库的一致性,并通过SCN 实施 Oracle 至关重要的恢复机制。
  具体执行流程我们可从以下几个示例图中体会;
  1.原表记录 $ sqlplus eygle/eygle
  SQL*Plus: Release 10.1.0.2.0 - Production on Wed Mar 30 08:52:04 2005
  Copyright (c) 1982, 2004, Oracle. All rights reserved.
  Connected to:
  Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - 64bit Production
  With the Partitioning, OLAP and Data Mining options
  SQL>select count(*) from t1;
  COUNT(*)
  ----------
  9318
  2.误删除所有记录
  并且提交更改。
  SQL>delete from t1;
  9318 rows deleted.
  SQL>commit;
  Commit complete.
  SQL>select count(*) from t1;
  COUNT(*)
  ----------
  0
  3.获得当前SCN
  如果能够确切知道删除之前SCN最好,如果不知道,可以进行闪回查询尝试.
  SQL>select dbms_flashback.get_system_change_number from dual;
  GET_SYSTEM_CHANGE_NUMBER
  ------------------------
  10671006
  SQL>select count(*) from t1 as of scn 10671000;
  COUNT(*)
  ----------
  0
  SQL>select count(*) from t1 as of scn 10670000;
  COUNT(*)
  ----------
  9318
  我们看到在SCN=10670000时,数据都在。
  4.恢复数据.
  SQL>insert into t1 select * from t1 as of scn 10670000;
  9318 rows created.
  SQL>commit;
  Commit complete.
  SQL>select count(*) from t1;
  COUNT(*)
  ----------
  9318
  文章2
  误删数据后的还原
  select timestamp_to_scn(to_timestamp('2009-03-13 09:00:00','YYYY-MM-DD HH:MI:SS')) from dual;
  结果:13526973
  将删除时间转换为scn
  select * from reportinfo
  AS OF SCN 13526973
  将reportinfo表中的scn点的数据取出
  然后可以根据这个数据进行还原操作
  create table reporttest as select * from reportinfo where 1=0;
  insert into reporttest select * from reportinfo AS OF SCN 13526973;
  --上面两句应该可以合成一句
  --create table reporttest as select * from reportinfo AS OF SCN 13526973;
  这是reporttest表中就是scn点的reportinfo数据.处理即可
分享到:
评论

相关推荐

    oracle数据文件被误删除后的灾难处理

    不知不觉的失误操作,就会把数据文件删除了!此文档中详细记载了oracle数据文件被误删除后的灾难处理方法,现在拿出来与大家分享,希望可以帮到您!

    Oracle7.X 回滚表空间数据文件误删除处理方法

    正在看的ORACLE教程是:Oracle7.X 回滚表空间数据文件误删除处理方法。 —- 一、 引言: —- 回滚段是数据库的一部分,它记录数据库变更的信息。使用这些信息实现数据库的读一致性及其恢复。若回滚段出现故障,则...

    oracle中误删除表后恢复语句(FLASHBACK)

    您可能感兴趣的文章:Oracle误删除表数据后的数据恢复详解Oracle7.X 回滚表空间数据文件误删除处理方法Oracle7.X 回滚表空间数据文件误删除处理方法Oracle7.X 回滚表空间数据文件误删除处理方法误删除$ORACLE_HOME/...

    ORACLE数据库基础知识-华为维护资料

    3.1 如何恢复被误删的数据文件 39 3.2 如何杀掉吊死session 39 3.3 如何修改字符集 39 3.4 如何追加表空间 39 3.5 如何加大表的maxextents值 40 3.6 如何查询无效对象 40 3.7 怎样分析SQL语句是否用到索引 40 3.8 ...

    oracle常用基本命令脚本

    导入导出 远程连接 创建表空间 用户 常用查看表列字段 误删系统数据文件处理

    PL/SQL实现Oracle数据库任务调度

    关键词:数据恢复,任务调度,ORACLE,PL/SQL 在数据库操作中时常会有这样的情况发生,由于一时的疏忽而误删或误改了一些重要的数据,另外还有一些重要的任务需要周期性地运行。显然,前一类问题主要是数据备份与...

    oracle恢复工具-FY_Recover_Data

    由于在System表空间中已经记录了新的信息, 因此用当前的System信息是不能恢复过来的,在AUL/MyDUL中可以当作没有System时的情况来处理,在下面的命令中, 我们用Truncate后的数据对象号就不能进行恢复, 而使用Truncate...

    健康档案管理系统.RAR

    3. 开发工具和环境不限(可以是Visual C++.Net、Visual C#.Net、Java等),开发出的系统的形式不限(可以是Win界面,也可以是Web界面),使用的数据库不限(可以是SQL Server或Oracle)。 4. 设计报告正文字数不少于...

    (重要)AIX command 使用总结.txt

    //IBM小型机AIX5.1操作系统密码文件丢失或者误删的恢复方法 进入维护模式: 1、将安装盘第一张放入光驱; 重启小型机选择主控台,按屏幕上提示的数字;选择语言,一般选english;选择3进入维护模式(start maintenence ...

Global site tag (gtag.js) - Google Analytics