Oracle管理 | 回收站

Cherise ·
更新时间:2024-11-10
· 665 次阅读

目录一、作用二、回收站操作三、通过Purge删除回收站的内容四、通过recover恢复回收站的内容五、案例说明 一、作用 若开启了回收站功能,被删除的表会先进入回收站且可以被恢复; 回收站若没打开,想恢复误删的对象需要通过recovering from backup等方式进行恢复。

注意事项:关闭回收站不会Purge已经在回收站中的对象。

二、回收站操作

1.查看回收站内容

通过dba_recyclebin视图可查看回收站内容; 回收站中的对象名为BIN$打头,可以单独访问: SELECT * FROM "BIN$iB6Z3f+5QOGjw0iKVisLqg==$0"

2.开启/关闭回收站

ALTER SESSION/SYSTEM SET recyclebin = OFF SCOPE = SPFILE; ALTER SESSION/SYSTEM SET recyclebin = ON SCOPE = SPFILE;

SYSTEM级别修改的话记得重启数据库!

三、通过Purge删除回收站的内容 purge的用处:
1)将被删除的表或者索引从回收站移除;
2)删除整个回收站的内容;
3)某个表空间从回收站移除/将某个表空间中某个用户的内容从回收站移除。
注意:其不可回退!!! purge回收站的内容时候,对象名称可以是原始对象名/对象被删除时候分配的名字(即BIN$打头)

1.purge table/index
1)purge+原始对象名
若回收站里有多个该对象的记录,系统会删除存在时间最久的那条记录。
eg.
① 新建表test12并删除(重复两次)

CREATE TABLE test12 (ID INT ,NAME VARCHAR(20)); DROP TABLE test12; CREATE TABLE test12 (ID INT ,NAME VARCHAR(20)); DROP TABLE test12;

② 可以看到这张表在回收站里有两个版本的记录:

③ 删除回收站记录:

PURGE TABLE TEST12;

④ 可以看到,时间更早的记录被删除,稍晚的一条还保留:
在这里插入图片描述
2)purge+系统生成对象名
可以直接删除该对象($BIN打头的对象名是唯一的)

purge table "BIN$45AAQxL7ToqPBYeUevning==$0" ; ---注意这里是有双引号的!!!

2.purge+表空间名
1)清除指定表空间:

PURGE TABLESPACE users

2)清除表空间中指定用户的空间:

purge tablespace users user test;

3.purge+回收站名
1)清理当前用户下的回收站:

PURGE recyclebin; ---这里recyclebin就是user_recyclebin的同义词,数据字典差不多都是这个套路

2)清理整个回收站:

PURGE dba_recyclebin; 四、通过recover恢复回收站的内容

1.通过对象名来恢复

FLASHBACK TABLE test12 TO BEFORE DROP RENAME TO xxx;

注意:若一张表被删除多次,recover的是时间最新的一条记录。

2.通过系统分配的BIN$名字来恢复

FLASHBACK TABLE "BIN$lDtXq9XET3uBQFMHEdQJag==$0" TO BEFORE DROP RENAME TO xxx;

注意:
这里有个比较奇怪的情况。如果一张表上建有索引,将这张表recover后,索引名字恢复不了原来的名字,为BIN$打头,需要手动修改:

DROP TABLE test12; FLASHBACK TABLE test12 TO BEFORE DROP; SELECT * from Dba_Indexes WHERE TABLE_name='TEST12'

这里看到dba_indexes表里的INDEX_NAME还是旧的:
在这里插入图片描述
需要手动修改:

ALTER INDEX "BIN$vOK1sd8sS86Yvzbl4JVmTQ==$0" RENAME TO PK_TEST; 五、案例说明

该场景是为了说明定期清理回收站释放空间的必要性~

背景:数据库中的users表空间数据文件占用存储太多,但是实际上利用率仅 0.06%,需要清理Users表空间大小。
PS:USERS表空间不要放用户数据,我这个也是因为本地测试环境之前手抖扔了数据进去,这个原理等我理解了再来补充~

1.查看表空间使用率
在这里插入图片描述 原创文章 30获赞 10访问量 6669 关注 私信 展开阅读全文
作者:蓝田~



回收站 Oracle

需要 登录 后方可回复, 如果你还没有账号请 注册新账号