- 浏览: 62259 次
- 性别:
- 来自: 深圳
文章分类
最新评论
使用delete删除数据的情况,如果是truncate只能用数据库闪回
需要注意的一点flashback table的一些限制:
1)启用行移动 alter table table_name enable row movement;
2)不能用于闪回系统表、远程表、外部表;
3)不能跨越DDL语句,即闪回期间如果发生了DDL,则闪回失败
4)9i只能闪回5分钟内的数据,10g有所增强,可以延长到5天,只要undo没有被覆盖
首先需要查出可以闪回的区间:
select versions_starttime,
versions_endtime,
versions_xid,
versions_operation
from 表名 versions between timestamp minvalue and maxvalue
按时间查:
select *
from 表名 versions between timestamp to_timestamp('2014-6-19 14:00:00', 'yyyy-mm-dd hh24:mi:ss') and to_timestamp('2014-6-19 14:10:00', 'yyyy-mm-dd hh24:mi:ss');
恢复:
Alter table 表名 enable row movement;
flashback table 表名 to timestamp to_timestamp('2014-6-19 13:00:00','yyyy-mm-dd hh24:mi:ss');
恢复完后取消行迁移
设置:
show parameter undo;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_management string AUTO
undo_retention integer 900
undo_tablespace string UNDOTBS1
undo_retention:指定事物commit后undo 将要保存的时间(秒),在ORACLE10g中默认的是900秒。
GUARANTEE : 保证undo_retention参数所设定的时间有效,这个是10g的新功能。
SQL> ALTER TABLESPACE undotbs1 RETENTION GUARANTEE;
SQL> ALTER TABLESPACE undotbs1 RETENTION NOGUARANTEE;
在没有guarantee的保证下,ORACLE并不能保证能够将undo信息存储900秒,如果undo表空间不足,那么ORACLE将忽略undo_retention的设置,直接覆盖掉以前的undo,这个时候有可能会产生ORA-01555错误。如果undo表空间空间足够,那么undo将会保存很长一段时间,直到undo表空间达到maxsize,这个时候才会覆盖undo信息,而且ORACLE会从最古老的undo信息开始覆盖。
ORACLE推荐我们将undo 表空间中的datafile 设定MAXSIZE ,不要让它一直自动扩展,如果ORACLE获得了自动扩展的能力,那么旧的undo不会被覆盖,到后来undo表空间会越来越大,越来越大,直到将磁盘空间耗尽。
在有guarantee的保证下,ORACLE将会保证undo信息能够保存到undo_retention设定的值之后才被覆盖,如果这个时候同时执行了很多事物,将undo表空间耗完了,那么那个事物会失败,会报ORA-30036 错误,所以使用guarantee一定要慎用,如果非要使用guarantee,那么尽量将undo 表空间设大 一点。
Oracle10g开始,如果你设置UNDO_RETENTION为0,那么Oracle启用自动调整以满足最长运行查询的需要。当然如果空间不足,那么Oracle满足最大允许的长时间查询。而不再需要用户手工调整。
需要注意的一点flashback table的一些限制:
1)启用行移动 alter table table_name enable row movement;
2)不能用于闪回系统表、远程表、外部表;
3)不能跨越DDL语句,即闪回期间如果发生了DDL,则闪回失败
4)9i只能闪回5分钟内的数据,10g有所增强,可以延长到5天,只要undo没有被覆盖
首先需要查出可以闪回的区间:
select versions_starttime,
versions_endtime,
versions_xid,
versions_operation
from 表名 versions between timestamp minvalue and maxvalue
按时间查:
select *
from 表名 versions between timestamp to_timestamp('2014-6-19 14:00:00', 'yyyy-mm-dd hh24:mi:ss') and to_timestamp('2014-6-19 14:10:00', 'yyyy-mm-dd hh24:mi:ss');
恢复:
Alter table 表名 enable row movement;
flashback table 表名 to timestamp to_timestamp('2014-6-19 13:00:00','yyyy-mm-dd hh24:mi:ss');
恢复完后取消行迁移
设置:
show parameter undo;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_management string AUTO
undo_retention integer 900
undo_tablespace string UNDOTBS1
undo_retention:指定事物commit后undo 将要保存的时间(秒),在ORACLE10g中默认的是900秒。
GUARANTEE : 保证undo_retention参数所设定的时间有效,这个是10g的新功能。
SQL> ALTER TABLESPACE undotbs1 RETENTION GUARANTEE;
SQL> ALTER TABLESPACE undotbs1 RETENTION NOGUARANTEE;
在没有guarantee的保证下,ORACLE并不能保证能够将undo信息存储900秒,如果undo表空间不足,那么ORACLE将忽略undo_retention的设置,直接覆盖掉以前的undo,这个时候有可能会产生ORA-01555错误。如果undo表空间空间足够,那么undo将会保存很长一段时间,直到undo表空间达到maxsize,这个时候才会覆盖undo信息,而且ORACLE会从最古老的undo信息开始覆盖。
ORACLE推荐我们将undo 表空间中的datafile 设定MAXSIZE ,不要让它一直自动扩展,如果ORACLE获得了自动扩展的能力,那么旧的undo不会被覆盖,到后来undo表空间会越来越大,越来越大,直到将磁盘空间耗尽。
在有guarantee的保证下,ORACLE将会保证undo信息能够保存到undo_retention设定的值之后才被覆盖,如果这个时候同时执行了很多事物,将undo表空间耗完了,那么那个事物会失败,会报ORA-30036 错误,所以使用guarantee一定要慎用,如果非要使用guarantee,那么尽量将undo 表空间设大 一点。
Oracle10g开始,如果你设置UNDO_RETENTION为0,那么Oracle启用自动调整以满足最长运行查询的需要。当然如果空间不足,那么Oracle满足最大允许的长时间查询。而不再需要用户手工调整。
发表评论
-
oracle11g提示服务不可用
2014-09-26 17:36 583今天遇到一个问题,本地1521端口启用,但远程不能访问 修改监 ... -
手工用户创建,老是记不住,记录
2014-09-18 13:53 329Oracle创建表空间、创建用户以及授权、查看权限 创建临 ... -
gdul
2014-08-15 15:16 474一直想自己也写个dul工具,无奈理解得不够深入 几天前看到别人 ... -
SQL调优
2014-06-20 14:14 392网上看到如下sql: 留一个线索在此 select /*+ ... -
外键约束
2014-06-19 16:02 393删除一个表时,提示有外键约束,ORA-02292: 违反完整约 ... -
get_ddl使用
2014-05-19 16:45 429查看oracle中表定义等,需要使用dbms_metadata ... -
PL/SQL语法
2014-05-09 11:38 386今天写plsql,很久没写了,很简单的,也不想参看以前写的,怎 ... -
归档日志满的处理
2014-05-04 10:07 772只是一个记录贴,方便查阅。完全没有新意 归档日志一般需要保留 ... -
数据的导出导入
2013-12-30 12:41 357异构数据库之间数据交换,主要使用txt文本文件 以下记录一个工 ... -
exp增量
2013-12-17 17:09 350很久没有写文章了,今天遇到一个老问题,exp增量备份 记 ... -
查找oracle的操作日志
2013-12-17 16:48 559今天程序有些功能不能用了,查了一下,发现某些表对象删除了 ... -
数结构的查询
2013-09-27 18:33 0很早之前就使用过该功能,每次都记不住,每次都要搜索 索性记录一 ... -
面试中的SQL
2013-09-27 12:07 469虽然有些时间没有面试过了 在我的印象中,sql中行列转换的问题 ... -
oracle SQL特性使用
2013-09-27 11:25 386oracle分析函数 统计记录中类似1/222这样的记录 se ... -
oracle内部原理
2013-09-26 11:17 958总是以为对oracle很了解,已经使用了好多年,基本是增、删、 ... -
oracle跟踪程序执行的SQL
2013-09-24 15:34 1114专门记录一下,对于系统调优很重要 1.oracle的10046 ... -
ORA-01555处理
2013-09-22 16:44 596有时表太大,导出时出现1555错误,可以采用分段方式处理。 以 ... -
BLOB字段操作
2013-09-18 10:00 891置为空或NULL update blob_test set b ... -
统计表的大小
2013-09-11 17:29 369统计用户表的大小: SELECT * FROM ( SEL ... -
UTL_FILE写文件
2013-09-09 16:16 663oracle内部提供的很多使用的包,为应用提供了可能! 在我们 ...
相关推荐
### 达梦开启归档和闪回的方式 #### 背景介绍 在数据库管理领域,数据的安全性和可用性是至关重要的。为了确保数据的安全,通常会采用多种备份策略和技术来实现这一目标。其中,归档(Archiving)和闪回...
Oracle闪回技术主要包括以下几种类型:闪回查询(Flashback Query)、闪回表(Flashback Table)、闪回事务查询(Flashback Transaction Query)、闪回数据库(Flashback Database)和闪回删除(Flashback Drop)。...
### Oracle 闪回已删除的表 在Oracle数据库管理中,**闪回删除的表**是一项非常实用的功能,它允许数据库管理员(DBA)恢复被误删的表及其所有数据。这一特性最早出现在Oracle 9i版本中,但在Oracle Database 10g中...
启用表闪回需要在表上启用行移动特性,以允许行ID在闪回后保持一致。启用命令为 `ALTER TABLE emp ENABLE ROW MOVEMENT;`,然后执行闪回表操作,如 `FLASHBACK TABLE dept TO TIMESTAMP TO_TIMESTAMP('2016-09-10 11...
启用表闪回需要设置`ROW MOVEMENT`,以允许行ID的变化。如果闪回过程中出现违反数据库约束、撤销数据失效或DDL操作等问题,闪回表操作可能会失败。 3. 闪回删除可以恢复被DROP的表,包括其相关的索引和非外键约束。...
为了使 Oracle 数据库从任何逻辑误操作中迅速地恢复...进行了全面扩展,提供了闪回数据库、闪回删除、闪回表、闪回事物及闪回版本查询等功能,本 文将重点说闪回删除、闪回表的使用。(本文使用oracle 版本10.2.0.3.0)
【Oracle 回闪表数据详解】 Oracle数据库的回闪技术是一项强大的功能,它允许数据库管理员(DBA)恢复数据到过去的某个特定时间点,而无需完全恢复整个数据库。在Oracle 10g及更高版本中,回闪表是这项技术的一个...
除了闪回表之外,Oracle还提供了闪回事务查询(Flashback Transaction Query),这是一种更高级的闪回功能,可以显示特定事务对数据的影响。 - **获取事务的XID**: - 在执行更新等DML操作后,可以通过`SELECT ...
它包括闪回数据库、闪回表和闪回删除等功能。闪回恢复区保存了一段时间内对数据的修改,以便在需要时恢复。闪回日志则记录了数据变化的前一个状态,存储在闪回缓冲区,然后由RVWR进程写入闪回日志文件。 2. **闪回...
在了解如何彻底删除Oracle表和如何使用闪回恢复回收站中的数据之前,我们需要先明白回收站的工作原理。 回收站的工作原理在于,当执行`DROP TABLE`等删除命令时,Oracle并不立即释放相关的磁盘空间,而是将被删除的...
闪回表操作是一个单独的事务,所以若由于撤销数据过期之类的原因导致无法闪回,整个操作会回滚,不会存在不一致的状态。 例如,可以使用以下SQL语句来闪回表: SQL> alter table emp enable row movement; SQL> ...
在实际应用中,当发生误操作时,例如误删了表中的记录,可以首先确认有无开启闪回功能,然后使用闪回查询验证能否恢复所需数据,最后执行相应的闪回操作,如闪回表或闪回事务。在完成恢复后,记得分析并修复导致问题...
- 对于表闪回查询,需要注意UNDO表空间中数据的有效期,以避免因数据过期而导致无法查询。 - 闪回功能虽然强大,但在日常维护中也需要定期清理旧数据,以避免占用过多磁盘空间。 综上所述,Oracle闪回功能为数据库...
Oracle 闪回技术是Oracle...通过闪回删除、闪回查询和闪回表数据,用户可以在不影响数据库正常运行的情况下,实现对数据的精细控制和恢复。然而,使用这些功能时也应谨慎,确保对潜在风险和资源消耗有充分的认识。
本文将涵盖闪回删除表、闪回删除、闪回查询等多种闪回类型,并通过具体的实例加深理解。 #### ORACLE闪回技术概述 Oracle闪回技术主要分为以下几个方面: 1. **闪回删除表**:适用于当表被误删除时,可以从回收站...
请注意,闪回表可能需要启用回收站(RECYCLEBIN)功能,并且可能会占用额外的存储空间。 3. 闪回数据库(Flashback Database) 这是最强大的闪回功能,可将整个数据库恢复到一个已知的系统改变号(SCN)或时间点。...
Oracle 闪回操作是Oracle数据库提供的一种高级恢复技术,它允许用户恢复数据库、表或单个行至一个特定的时间点或系统改变号 (SCN)。这种功能在处理误操作,如误删数据、错误更新等场景时尤其有用,因为它可以避免...
2. 表的闪回:如果误删或误修改了表,可以使用闪回表(Flashback Table)功能恢复。 3. 闪回删除:对于误删除的表,通过`FLASHBACK DROP`可以恢复。 4. 数据比较:`FLASHBACK QUERY`可用于对比当前数据与过去某时刻...
本文将围绕“Oracle命令整理.7z”这个压缩包中的主题,详细解析Oracle数据库中的核心概念和实用命令,特别是与“表闪回”和“UNDO记录闪回”相关的知识。 首先,让我们了解一下Oracle的闪回技术。这是Oracle提供的...
"SCN号的闪回"是Oracle数据库中一个重要的恢复机制,全称为System Change Number,它是Oracle数据库中记录事务更改的唯一序列号。SCN是一个不断增加的数字,每次数据库中的数据发生变化时,都会生成一个新的SCN,...