`

Oracle--闪回

阅读更多
转自  http://haohaoxuexi.iteye.com/blog/1594391

    Oracle的闪回功能可以在对数据库进行不完全恢复的情况下,对某一个指定的表进行恢复。闪回数据库是进行时间点恢复的新方法,它能够快速将Oracle恢复到以前的时间,以更正由于逻辑数据损坏或用户错误而引起的问题。当需要恢复时,可以将数据库恢复到错误前的时间点,并且只恢复改变的数据块。

Oracle中的闪回操作包括以下4种:

(1)查询闪回:查询过去某个指定时间、指定实体的数据,恢复错误的数据库更新、删除等。

(2)表闪回:使表返回到过去的某一时间的状态,恢复表、取消对表进行的修改。

(3)删除闪回:可以将删除的表重新恢复。

(4)数据库闪回:可以将整个数据库回退到过去的某个时间点。



1、查询闪回

查询闪回可以查看过去某一时点的任何数据,如果要查询某一表在某一时点的内容,可以把查询目标对象定位为该表在某一时点的表,表在某一时刻的表可以如下表示:
table_name as of timestamp real_timestamp; --它作为一个整体表示一个表
                例如,要查询person表在2012-6-2 19:00:00的状态,可以使用如下语句:
                select * from person as of timestamp to_timestamp('2012-6-2 19:00:00', 'yyyy-mm-dd HH24:mi:ss');
                知道了表在某一时刻的表之后,我们就可以很容易的把表恢复到某一时刻的样子了,例如我们在2012-6-2 19:00:00这个时候删除了person表中的3条记录,之后我又想把它恢复,那应该如何恢复呢?利用查询闪回我们可以这样操作:

方法一:

第一步,把当前表中的数据全删了:delete from person;

第二步,我们通过查询闪回把2012-6-2 19:00:00这个时点之前的数据拿出来然后插入到当前表中,调用语句如下:
                insert into person select * from person as of timestamp to_timestamp('2012-6-2 18:59:59', 'yyyy-mm-dd HH24:mi:ss');
                 方法二:
先找出从person表中删除的记录,然后再把它们插到person表中,Sql语句如下:
                 insert into person select * from person as of timestamp to_timestamp('2012-6-2 18:59:59', 'yyyy-mm-dd HH24:mi:ss') p where not exists(select * from person where id=p.id);
                 
                  因为查询闪回是跟时间有关系的,所以说到这就再说一个设置,在sqlplus中输入set time on语句可以打开时间显示功能,这会使得在每次执行语句后都会在该语句的前面显示该语句的执行时间,使用set time off语句可以关闭该功能。



2、表闪回

利用表闪回可以轻松的取消对表的修改。只有Oracle的企业版才能进行表闪回。

对进行表闪回的表必须row movement为enable。

表闪回的语法格式如下:
                flashback table [schema.]table_name[,...n] to {[scn] | [timestamp] [[enable | disable] triggers]};
                其中,

scn:表示系统改变号,可以从flashback_transaction_query数据字典中查询。

timestamp:表示通过时间戳的形式来进行闪回。

enable|disable triggers:表示触发器恢复之后的状态,默认为disable。

示例代码:

(1)确保需要闪回的表row movement为enable:
                alter table hello enable row movement; 
                        (2)对表进行闪回:
flashback table hello to timestamp to_timestamp('2012-6-3 14:00:00','yyyy-mm-dd HH24:mi:ss');--恢复表到2012-6-3 14:00:00这个时候的样子
               
                3、删除闪回

在Oracle数据库中有一个叫recyclebin的回收站,当回收站的功能是启用的时候,被用户drop的对象都会保存在recyclebin中,普通用户可以通过select * from recyclebin;语句查看被自己drop掉的对象的相关信息,当然如果普通用户想查看所有用户的recyclebin信息也是可以的,可以通过查看dba_recyclebin视图,DBA用户不存在recyclebin。来获取,如:select * from dba_recyclebin。如果被删除的对象不是彻底删除,而是放到了回收站的话,我们就可以在需要的时候从回收站中进行恢复了。

为了避免被删除的表与其他对象存在名称冲突,Oracle对被删除的对象进行了重命名,当然Oracle也保存了对象的原始名称。在进行对象恢复的时候可以使用对象的原始名称,也可以使用被重新命名的新名称。

系统参数recyclebin控制表删除后是否到回收站,show parameter recyclebin可以查看该参数的状态。

对于系统参数的修改有两种,全局的修改和会话的修改:

(1)alter system set param_name=param_value;

(2)alter session set param_name=param_value;

show recyclebin:可以显示当前用户recyclebin中的表。

purge tablespace tablespace_name:用于清空指定表空间的recyclebin;

purge tablespace tablespace_name user username:清空指定表空间的recyclebin中指定用户的对象。

purge table table_name:清除回收站中的指定表对象。如:purge table hello语句则将清除回收站中的hello表。这里的table_name既可以是原来的表对象名,也可以是

recyclebin中自动生成的名字。

purge recyclebin:删除当前用户的recyclebin中的对象。

purge dba_recyclebin:删除所有用户的recyclebin中的对象

drop table table_name purge:删除对象且不放在recyclebin中。



删除闪回的语法格式如下:
flashback table table_name to before drop [rename to new_name]; --恢复表table_name并重命名为new_name
flashback table hello to before drop rename to dropped_hello;
               4、数据库闪回

数据库闪回可以使数据库回到过去某一时间点或SCN的状态,用户可以不用备份就能快速地实现时间点的恢复。只有Oracle的企业版才能进行数据库闪回。
分享到:
评论

相关推荐

    Oracle-Oracle闪回技术与系统调优.ppt

    Oracle闪回技术是Oracle数据库系统中一种强大的恢复和调试工具,它允许用户撤销数据库的逻辑错误,如误删除、误修改等。Oracle自9i版本引入闪回查询,随后在10g和11g中逐步扩展和完善,形成了包括闪回数据库、闪回表...

    Oracle-10g数据库基础教程之闪回技术.pptx

    这一技术在Oracle 9i中初步引入,到了Oracle 10g得到了进一步增强,包括闪回查询、闪回版本查询、闪回事务查询、闪回表、闪回删除和闪回数据库等多种功能。 **14.1 闪回技术概述** - **闪回基本概念**:Oracle 9i...

    Oracle-11g-R2-RAC-with-ASM存储迁移-手记.docx

    8.迁移数据库参数文件:在迁移过程中,需要在线修改数据库参数文件,包括归档路径、闪回等参数的修改。 9.删除旧磁盘组:在迁移完成后,需要删除旧磁盘组,以释放存储资源。 10.观察期和执行数据库备份:在迁移...

    PostgreSQL & Oracle-备份恢复技术大比拼

    闪回技术是一种用于快速恢复数据库到某一时间点的高级特性,Oracle闪回查询、闪回表、闪回事务、闪回删除等特性提供了一种非传统备份恢复解决方案。Oracle数据库的闪回技术是其一大亮点,能够减少因误操作带来的数据...

    Oracle中有后悔药卖吗?Oracle中的回闪查询: Oracle 10g 回闪实验文档

    ### Oracle 10g 回闪技术详解 #### 一、引言 Oracle 10g引入了一系列回闪(Flashback)技术,旨在提供一种快速恢复数据库至特定时间点的能力,而无需传统的备份和恢复过程。这些技术允许数据库管理员轻松地撤消数据...

    ORACLE闪回技术恢复指南

    ### ORACLE闪回技术恢复指南 #### 引言 本文旨在详细介绍Oracle闪回技术的各种应用场景与操作步骤,帮助读者理解并掌握如何利用Oracle闪回功能有效地进行数据恢复。Oracle闪回技术是一项强大的特性,能够在无需...

    《Oracle10G-闪回技术》实验手册.doc

    Oracle 10G 的闪回技术是数据库管理系统中一项强大的恢复功能,它使得DBA能够轻松地恢复误删除或误更新的数据,极大地简化了数据库管理的工作。本实验手册重点介绍了Oracle 10G及以后版本的主要闪回技术,并强调其...

    oracle闪回技术

    Oracle 闪回技术是Oracle数据库提供的一种强大的数据恢复机制,它允许用户恢复到数据库的某个历史状态,而无需依赖传统的备份和恢复过程。这一技术基于Oracle的多版本并发控制(MVCC)机制,使得数据库能够记录和...

    ORACLE数据库回闪

    Oracle数据库回闪是一种强大的功能,它允许用户恢复到数据库的某个历史状态,从而撤销错误的操作,如意外删除重要数据。这一特性是Oracle数据库系统的核心优势之一,尤其在数据安全性要求极高的环境中,回闪功能显得...

    oracle---网络搜集

    Oracle数据库是全球最广泛...以上只是Oracle网络搜集的一些基本知识点,实际操作中还涉及到更多的高级特性,如闪回技术、自动存储管理(ASM)、数据库设计原则等。对于Oracle的深入理解和应用,需要不断学习和实践。

    Oracle闪回技术详解

    Oracle闪回技术是Oracle强大数据库备份恢复机制的一部分,在数据库发生逻辑错误的时候,闪回技术能提供快速且最小损失的恢复。闪回技术旨在快速恢复逻辑错误,对于物理损坏或是介质丢失的错误,闪回技术就回天乏术了...

    Oracle9i使用闪回操作

    #### 一、Oracle闪回技术概述 Oracle闪回技术是一种非常实用的功能,它允许用户在不依赖备份的情况下恢复数据。这项技术尤其适用于那些因误删除或更新而导致的数据丢失情况。Oracle 9i版本引入了闪回技术,为用户...

    Oracle课程相关练习oracle-job-master.zip

    7. **备份与恢复**:数据库的备份和恢复是关键技能,Oracle提供了RMAN( Recovery Manager)和闪回技术来应对数据丢失或系统故障。 8. **性能优化**:通过分析和调整SQL语句、使用绑定变量、调整初始化参数、利用...

    Oracle闪回操作

    Oracle 闪回操作是Oracle数据库提供的一种高级恢复技术,它允许用户恢复数据库、表或单个行至一个特定的时间点或系统改变号 (SCN)。这种功能在处理误操作,如误删数据、错误更新等场景时尤其有用,因为它可以避免...

    Oracle第12章闪回技术.pptx

    【Oracle第12章闪回技术】主要涵盖了Oracle数据库中一系列强大的恢复技术,这些技术使得数据库管理员能够在不丢失数据的情况下修复错误操作。本章详细介绍了闪回技术的各个方面,包括闪回查询、闪回版本查询、闪回...

    ORACLE-delete后的回复

    但是,Oracle提供了一些高级特性,如闪回查询(Flashback Query)和闪回事务(Flashback Transaction),在特定条件下可以帮助我们恢复被删除的数据。以下将详细介绍如何在Oracle中恢复DELETE操作后的数据。 首先,...

    oracle回闪表中的数据

    【Oracle 回闪表数据详解】 Oracle数据库的回闪技术是一项强大的功能,它允许数据库管理员(DBA)恢复数据到过去的某个特定时间点,而无需完全恢复整个数据库。在Oracle 10g及更高版本中,回闪表是这项技术的一个...

    oracle 闪回oracle 闪回oracle 闪回oracle 闪回

    标题和描述中反复提及的“Oracle闪回”(Flashback)功能是Oracle数据库管理系统中一项极为重要的特性,它为数据库管理员提供了恢复数据到特定时间点的能力,而无需进行完全的数据库恢复过程。以下是对Oracle闪回...

Global site tag (gtag.js) - Google Analytics