Oracle Undo 查询表中历史数据

Undo 表空间用于存放Undo 数据。当执行DML操作时,Oracle会将这些操作的旧数据写入Undo 段.用于对数据库 一致读,事务回滚 之类的操作.

换而言之,在特殊情况下,我们可以用它来找回被错误操作的数据.例如:

SELECT t.fid
  FROM ct_bas_province AS OF TIMESTAMP to_date(‘2014-11-21 22:01‘, ‘yyyy-mm-dd HH24:mi‘) t
 WHERE t.fnumber = ‘海南省‘;

即在要查询的表名后添加 as of timestamp 指定时间  即可查询那个时间数据库里的值.

这种方式相对于恢复存档,或是根据日志找回数据要方便得多.

但是,不要高兴的太早.Undo 的使用是有限制的,在11g 里

如果UNDO 表空间的大小是固定的,即不可自动扩展,那么在这种情况下,UNDO_RETENTION参数是会自动忽略,不会生效,数据库根据系统活动情况和undo表空间大小来调整undo retention period为最佳值。

如果undo 表空间是自动扩展的,那么数据会尝试使用UNDO_RETENTION 参数,如果表空间不足时,不会去重写没有过期(仅仅是没有过期的committed的数据)的undo数据,而是会自动扩展undo 表空间。当undo 表空间扩展达到MAXSIZE值时,数据库开始重写没有过期的undo 数据。

UNDO_RETENTION 的值可以通过以下SQL查看.

 -- 查看系统相关参数设置
 select * from v$parameter;
--注意 Undo_retention 这个参数,表示undo时间,以  秒  为单位.默认 900秒,15分钟
时间: 2024-11-10 01:36:16

Oracle Undo 查询表中历史数据的相关文章

Oracle游标-循环查询表中数据(表名),并执行

Oralce 表中存有一个字段,该字段存储表名,要把该表中的所有表名查询出来(即表名结果集),且执行结果集from 表名结果集: declare v_ccount varchar2(100); --定义一个游标变量 cursor c_job is --查询该表中的所有表名 select tablename from tbname; c_row c_job%rowtype; begin --循环待处理数据,即以上查出的结果集 for c_row in c_job loop ---执行语句 from

oracle查询表中某一特定类型的数据特别慢,也没找到原因

今天查一张表的时候,查询表中某一特定类型的数据特别慢,但是查询全表特别快,也没找到原因,百度了一下下,可能感觉(很小的几率)是下面这个 有人说: 说明此表增删改太频繁了.将不需要删除的数据copy到一张临时表,truncate此表,再把数据copy回来.删除临时表. Oracle表段中的高水位线HWM 在Oracle数据的存储中,可以把存储空间想象为一个水库,数据想象为水库中的水.水库中的水的位置有一条线叫做水位线,在Oracle中,这条线被称为高水位线(High-warter mark, HW

oracle分层查询中的start with和connect by(树结构查询)

来源:  http://blog.csdn.net/itmyhome1990/article/details/16338637 ORACLE是一个关系数据库管理系统,它用表的形式组织数据,在某些表中的数据还呈现出树型 结构的联系. 例如有如下案例: 数据为节选,字段值含义分别为税务机构代码.税务机构名称.上级税务机构代码,税务机构级别 select * from extern_dm_swjg查询的时候默认顺序就是上面的顺序,可以看出是混乱的并没有特殊结构特征. 而希望的结果如下图: sj_swj

sql 查询表中所有字段的名称

最近工作用到SQL语句查询表中所有字段的名称,网上查询,发现不同数据库的查询方法不同,例如: SQL server 查询表的所有字段名称:Select name from syscolumns Where ID=OBJECT_ID('表名') Sqlite 查询表中所有字段名称: SELECT name FROM sqlite_master WHERE type=’table’ ORDER BY name; Oracle查看所有字段 select column_name from user_ta

了解ORACLE UNDO及其真实使用率

首先了解什么是UNDO,可以说UNDO是ORACLE中一个非常实用的功能 UNDO数据也称为回滚(ROLLBACK)数据,它用于确保数据的一致性.当执行DML操作时,事务操作前的数据被称为UNDO记录.UNDO段用于保存事务所修改数据的旧值,其中存储着被修改数据块的位置以及修改前数据 UNDO数据的作用: 1.回退事务 当执行DML操作修改数据时,UNDO数据被存放到UNDO段,而新数据则被存放到数据段中,如果事务操作存在问题,旧需要回退事务,以取消事务变化.假定用户A执行了语句UPDATE e

Oracle UNDO 监控

Oracle 10g及后续版本较以前版本有一新特性即自动调整undo retention时间,大大简便了管理,对于自动扩展(autoextend on)的undo表空间,参数undo_retention设置成为Oracle自动调节undo retention的最低阀值.对于非自动扩展(autoextend off),非guarantee 的undo 表空间,Oracle会根据undo表空间大小和v$undostat的历史信息(是否统计undo信息是由隐含参数 _collect_undo_stat

监控和管理Oracle UNDO表空间的使用

监控和管理Oracle UNDO表空间的使用 对Oracle数据库UNDO表空间的监控和管理是我们日常最重要的工作之一,UNDO表空间通常都是Oracle自动化管理(通过undo_management初始化参数确定):UNDO表空间是用于存储DML操作的前镜像数据,它是实例恢复,数据回滚,一致性查询功能的重要组件:我们常常会忽略对它的监控,这会导致UNDO表空间可能出现以下问题: 1).空间使用率100%,导致DML操作无法进行. 2).告警日志中出现大量的ORA-01555告警错误. 3).实

Oracle UNDO块

1)首先更新几条数据,但是不进行commit如下: [email protected] prod>select * from scott.emp; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------- ---------- ------------------- ---------- ---------- ---------- 7369 SMITH CLERK 7902 1980-12-17 00

Oracle Undo Redo(转)

转贴: http://www.cuug.com/xueyuanzhuanqu/jishuwenzhang/201108/jishuwenzhang-245.html http://paul0407.blogspot.tw/2008/01/oracle-redoundorollback-segment.html http://blog.csdn.net/robinson_0612/article/details/5731158 Oracle Undo Redo Redo redo 记录 trans