- 浏览: 126389 次
- 来自: ...
最近访客 更多访客>>
文章分类
最新评论
-
dwangel:
给messageSource设置属性
<property ...
Spring i18n的better practice(相对于appfuse) -
dwangel:
spring 的message tag有一个属性text,可以 ...
Spring i18n的better practice(相对于appfuse) -
sn201:
awk高级篇
有问题啊!有问题!有问题!有问题!有问题!
i ...
awk文本处理总结(入门,中级,高级) -
happy_javaboy:
...
Log4j日志管理系统简单使用说明
Flashback query(闪回查询)原理
Oracle根据undo信息,利用undo数据,类似一致性读取方法,可以把表置于一个删除前的时间点(或SCN),从而将数据找回。
Flashback query(闪回查询)前提:
SQL> show parameter undo;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_management string AUTO
undo_retention integer 900
undo_tablespace string UNDOTBS1
其中undo_management = auto,设置自动undo管理(AUM),该参数默认设置为:auto;
Undo_retention = n(秒),设置决定undo最多的保存时间,其值越大,就需要越多的undo表空间的支持。修改undo_retention的命令如下:
SQL> alter system set undo_retention = 3600;
System altered
闪回实现方式
1. 获取数据删除前的一个时间点或scn,如下:
SQL>select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') time, to_char(dbms_flashback.get_system_change_number) scn from dual;
TIME SCN
------------------- ----------------------------------------
2010-06-29 23:03:14 1060499
2. 查询该时间点(或scn)的数据,如下:
SQL> select * from t as of timestamp to_timestamp('2010-06-29 22:57:47', 'yyyy-mm-dd hh24:mi:ss');
SQL> select * from t as of scn 1060174;
3. 将查询到的数据,新增到表中。也可用更直接的方法,如:
SQL>create table tab_test as select * from t of timestamp to_timestamp('2010-06-29 22:57:47', 'yyyy-mm-dd hh24:mi:ss');
SQL>insert into tab_test select * from1060174;
示例:
Create table t(id number);
insertinto t values(1);
insert into t values(2);
insert into t values(3);
insert into t values(4);
insert into t values(5);
1.查看t表中的原始数据
SQL> select * from t;
ID
---------
1
2
3
4
5
2.获取数据删除前的一个时间点或scn
SQL> select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') time, to_char(dbms_flashback.get_system_change_number) scn from dual;
TIME SCN
------------------- ----------------------------------------
2010-06-29 23:23:33 1061279
3.删除t表中的数据,并提交事物
SQL> delete from t;
5 rows deleted
SQL> commit;
Commit complete
4.在查看t表,此时t表中数据以删除
SQL> select * from t;
ID
----------
5.查看t表中scn为1061279(或时间点为2010-06-29 23:23:33)时的数据
SQL> select * from t as of scn 1061279;
ID
----------
1
2
3
4
5
6.确认要恢复后,将t表中的数据还原到scn为1061279(或时间点为2010-06-29 23:23:33)时的数据,并提交事物
SQL> insert into t select * from t as of scn 1061279;
5 rows inserted
SQL> commit;
Commit complete
7.确认t表数据的还原情况
SQL> select * from t;
ID
----------
1
2
3
4
5
注:推荐使用scn,由于oracle9i中,因为scn与时间点的同步需要5分钟,如果最近5分钟之内的数据需要Falshback query查询,可能会查询丢失,而scn则不存在这个问题。Oracle10g中这个问题已修正(scn与时间点的大致关系,可以通过logmnr分析归档日志获得)。
Falshback query查询的局限:
1. 不能Falshback到5天以前的数据。
2. 闪回查询无法恢复到表结构改变之前,因为闪回查询使用的是当前的数据字典。
3. 受到undo_retention参数的影响,对于undo_retention之前的数据,Flashback不保证能Flashback成功。
4. 对drop,truncate等不记录回滚的操作,不能恢复。
5. 普通用户使用dbms_flashback包,必须通过管理员授权。命令如下:
SQL>grant execute on dbms_flashback to scott;
发表评论
-
Oracle性能调优-优化排序操作
2010-08-07 11:37 1181关于Oracle 10g性能方面,谈论最多的就是新的自动工作负 ... -
Oracle中的外连接简单介绍
2006-08-11 09:53 550在讲外连接之前,先举例介绍内连接,也就是一般的相等连接。 s ... -
SQLServer和Oracle常用函数对比
2006-08-11 09:55 357SQLServer和Oracle是大家经常用到的数据库,在此感 ... -
Oracle SQL 内置函数大全
2006-08-24 10:37 549... -
Oracle PL/SQL入门之慨述
2006-09-05 21:14 533一、PL/SQL出现的目的 结构化查询语言(Structur ... -
Oracle:PL/SQL 中如何使用Array
2006-09-18 20:41 643因为在PL/SQL 中并没有数 ... -
java高级编程:基于JNDI的应用开发
2006-10-02 18:08 591基于JNDI的应用开发 ... -
开源技术之Tomcat数据源配置总结
2006-10-06 14:55 603成功配置环境Tomcat5.0.28+ ... -
Java调用存储过程
2006-10-11 14:22 623摘要:本文阐述了怎 ... -
JNDI配置原理详解
2006-10-11 14:55 676最近写书,写到JNDI,到 ... -
ORACLE SEQUENCE的简单介绍
2006-12-28 11:01 749在oracle中sequence就是所 ... -
oracle系统表查询
2007-07-30 17:03 574数据字典dict总是属于Ora ... -
JOB
2007-09-04 17:42 445var jobno number begin sys.db ... -
网络收集:PLSQL常用方法汇总
2007-10-18 14:03 740网络收集:PLSQL常用方法汇总 在SQLPLUS下,实现中- ... -
oracle pl/sql 创建同义词
2007-10-24 11:05 1367CREATE OR REPLACE Procedure Cre ... -
索引分析和比较
2007-11-21 10:20 740转自:http://tb.blog.csdn.net/Trac ... -
ORACLE索引与高性能SQL介绍
2007-11-21 15:05 490转自:http://blog.csdn.net/annicyb ... -
oracle动态游标的简单实现方法
2008-05-27 09:17 768下面就是例子程序 --明细表打印予处理 通用报表: pro ... -
Oracle触发器
2008-05-27 15:22 632是特定事件出现的时候,自动执行的代码块。类似于存储过程,但是用 ... -
Oracle体系结构之-Oracle中各种名称
2008-05-31 15:18 796一、数据库名 数据 ...
相关推荐
**闪回删除**和**闪回查询**允许用户基于时间戳或系统变更号(SCN)恢复表中的数据,这对于因误执行DELETE语句导致数据丢失的情况非常有用。 **闪回语法**: ```sql -- 按照SCN闪回 FLASHBACK TABLE tablename TO SCN...
1. **闪回查询 (Flashback Query)**: Oracle提供了一种称为闪回查询的功能,它允许我们查看数据库的过去状态,就像时间倒流一样。通过使用`SELECT FROM FLASHBACK TABLE`或`SELECT AS OF TIMESTAMP`语句,我们可以...
Oracle 恢复误删除数据 Oracle 数据库是企业级的关系数据库管理系统,广泛应用于各种行业。然而,在实际操作中,误删除数据是...Oracle 恢复误删除数据需要了解闪回方法的使用和限制,同时也需要注意空间占用的问题。
Oracle数据库提供了多种误删除数据的恢复方法,包括闪回恢复和回收站恢复。通过对这些方法的理解和应用,可以有效地避免因误操作而导致的数据丢失问题。同时,在日常维护中,合理地管理回收站和及时回收不再需要的...
### Oracle数据库误删除数据的不同恢复方法 #### 一、引言 在日常的数据库管理工作中,数据误删除是一个常见的问题。对于Oracle数据库来说,它提供了一系列强大的数据恢复工具和技术,帮助管理员快速有效地恢复误...
当用户执行DML操作(如DELETE、UPDATE、INSERT)后,如果发生错误,可以通过闪回查询回到某个特定时间点,查看并恢复丢失的数据。然而,闪回查询在Oracle 9i中仅限于DML操作,对于DDL操作(如DROP)无法恢复。 ...
1. **闪回查询**(Flashback Query):在Oracle 9i中,闪回查询允许用户查询到过去某个时间点的数据状态,但仅限于DML(Data Manipulation Language)操作,如INSERT、UPDATE和DELETE。对于误删的行记录,可以通过闪...
除了使用闪回查询外,还可以通过创建一个备份表并在删除数据前备份数据的方式来进行恢复。这种方法更为保险,但需要提前做好规划。 **步骤1:创建备份表** 在执行删除操作之前,可以创建一个备份表,并将原始数据...
Oracle提供了一些闪回工具,如闪回表(Flashback Table)、闪回数据库(Flashback Database)和闪回查询(Flashback Query)。 - 用户具有足够的权限。恢复操作可能需要`SYSDBA`权限。 **2. 使用闪回表恢复数据** ...
- 首先,确定删除数据时的最新备份,然后使用RMAN恢复到这个备份点,接着应用归档日志直到误删操作之前的时间点。 请注意,恢复数据的效率和可行性取决于你的数据库配置,包括是否启用了闪回选项、是否有足够的...
通过闪回查询,用户可以快速恢复到某一特定时间点的数据状态,而无需进行完整的数据库恢复。 2. 自动回滚段管理 (Automatic Undo Management, AUM) Oracle 9i引入了自动回滚段管理,它将回滚段的管理和空间分配...
### Oracle通过快照进行数据恢复 #### 一、引言 ...当然,除了快照之外,Oracle还提供了其他数据恢复机制,如备份与恢复、闪回技术等,这些工具和技术的综合运用将进一步提高数据的安全性和可靠性。
在Oracle数据库中,`TRUNCATE TABLE`命令用于删除表中的所有数据,但它与`DELETE`语句有所不同。`TRUNCATE`操作是DDL(Data Definition Language)的一部分,而`DELETE`是DML(Data Manipulation Language)。由于`...
### ORACLE数据库误操作执行了DELETE,该如何恢复数据? 在Oracle数据库管理中,误操作是常见的问题之一。尤其是在执行删除(DELETE)操作时,如果未能正确地确认或配置好相关参数,可能会导致重要数据的丢失。本文...
使用DBMS_FLASH包,用户可以轻松地执行闪回查询,以查看和恢复误删除的记录。这个功能依赖于Oracle的自动回滚段管理(Automatic Undo Management, AUM),不过需要注意的是,对于Drop等永久性操作,闪回查询无法恢复...
4. **删除数据并提交**: ```sql delete from test; commit; ``` 5. **闪回查询**: - 使用之前的SCN进行闪回查询: ```sql select count(*) from test as of scn 999846; ``` 此时会显示100条记录,即闪...
假设我们有一个名为`gametable`的游戏记录表,在进行数据误删除后,可以通过以下步骤使用闪回查询功能来恢复数据。 1. **误删除操作**: ```sql DELETE FROM gametable WHERE GAMEID = 1008; COMMIT; ``` 上述...
【Oracle 恢复 Truncate 删除表的数据】 在Oracle数据库中,`TRUNCATE TABLE`命令用于删除表中的所有数据,但保留表结构。与`DELETE`语句不同,`TRUNCATE`不记录任何删除操作,因此无法通过常规的事务回滚来恢复...
闪回删除功能可以恢复被`DELETE`语句误删除的数据。它类似于回收站,可以在一定程度上防止数据的永久丢失。 5. **闪回版本查询和闪回事物查询**: 这两种查询方式允许用户查看数据在某一时间点的状态。闪回版本...