Oracle回收站的那些事儿

1、回收站启动和关闭
10g可以用:alter system set recyclebin=off; 和alter system set recyclebin=on;
11g可以用:alter system set recyclebin=off deferred; 和alter system set recyclebin=on deferred;


2、查看回收站内容
select * from user_recyclebin;

select * from recyclebin;--查看当前用户所drop的对象
select * from dba_recyclebin;--查看所有用户drop掉的对象

其实当一个对象drop后,并且开启了回收站功能.它并没有真正被删除,实际上只是修改了一下名字,
我们用select * from user_objects where type= 'TABLE'还能查到.只是它的名字有点怪,
例如BIN$qAUuckGyd3TgQKjAFAFTAg==$0,它的命名规范是BIN$unique_id$version,
其中BIN代表RecycleBin, unique_id是数据库中该对象的唯一标志,26个字符长度 ,version表示该对象的版本号.

3、还原回收站内容
假如有表test被drop,drop后的object_name是BIN$qAUuckGyd3TgQKjAFAFTAg==$0
可以用flashback table "BIN$qAUuckGyd3TgQKjAFAFTAg==$0"  to before drop ;(记得名字加双引号)
或者flashback table test  to before drop ;来还原.不过假如drop掉一个表test,
再新建一个表test,然后再drop.那么flashback table test  to before drop只能还原最后被drop掉的表test.
最先drop掉的表还原时会出错,因为表名不能重名.所以必须改名flashback table test  to before drop rename to test2


4、清空回收站
如果一次只清空一个表,可以用PURGE table  test 或PURGE table "BIN$qAUuckGyd3TgQKjAFAFTAg==$0";
如果一次清空所有的可以用PURGE recyclebin 或者PURGE dba_recyclebin
还原时是只能一次还原一个表,不能像清空一样一次还原所有表

你可能感兴趣的:(oracle,数据库,回收站,备份,dba,11g)