前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【DB笔试面试813】在Oracle中,什么是闪回删除(Flashback DROP)?回收站的作用是什么?​

【DB笔试面试813】在Oracle中,什么是闪回删除(Flashback DROP)?回收站的作用是什么?​

作者头像
小麦苗DBA宝典
发布2020-06-05 11:38:01
7860
发布2020-06-05 11:38:01
举报

题目部分

【DB笔试面试813】在Oracle中,什么是闪回删除(Flashback DROP)?回收站的作用是什么?

答案部分

闪回删除(Flashback DROP)是将已经删除(DROP)的表及表上的索引恢复到删除前的状态,但索引名不会恢复到删除前的状态。这由基于回收站(Recycle Bin)特性实现。

从Oracle 10g开始,为了支持闪回删除(Flashback Drop)功能,Oracle引入了回收站(Recycle Bin)的概念。它的全称叫Tablespace Recycle Bin。回收站实际是一个逻辑容器(逻辑区域),原理有点类似于Windows系统的回收站。它以表空间中现有已经分配的空间为基础,而不是从表空间上物理划出一个固定区域用作回收站。这意味着回收站和表空间中的对象共用存储区域、系统没有给回收站预留空间。

从原理上来说,回收站就是一个数据字典表,放置用户已删除的的数据库对象信息。用户进行DROP操作的对象并没有被数据库删除,仍然会占用空间,除非是由用户手工进行PURGE或者因为存储空间不够而被数据库清除掉。在回收站功能被打开的情况下,当某个表被删除时,它就被移动到了回收站中。该对象一直保存在回收站中,直到清除回收站为止。因此,如果使用类似“DROP TABLE T_LHR;”的语句,那么T_T_LHR表就被移动到了回收站中。如果希望彻底删除T_LHR表,而不是保存在回收站中,那么可以在DROP TABLE命令中使用PURGE参数,命令为“DROP TABLE T_LHR PURGE;”。回收站功能可以在系统和会话级别开启,如下所示:

代码语言:javascript
复制
系统级别:ALTER SYSTEM SET RECYCLEBIN = ON SCOPE=SPFILE;

会话级别:ALTER SESSION SET RECYCLEBIN = ON;

关于闪回删除需要注意以下几点:

① 只能用于非系统表空间和本地管理的表空间。在SYSTEM表空间中的表被DROP后不会进入回收站。

② 对象的参考约束不会被恢复,指向该对象的外键约束需要重建。

③ 对象能否恢复成功,取决于对象空间是否被覆盖重用。

④ 当删除表时,依赖于该表的物化视图也会同时被删除,但是由于物化视图并不会被放入回收站,因此,当执行FLASHBACK TABLE TO BEFORE DROP时,也不能恢复依赖于该表的物化视图,这个时候就需要DBA手工介入重新创建物化视图。

⑤ 对于回收站中的对象,只支持查询。

⑥ 表被恢复以后,表上的索引,需要重建,虽然索引可以随着表的闪回而闪回,但是闪回后的索引仍然使用回收站中的名称,因此,需要重建索引。

⑦ 在使用“FLASHBACK TABLE ... TO BEFORE DROP”命令从回收站恢复表及其所有可能的相关对象时,可以指定表的原始名称或删除对象时分配给对象的系统生成名称。如果指定原始名称,且回收站包含多个具有该名称的对象,那么Oracle会最先恢复最晚移动到回收站的对象(LIFO:后进先出)。如果删除原始表后又在同一用户中创建了同名的新表,那么这个时候再执行FLASHBACK TABLE时会返回错误,此时需要指定RENAME TO子句。

闪回回收站中指定的表:

代码语言:javascript
复制
FLASHBACK TABLE "BIN$zltzJRsMB0PgRAAY/i3Kdw==$0" TO BEFORE DROP;

在使用“FLASHBACK TABLE ... TO BEFORE DROP”命令从回收站恢复表及其所有可能的相关对象时,可以指定表的原始名称或删除对象时分配给对象的系统生成名称。如果指定原始名称,且回收站包含多个具有该名称的对象,那么Oracle会最先恢复最晚移动到回收站的对象(LIFO:后进先出)。如果删除原始表后又在同一用户中创建了同名的新表,那么这个时候再执行FLASHBACK TABLE时会返回错误,此时需要指定RENAME TO子句。

下面给出一个使用回收站的例子:

代码语言:javascript
复制
SYS@oralhr> SHOW PARAMETER RECYCLEBIN
NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
recyclebin                           string                 OFF
SYS@oralhr> alter system set recyclebin=on scope=spfile;
System altered.
SYS@oralhr> STARTUP FORCE;  ====》慎用,不推荐
ORACLE instance started.
Total System Global Area 3089920000 bytes
Fixed Size                  2250360 bytes
Variable Size             721422728 bytes
Database Buffers         2348810240 bytes
Redo Buffers               17436672 bytes
Database mounted.
Database opened.
SYS@oralhr>  SHOW PARAMETER RECYCLEBIN
NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
recyclebin                           string                 ON
SYS@oralhr> CREATE TABLE TB_20160627_LHR AS SELECT * FROM DUAL;
Table created.
SYS@oralhr> DROP TABLE TB_20160627_LHR;
Table dropped.
SYS@oralhr> SELECT * FROM DBA_RECYCLEBIN;
no rows selected
SYS@oralhr> CREATE TABLE  TB_20160627_LHR TABLESPACE USERS AS SELECT * FROM DUAL;
Table created.
SYS@oralhr> DROP TABLE TB_20160627_LHR;
Table dropped.
SYS@oralhr> SELECT * FROM DBA_RECYCLEBIN;
OWNER      OBJECT_NAME                    ORIGINAL_NAME
--------- ------------------------------ ----------------
SYS       BIN$Njoq6PZtAGzgUxa8wKsAbA==$0 TB_20160627_LHR

需要特别注意的是,SYSTEM表空间的表被DROP后不会进入回收站空间。

& 说明:

有关回收站的更多内容可以参考我的BLOG:http://blog.itpub.net/26736162/viewspace-2136497/、http://blog.itpub.net/26736162/viewspace-2121136/、http://blog.itpub.net/26736162/viewspace-2121137/

本文选自《Oracle程序员面试笔试宝典》,作者:小麦苗

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DB宝 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档