`
ginaduxuefang
  • 浏览: 90480 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

闪回删除的表

阅读更多

创建TEST表:

Create table test as select * from user_objects;

 

创建TEST_BAK表:

Create table test_bak as select * from test;

 

创建procedure

createorreplaceprocedurepro_test

is

id_cntnumber;

begin

selectcount(object_id)intoid_cntfromtest;

dbms_output.put_line('Object_id:'||id_cnt);

end;

 

创建trigger

 

CREATE OR REPLACE TRIGGER "HAO"."TRG_TEST"                                   

after insert or delete on TEST                                                 

for each row                                                                   

begin                                                                          

dbms_output.put_line('modified!');                                             

exception                                                                      

when others then                                                               

dbms_output.put_line(sqlerrm);                                                 

end;                     

/

 

创建index

Create index idx_test_object_id on test(object_id);

 

创建约束:

主键:

alter table test_bak add constraint pk_test_bak primary key (object_id);

外键:

alter table test add constraint fk_test foreign key (object_id) references test_bak(object_id);

 

 

 

 

 

 

 

SQL> select object_name,object_type,status from user_objects;

 

OBJECT_NAME                   OBJECT_TYPE        STATUS

------------------------------ ------------------- -------

TEST                          TABLE              VALID

TEST_BAK                      TABLE              VALID

PRO_TEST                      PROCEDURE          VALID

IDX_TEST_OBJECT_ID            INDEX              VALID

PK_TEST_BAK                   INDEX              VALID

TRG_TEST                      TRIGGER            VALID

 

SQL> select constraint_name,constraint_type,status from user_constraints;

 

CONSTRAINT_NAME               C STATUS

------------------------------ - --------

FK_TEST                       R ENABLED

PK_TEST_BAK                   P ENABLED

 

SQL> drop table test;

 

表已删除。

 

SQL> select object_name,object_type,status from user_objects;

 

OBJECT_NAME                   OBJECT_TYPE        STATUS

------------------------------ ------------------- -------

TEST_BAK                      TABLE              VALID

BIN$qdWcERzdS+yMK7Vqv9E1UA==$0 TRIGGER            INVALID

PRO_TEST                      PROCEDURE          INVALID

BIN$v6zc94PYQCON0EGJ9tMvQQ==$0 TABLE              VALID

PK_TEST_BAK                   INDEX              VALID

BIN$MEmOkWEiQ8GnifY4O+9Y8g==$0 INDEX              VALID

 

已选择6行。

 

SQL> select constraint_name,constraint_type,status from user_constraints;

 

CONSTRAINT_NAME               C STATUS

------------------------------ - --------

PK_TEST_BAK                   P ENABLED

 

SQL> show recyclebin

ORIGINAL NAME   RECYCLEBIN NAME               OBJECT TYPE DROP TIME

---------------- ------------------------------ ------------ ----------------

TEST            BIN$v6zc94PYQCON0EGJ9tMvQQ==$0 TABLE       2008-11-24:20:17

SQL> flashback table test to before drop;

 

闪回完成。

 

SQL> select object_name,object_type,status from user_objects;

 

OBJECT_NAME                   OBJECT_TYPE        STATUS

------------------------------ ------------------- -------

TEST                          TABLE              VALID

TEST_BAK                      TABLE              VALID

BIN$qdWcERzdS+yMK7Vqv9E1UA==$0 TRIGGER            INVALID

PRO_TEST                      PROCEDURE          INVALID

PK_TEST_BAK                   INDEX              VALID

BIN$MEmOkWEiQ8GnifY4O+9Y8g==$0 INDEX              VALID

 

已选择6行。

 

SQL> alter index "BIN$MEmOkWEiQ8GnifY4O+9Y8g==$0" rename to IDX_TEST_OBJECT_I

 

索引已更改。

 

SQL> select object_name,object_type,status from user_objects;

 

OBJECT_NAME                   OBJECT_TYPE        STATUS

------------------------------ ------------------- -------

TEST                          TABLE              VALID

TEST_BAK                      TABLE              VALID

BIN$qdWcERzdS+yMK7Vqv9E1UA==$0 TRIGGER            INVALID

PRO_TEST                      PROCEDURE          INVALID

IDX_TEST_OBJECT_ID            INDEX              VALID

PK_TEST_BAK                   INDEX              VALID

 

已选择6行。

 

SQL> alter trigger "BIN$qdWcERzdS+yMK7Vqv9E1UA==$0" rename to trg_test;

 

触发器已更改

 

SQL> select object_name,object_type,status from user_objects;

 

OBJECT_NAME                   OBJECT_TYPE        STATUS

------------------------------ ------------------- -------

TEST                          TABLE              VALID

TEST_BAK                      TABLE              VALID

PRO_TEST                      PROCEDURE          INVALID

IDX_TEST_OBJECT_ID            INDEX              VALID

PK_TEST_BAK                   INDEX              VALID

TRG_TEST                      TRIGGER            INVALID

 

已选择6行。

 

SQL> alter trigger trg_test compile;

 

触发器已更改

 

SQL> select object_name,object_type,status from user_objects;

 

OBJECT_NAME                   OBJECT_TYPE        STATUS

------------------------------ ------------------- -------

TEST                          TABLE              VALID

TEST_BAK                      TABLE              VALID

PRO_TEST                      PROCEDURE          INVALID

IDX_TEST_OBJECT_ID            INDEX              VALID

PK_TEST_BAK                   INDEX              VALID

TRG_TEST                      TRIGGER            VALID

 

已选择6行。

 

SQL> alter procedure pro_test compile;

 

过程已更改。

 

SQL> select object_name,object_type,status from user_objects;

 

OBJECT_NAME                   OBJECT_TYPE        STATUS

------------------------------ ------------------- -------

TEST                          TABLE              VALID

TEST_BAK                      TABLE              VALID

PRO_TEST                      PROCEDURE          VALID

IDX_TEST_OBJECT_ID            INDEX              VALID

PK_TEST_BAK                   INDEX              VALID

TRG_TEST                      TRIGGER            VALID

 

已选择6行。

 

SQL> select constraint_name,constraint_type,status from user_constraints;

 

CONSTRAINT_NAME               C STATUS

------------------------------ - --------

PK_TEST_BAK                   P ENABLED

 

Flashback drop并没有把FK恢复!

 

总结:

recyclebin on的状态下,Drop table之后,会将tabletrigger重新命名,procedures则不会重命名,flashback drop可以恢复表以及相关object,但是对于procedurestrigger需要自己手动renamecompileFK不能被恢复,需要手动创建。

 

分享到:
评论

相关推荐

    oracle 闪回已删除的表

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

    彻底删除和闪回oracle表

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

    ORACLE闪回技术恢复指南

    本文将涵盖闪回删除表、闪回删除、闪回查询等多种闪回类型,并通过具体的实例加深理解。 #### ORACLE闪回技术概述 Oracle闪回技术主要分为以下几个方面: 1. **闪回删除表**:适用于当表被误删除时,可以从回收站...

    Oracle闪回技术详解

    闪回表(Flashback Table)可以将某个表回退到过去某个时间点。工作原理是Oracle会先去查询撤销段,提取过去某个时间点之后的所有变更,构造反转这些变更的SQL语句进行回退。闪回表操作是一个单独的事务,所以若由于...

    Oracle闪回删除表原理分析

    Oracle闪回删除表功能是Oracle数据库提供的一种高级数据恢复机制,尤其在误删除表的情况下,能够帮助用户迅速恢复数据到删除前的状态。该机制自Oracle 10g开始引入,大大增强了数据库的安全性和数据管理的灵活性。 ...

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

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

    Oracle 误删除后的闪回方法

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

    Oracle 8大闪回模式及其特性及其详细实验解释

    它包括闪回数据库、闪回表和闪回删除等功能。闪回恢复区保存了一段时间内对数据的修改,以便在需要时恢复。闪回日志则记录了数据变化的前一个状态,存储在闪回缓冲区,然后由RVWR进程写入闪回日志文件。 2. **闪回...

    达梦开启归档和闪回的方式

    ### 达梦开启归档和闪回的方式 #### 背景介绍 在数据库管理领域,数据的安全性和可用性是至关重要的。为了确保数据的安全,通常会采用多种备份策略和技术来实现这一目标。其中,归档(Archiving)和闪回...

    oracle闪回技术

    Oracle 闪回技术是Oracle...通过闪回删除、闪回查询和闪回表数据,用户可以在不影响数据库正常运行的情况下,实现对数据的精细控制和恢复。然而,使用这些功能时也应谨慎,确保对潜在风险和资源消耗有充分的认识。

    利用oracle 闪回技术恢复数据

    5. **闪回删除(Flashback Drop)**:当误删了表或者分区时,可以通过`FLASHBACK TABLE`命令将其恢复回来,前提是没有执行过`PURGE`操作。 6. **闪回数据归档(Flashback Data Archive)**:这是对历史数据进行长期...

    oracle闪回

    这些特性包括但不限于闪回表、闪回删除、闪回版本查询以及闪回事务查询等。下面将详细介绍每一种闪回类型的使用方法及其应用场景。 #### 二、闪回操作背景 闪回功能主要针对以下场景: 1. **错误地使用了DML语句*...

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

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

    Oracle闪回操作

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

    数据库闪回、表恢复、数据泵新特性

    - 接着,模拟一个误操作,例如创建用户、授予权限、创建表、切换日志并删除用户及所有相关对象。 - 当需要闪回时,将数据库启动到MOUNT状态,然后使用`FLASHBACK DATABASE TO SCN`命令,指定要恢复的SCN。 - 完成...

    oracle闪回数据库

    3. 闪回删除:对于误删除的表,通过`FLASHBACK DROP`可以恢复。 4. 数据比较:`FLASHBACK QUERY`可用于对比当前数据与过去某时刻的数据,以分析变化。 监控闪回数据库的关键在于确保有足够的空间来存储闪回日志,...

    SCN号的闪回

    "SCN号的闪回"是Oracle数据库中一个重要的恢复机制,全称为System Change Number,它是Oracle数据库中记录事务更改的唯一序列号。SCN是一个不断增加的数字,每次数据库中的数据发生变化时,都会生成一个新的SCN,...

    oracel闪回机制

    ### Oracle 10g 闪回机制详解 #### 一、引言 在数据库管理过程中,数据的安全性和准确性至关重要。然而,在实际操作中难免会出现误操作的情况,比如错误地更新了数据或不小心删除了重要的表格。传统的事务处理机制...

    Oracle 9i以上的闪回,用于误操作后的数据恢复

    假设我们有一个名为`gametable`的游戏记录表,在进行数据误删除后,可以通过以下步骤使用闪回查询功能来恢复数据。 1. **误删除操作**: ```sql DELETE FROM gametable WHERE GAMEID = 1008; COMMIT; ``` 上述...

    Oracle9i使用闪回操作

    - 闪回查询和闪回表操作可能会影响性能,因此建议在非生产环境或者低峰时段进行测试。 通过上述介绍,我们可以看到Oracle闪回技术的强大之处,它能够有效地帮助用户在数据丢失的情况下恢复数据,是Oracle数据库管理...

Global site tag (gtag.js) - Google Analytics