Oracle回收站相关操作

参考:

https://www.cnblogs.com/kerrycode/p/4008362.html


检查回收站的开启状态:

SHOW PARAMETER RECYCLEBIN;

SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME='recyclebin';

默认是开启的,我们也建议开启,如需关闭(两个级别),则:

ALTER SYSTEM SET RECYCLEBIN=OFF;

ALTER SESSION SET RECYCLEBIN=OFF;

SHOW PARAMETER RECYCLEBIN;

开启回收站(两个级别):

ALTER SYSTEM SET RECYCLEBIN=ON;

ALTER SESSION SET RECYCLEBIN =ON;


查看回收站对象:

show recyclebin

其中RECYCLEBIN是USER_RECYCLEBIN 的同义词

COL OBJECT_NAME FOR A30

COL ORIGINAL_NAME FOR A8

COL OPERATION FOR A9

COL TYPE FOR A8

COL DROPTIME FOR A19

COL TS_NAME FOR A30

SELECT OBJECT_NAME  ,ORIGINAL_NAME ,OPERATION ,TYPE ,DROPTIME  ,TS_NAME FROM RECYCLEBIN;

SELECT * FROM RECYCLEBIN;

查看当前数据库用户的回收站对象:

SELECT * FROM USER_RECYCLEBIN;

sysdba查看数据库回收站所有对象:

SELECT * FROM DBA_RECYCLEBIN;

为了避免被删除的表与同类对象名称的重复,被删除的表以及相依的对象放到回收站后,ORACLE数据库会对被删除的对象名称进行重命名

表现为即使ORIGINAL_NAME相同,但RECYCLEBIN_NAME也会不同,RECYCLEBIN_NAME的命名规则为BIN$GUID$Version

查看回收站中表的数据:

SELECT * FROM "BIN$BLmi9vlwN3TgUKjAgYxoiA==$0";


还原回收站被删除的表、索引等对象:

FLASHBACK TABLE TEST TO BEFORE DROP;

如果两个相同名字的表TEST被删除了,此时闪回被DROP的表TEST,实质是闪回最后一个被删除的表(后进先出原则)

如果想闪回再之前的那个表需要在闪回过程中进行重命名操作:

flashback table test to before drop rename to test_2;

否则会报ORA-38312: original name is used by an existing object

如果想精确闪回表需要通过RECYCLEBIN_NAME进行闪回:

flashback table "BIN$BLmi9vlwN3TgUKjAgYxoiA==$0" to before drop;


删除表,并让表不进回收站,而是彻底删除:

DROP TABLE TABLE_NAME PURGE;

当表空间被回收站数据完全占满,以至于必须扩展数据文件来容纳更多数据时,可以说表空间处于“空间压力”情况下。

此时,对象以先进先出的方式从回收站中自动清除。在删除表之前,相关对象(如索引)被删除。

同样,空间压力可能由特定表空间定义的用户限额而引起。

表空间可能有足够的空余空间,但用户可能将其在该表空间中所分配的部分用完了。

在这种情况下,Oracle 自动清除该表空间中属于该用户的回收站对象。

如果在删除名为 TEST 的特定表之后需要从回收站中清除它,可以执行:

PURGE TABLE TABLE_NAME;

或者指定RECYCLEBIN_NAME:

PURGE TABLE "BIN$04LhcpndanfgMAAAAAANPw==$0";

PURGE命令将从回收站中删除表 TEST 及所有相关对象,如索引、约束等,

仅从回收站删除索引,不删除表数据:

PURGE INDEX IN_TEST1_01;

清除USERS表空间所有对象:

PURGE TABLESPACE USERS;

只清除表空间中特定的用户的对象:

PURGE TABLESPACE USERS USER SCOTT;

清空当前用户回收站中的对象:

PURGE RECYCLEBIN;

sysdba权限整个清空回收站:

PURGE DBA_RECYCLEBIN;


注意事项:

1:只能用于非系统表空间和本地管理的表空间

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

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

4:当删除表时,依赖于该表的物化视图也会同时删除,但是由于物化视图并不会放入recycle binzhong,

因此当你执行flashback drop时,并不能恢复依赖其的物化视图,需要手工重建

5:对于回收站(Recycle Bin)中的对象,只支持查询。不支持任何其他DML、DDL等操作

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容