`

Oracle回闪删除

阅读更多
大家在平时开发中,有时意外的删除过表,可能就是直接重新创建该表。在oracle10g中,可以用Flashback drop恢复用一个被删除(drop)了的对象,oracle自动将该对象放入回收站。Flashback drop恢复的原理也是利用oracle的回收站来恢复被删除(drop)的对象。
回收站,是一个虚拟的容器,用于存放所有被删除的对象。其实,对于一个对象的删除,数据库仅仅是简单的重命名操作。
数据库参数recyclebin设置为on.(即默认设置)。参数recyclebin为on,则表示把Drop的对象放入回收站。为off,则表示直接删除对象而不放入回收站。
查看recyclebin值命令如:
SQL> show parameter bin;

NAME                         TYPE       VALUE
------------------------------------ ----------- ------------------------------
recyclebin                        string     on

在系统或会话级别中修改参数recyclebin值的命令为:
SQL>alter system set recyclebin = on|off;
SQL>alter session set recyclebin = on|off;
查看回收站的相关信息视图有:recyclebin/user_recyclebin/dba_recyclebin.
手动清除回收站的信息为:purge recyclebin(或purge table original_name);
删除一张表而不想放入回收站的命令为:drop table table_name purge;

示例1:
1.查看用户下回收站的信息,此时回收站为空
SQL>selectOBJECT_NAME,ORIGINAL_NAME,TYPEfromuser_recyclebin;
OBJECT_NAME                   ORIGINAL_NAME TYPE          
------------------------------ ------------- ------
2.创建测试表tab_test,并为该表增加ind_test索引
SQL>createtabletab_testasselect*fromall_objects;
Tablecreated
SQL>createindexind_testontab_test(object_id);
Indexcreated
SQL> select count(*) from tab_test;
COUNT(*)
----------
    40699
3。用drop命令删除tab_test表
SQL>droptabletab_test;

Tabledropped
4。查看用户回收站信息,此时会记录删除后的对象在回收站中的相关信息,此时还能正常操作回收站中的对象,但不能操作DDL/DML语句
SQL>selectOBJECT_NAME,ORIGINAL_NAME,TYPEfromuser_recyclebin;

OBJECT_NAME                   ORIGINAL_NAME TYPE          
------------------------------ ------------- ------
BIN$a+iPOcq+QXiwUT8B3c3QoA==$0 IND_TEST      INDEX                   
BIN$zFJjV8zFSlqbLecXbDeANQ==$0 TAB_TEST      TABLE                  

SQL>selectcount(*)from"BIN$zFJjV8zFSlqbLecXbDeANQ==$0";

COUNT(*)
----------
    40699

SQL>deletefrom"BIN$zFJjV8zFSlqbLecXbDeANQ==$0";

deletefrom"BIN$zFJjV8zFSlqbLecXbDeANQ==$0"
ORA-38301:无法对回收站中的对象执行DDL/DML
5.用flashback恢复表到删除之前的状态
SQL>flashbacktabletab_testtobeforedrop;
Done
SQL> select count(*) from tab_test;
COUNT(*)
----------
    40699

6.恢复表的索引(此时表中的索引同时也被恢复了,只不过该索引还是保留回收站中的索引名称)
SQL> select index_name from user_indexes where table_name = 'TAB_TEST';

INDEX_NAME
------------------------------
BIN$a+iPOcq+QXiwUT8B3c3QoA==$0

SQL> alter index "BIN$a+iPOcq+QXiwUT8B3c3QoA==$0" rename to ind_test;

Index altered

SQL> select index_name from user_indexes where table_name = 'TAB_TEST';

INDEX_NAME
------------------------------
IND_TEST

示例2:
1.查看用户下回收站的信息,此时回收站为空
SQL>selectOBJECT_NAME,ORIGINAL_NAME,TYPEfromuser_recyclebin;
OBJECT_NAME                   ORIGINAL_NAME TYPE          
------------------------------ ------------- ------
2.创建测试表test1,并输入数据
SQL> create table test1(id number);
Table created
SQL> insert into test1 values(1);
1 row inserted
SQL> insert into test1 values(2);
1 row inserted
SQL> insert into test1 values(3);
1 row inserted
SQL> insert into test1 values(4);
1 row inserted
SQL> commit;
Commit complete
SQL> select count(*) from test1;

COUNT(*)
----------
        4
3.删除test1表,然后在重新创建test1表
SQL> drop table test1;

Table dropped

SQL> create table test1(id number);

Table created
SQL> insert into test1 values(1);
1 row inserted
SQL> commit;
Commit complete
SQL> select count(*) from test1;

COUNT(*)
----------
        1
4.再次删除test1表
SQL> drop table test1;

Table dropped
5.查询回收站信息(此时回收站中有两条test1表的数据)
SQL>select*fromuser_recyclebin;

OBJECT_NAME                   ORIGINAL_NAME  TYPE                    
------------------------------ --------------------
BIN$Uk69X077TQWqQ0OQ3u1FdQ==$0 TEST1         TABLE                  
BIN$kpG5ZWdlRUi/jO6X0EYP+A==$0 TEST1         TABLE
5.用flashback恢复表到删除之前的状态
SQL> flashback table test1 to before drop;
Done
SQL> select count(*) from test1;

COUNT(*)
----------
        1
此时查看恢复后的test1,发现恢复到最近一次的信息,因此可说明多次删除后,在回收站中会存在多条与test1有关的数据,而用flashback table test1 to before drop命令恢复到的是test1表中最近一次删除的信息
分享到:
评论

相关推荐

    ORACLE数据库回闪

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

    oracle闪回技术

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

    Oracle闪回技术详解

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

    oracle 闪回已删除的表

    ### Oracle 闪回已删除的表 在Oracle数据库管理中,**闪回删除的表**是一项非常实用的功能,它允许数据库管理员(DBA)恢复被误删的表及其所有数据。这一特性最早出现在Oracle 9i版本中,但在Oracle Database 10g中...

    oracle 回闪技术

    Oracle回闪技术是数据库管理中的一个关键特性,它允许用户恢复到数据库的先前状态,以应对意外的数据修改或删除。这种技术基于Oracle的事务日志和快照信息,提供了强大的数据保护和恢复能力。以下是对Oracle回闪技术...

    ORACLE闪回技术恢复指南

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

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

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

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

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

    oracle闪回数据库

    Oracle闪回数据库是一种高效的数据恢复技术,它允许管理员迅速恢复数据库至某一特定时间点,而无需执行完整的数据库恢复过程。这种技术显著提高了数据恢复的速度和便捷性,特别适合处理逻辑错误,例如用户误操作导致...

    利用oracle闪回技术恢复误删除的表或误更新的记录.pdf

    为了使 Oracle 数据库从任何逻辑误操作中迅速地恢复...进行了全面扩展,提供了闪回数据库、闪回删除、闪回表、闪回事物及闪回版本查询等功能,本 文将重点说闪回删除、闪回表的使用。(本文使用oracle 版本10.2.0.3.0)

    Oracle 误删除后的闪回方法

    "Oracle 误删除后的闪回方法"是解决这类问题的关键技术。Oracle提供了多种强大的工具和功能,帮助用户在数据丢失后迅速恢复,其中最常用的就是闪回(Flashback)技术。以下将详细介绍Oracle中的闪回恢复机制及其相关...

    Oracle9i使用闪回操作

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

    彻底删除和闪回oracle表

    在了解如何彻底删除Oracle表和如何使用闪回恢复回收站中的数据之前,我们需要先明白回收站的工作原理。 回收站的工作原理在于,当执行`DROP TABLE`等删除命令时,Oracle并不立即释放相关的磁盘空间,而是将被删除的...

    Oracle 闪回,实验加解释

    通过本文对Oracle闪回技术的介绍,我们可以了解到如何设置和管理闪回恢复区,以及如何启用和禁用闪回数据库功能。这些步骤对于保障数据的安全性和提高数据库恢复能力具有重要意义。同时,我们也探讨了闪回恢复区中的...

    利用oracle 闪回技术恢复数据

    首先,我们来理解一下Oracle闪回技术的几个主要组件: 1. **闪回查询(Flashback Query)**:这是最基本的功能,可以让用户查看表或视图在特定时间点的状态。通过使用`AS OF TIMESTAMP`或`AS OF SCN`子句,我们可以...

    oracle_闪回15分钟前的数据操作写法

    Oracle闪回技术主要包括以下几种类型:闪回查询(Flashback Query)、闪回表(Flashback Table)、闪回事务查询(Flashback Transaction Query)、闪回数据库(Flashback Database)和闪回删除(Flashback Drop)。...

    oracle 回闪日志 满了 ORA-03113 通信信道结束 进入 rman 删除日志

    ### Oracle回闪日志满了与ORA-03113错误处理 在Oracle数据库管理过程中,经常遇到的一些问题包括回闪日志空间不足以及ORA-03113错误等。这些问题若不及时解决,可能会导致数据库性能下降甚至停机。下面我们将详细...

    Oracle 的闪回技术

    Oracle的闪回技术是...为了更深入地理解Oracle的闪回技术,你可以参考以下博客:[《Oracle闪回技术详解》](http://www.cnblogs.com/chengxiao/p/5860823.html),其中详细阐述了各种闪回操作的使用方法和注意事项。

Global site tag (gtag.js) - Google Analytics