加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用FLASHBACK TABLE 恢复被删除表

发布时间:2020-12-15 07:16:14 所属栏目:百科 来源:网络整理
导读:20.3.1 数据库回收站 数据库回收站(Database Recycle Bin) 是所有被删除表和相关对象的容器,被存放在回收站的相关对象包括索引、约束、触发器、嵌套表、LOB 段和 LOB 索引段。 数据库回收站具有以下限制: 回收站只适用于非SYSTEM 的局部管理表空间 ORACLE

20.3.1 数据库回收站

数据库回收站(Database Recycle Bin) 是所有被删除表和相关对象的容器,被存放在回收站的相关对象包括索引、约束、触发器、嵌套表、LOB 段和 LOB 索引段。

数据库回收站具有以下限制:

  • 回收站只适用于非SYSTEM 的局部管理表空间
  • ORACLE 没有为回收站分配固定的预留空间,因此不能保证数据库对象在回收站中的保留时间。当被删除对象所在表空间没有足够空间时,ORACLE 会使用 FIFO(先进先出) 机制清除回收站的相应对象
  • 使用SELECT 语句可以查询回收站对象的数据,但不能在回收站对象执行DML 和DDL 操作

?

1. 生成回收站对象

SQL> conn scott/tiger@demo
已连接。
SQL> create table t1(c int);

表已创建。

SQL> create index IX_T1 on t1(c);

索引已创建。

SQL> create table t2(c int);

SQL> create index IX_T2 on t2(c);

SQL> create table t3(c int);

SQL> create index IX_T3 on t3(c);

SQL> drop table t1;

表已删除。

SQL> drop table t2;

SQL> drop table t3 purge;

2. 显示当前用户的回收站对象

SQL> show recyclebin
ORIGINAL NAME????RECYCLEBIN NAME????????????????OBJECT TYPE??DROP TIME
---------------- ------------------------------ ------------ -------------------

T1???????????????BIN$FrfDmiaIQNSrpx16x7B3vw==$0 TABLE????????2009-02-19:22:53:03

T2???????????????BIN$tZjkR3xATvydCPbHzzR3Hg==$0 TABLE????????2009-02-19:22:53:04

SQL> select object_name,original_name from recyclebin;

OBJECT_NAME????????????????????ORIGINAL_NAME
------------------------------ --------------------------------
BIN$d4mvZ2uiSPK13sVwaDpnwg==$0 IX_T1
BIN$tZjkR3xATvydCPbHzzR3Hg==$0 T2
BIN$FrfDmiaIQNSrpx16x7B3vw==$0 T1
BIN$kR3toQKCQ8Cv3cWiuBRJFQ==$0 IX_T2

3. 显示数据库的所有回收站对象

SQL> conn / as sysdba
已连接。
SQL> select owner,object_name,original_name from dba_recyclebin;

OWNER??OBJECT_NAME????????????????????ORIGINAL_NAME
------ ------------------------------ --------------------------------
SCOTT??BIN$d4mvZ2uiSPK13sVwaDpnwg==$0 IX_T1
SCOTT??BIN$tZjkR3xATvydCPbHzzR3Hg==$0 T2
SCOTT??BIN$FrfDmiaIQNSrpx16x7B3vw==$0 T1
SCOTT??BIN$kR3toQKCQ8Cv3cWiuBRJFQ==$0 IX_T2

4. 清除回收站对象

SQL> conn scott/tiger@demo
已连接。
SQL> purge table t1;

表已清除。

SQL> purge index ix_t2;

索引已清除。

SQL> purge recyclebin;

回收站已清空。

?

20.3.2 恢复被删除表

(1) 模拟用户误操作

(2) 显示回收站对象

(3) 恢复被删除表

SQL> conn scott/tiger
已连接。
SQL> show recyclebin
SQL> drop table emp;

EMP??????????????BIN$/3ZsVld5RhWZuaSOugW64A==$0 TABLE????????2009-02-19:23:10:46

SQL> flashback table "BIN$/3ZsVld5RhWZuaSOugW64A==$0" to before drop rename to newemp;

闪回完成。

SQL> drop table newemp;

NEWEMP???????????BIN$CQgC0n8+QJK/Y9OfvLD74w==$0 TABLE????????2009-02-19:23:13:11

SQL> flashback table newemp to before drop rename to emp;

闪回完成。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读