-
参考 https://www.cnblogs.com/chinhr/archive/2011/09/19/2181296.html 进行测试。
关于ORACLE11g的RECYCLE BIN使用
ORACLE 11g中引入了RECYCLE BIN,好处就是当你删除了一张表或索引什么的后并不是完全删除,就像WINDOWS中的回收站一样,好处就是防止误删除,可以对误删除的表进行恢复,当然也可以清空RECYCLE BIN。
一、回收站功能测试
RECYCLEBIN的基本概念
先建立一张表,名ZRD
TEST@ r7>create table zrd(id int,name varchar(20));
Table created.
TEST@ r7>select table_name from user_tables where table_name =upper('zrd');
TABLE_NAME
------------------------------
ZRD
先清空回收站
TEST@ r7>purge recyclebin;
Recyclebin purged.
TEST@ r7>select * from user_recyclebin;
no rows selected
删除表ZRD
SQL>DROP TALBE ZRD;
在回收站中查看生成的表
TEST@ r7>select object_name from user_recyclebin;
OBJECT_NAME
------------------------------
BIN$Z2ptJ6PcRk6mJbM/0BmmAg==$0
发现有一个名为'BIN$Z2ptJ6PcRk6mJbM/0BmmAg==$0'的表,这个表就是ZRD表DROP掉以后在RECYCLE BIN内产生的表,RECYCLE BIN会以特殊的方法来保证每张被删除的表在RECYCLE BIN内的表名都不一样,即使在未被删除时表名是相同的。
如果想看被删除表的详细点的内容,可用
TEST@ r7>show recyclebin;
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
ZRD BIN$V0GR7C9EG93gUwEAAH/a9Q==$0 TABLE 2017-08-21:07:28:00
或着
TEST@ r7>SELECT ORIGINAL_NAME,OBJECT_NAME,TYPE,DROPTIME FROM USER_RECYCLEBIN;
ORIGINAL_NAME OBJECT_NAME TYPE DROPTIME
-------------------------------- ------------------------------ -------------------- -------------------
ZRD BIN$V0GR7C9EG93gUwEAAH/a9Q==$0 TABLE 2017-08-21:07:28:00
也可以用
TEST@ r7>DESC "BIN$V0GR7C9EG93gUwEAAH/a9Q==$0";
--来看被删除表的结构,注意要双引号!!这一句
现在对删除后表名的命名简单说一下:
当一个表被删除并移动到"回收站"中,它的名字要进行一些转换。这样的目的显而易见是为了避免同类对象名称的重复。(这一点和Windows操作系统的回收站不同,Windows中的回收站经过了特殊的处理,操作系统文件可以重名。)
转换后的名字格式如下:
BIN$unique_id$version 其中BIN代表RecycleBin
unique_id是数据库中该对象的唯一标志,26个字符长度
version表示该对象的版本号
删除recyclebin中的对象
我们用PURGE,语句PURGE TABLE "TABLE_NAME";
注:双引不要忘记,对RECYCLEBIN中对象操作都要有""。
如上例,则:
TEST@ r7>purge table "BIN$V0GR7C9EG93gUwEAAH/a9Q==$0";
TEST@ r7>purge recyclebin; --清空RECYCLEBIN;
恢复recyclebin中的对象
我们用FLASHBACK,中文名"闪回"
语句FLASHBACK TABLE [已删除TABLE名|"RECYCLEBIN中的名字"] TO BEFORE DROP;
如上例,则:
TEST@ r7>flashback table zrd to before drop;
Flashback complete.
但当你在RECYCLEBIN内有2张相同名字的表时候,只有通过"RECYCLEBIN中的名字"来闪回指定的表,用上面方法只闪回第一个被删除的同名表。
二、回收站功能详解
Oracle10中增加的回收站的功能:
1.查看所有与回收站有关的数据对象:
TEST@ r7>SELECT T.OWNER,T.OBJECT_NAME,T.OBJECT_TYPE FROM ALL_OBJECTS T WHERE T.OBJECT_NAME LIKE '%RECYCLE%';
OWNER OBJECT_NAME OBJECT_TYPE
------------------------------ ------------------------------ -------------------
SYS RECYCLEBIN$ TABLE
SYS RECYCLEBIN$_OBJ INDEX
SYS RECYCLEBIN$_TS INDEX
SYS RECYCLEBIN$_OWNER INDEX
SYS USER_RECYCLEBIN VIEW
PUBLIC USER_RECYCLEBIN SYNONYM
PUBLIC RECYCLEBIN SYNONYM
SYS DBA_RECYCLEBIN VIEW
PUBLIC DBA_RECYCLEBIN SYNONYM
9 rows selected.
2.查看回收站的东西: --仅仅列出OBJECT_NAME,ORIGINAL_NAME,TYPE,DROPTIME四列。
TEST@ r7>show recyclebin;
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
ZRD BIN$V0GR7C9FG93gUwEAAH/a9Q==$0 TABLE 2017-08-21:07:39:27
3.查看recycle视图的定义
TEST@ r7>desc recyclebin;
Name Null? Type
----------------------------------------------------------------------------------------- -------- ------------------------------------------------------------
OBJECT_NAME NOT NULL VARCHAR2(30)
ORIGINAL_NAME VARCHAR2(32)
OPERATION VARCHAR2(9)
TYPE VARCHAR2(25)
TS_NAME VARCHAR2(30)
CREATETIME VARCHAR2(19)
DROPTIME VARCHAR2(19)
DROPSCN NUMBER
PARTITION_NAME VARCHAR2(32)
CAN_UNDROP VARCHAR2(3)
CAN_PURGE VARCHAR2(3)
RELATED NOT NULL NUMBER
BASE_OBJECT NOT NULL NUMBER
PURGE_OBJECT NOT NULL NUMBER
SPACE NUMBER
4.详细查看具体的
TEST@ r7>SELECT T.OBJECT_NAME,T.ORIGINAL_NAME,T.TYPE,T.DROPTIME,T.CREATETIME FROM RECYCLEBIN T;
OBJECT_NAME ORIGINAL_NAME TYPE DROPTIME CREATETIME
------------------------------ -------------------------------- -------------------- ------------------- -------------------
BIN$V0GR7C9FG93gUwEAAH/a9Q==$0 ZRD TABLE 2017-08-21:07:39:27 2017-08-21:07:24:50
5.清除一个表:
TEST@ r7> PURGE TABLE "BIN$V0GR7C9FG93gUwEAAH/a9Q==$0==$0";
Done
6.清除回收站:
TEST@ r7> PURGE RECYCLEBIN;
Done
TEST@ r7> SELECT T.OBJECT_NAME,T.ORIGINAL_NAME,T.TYPE,T.DROPTIME,T.CREATETIME FROM RECYCLEBIN T;
OBJECT_NAME ORIGINAL_NAME TYPE DROPTIME CREATETIME
------------------------------ -------------------------------- ------------------------- ------------------- -------------------
6.恢复一个表:
TEST@ r7>drop table a;
Table dropped.
TEST@ r7>SELECT T.OBJECT_NAME,T.ORIGINAL_NAME,T.TYPE,T.DROPTIME,T.CREATETIME FROM RECYCLEBIN T;
OBJECT_NAME ORIGINAL_NAME TYPE DROPTIME CREATETIME
------------------------------ -------------------------------- -------------------- ------------------- -------------------
BIN$V0GR7C9FG93gUwEAAH/a9Q==$0 ZRD TABLE 2017-08-21:07:39:27 2017-08-21:07:24:50
BIN$V0GR7C9GG93gUwEAAH/a9Q==$0 A TABLE 2017-08-21:07:43:23 2017-08-20:12:58:36
TEST@ r7>flashback table a to before drop;
Flashback complete.
TEST@ r7>select * from tab where tname='A';
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
A TABLE
7.不启用回收站:
SQL> ALTER SESSION SET RECYCLEBIN=OFF;
Session altered
SQL> PURGE RECYCLEBIN;
Done
SQL> DROP TABLE A;
Table dropped
SQL> SELECT T.OBJECT_NAME,T.ORIGINAL_NAME,T.TYPE,T.DROPTIME,T.CREATETIME FROM RECYCLEBIN T;
OBJECT_NAME ORIGINAL_NAME TYPE DROPTIME CREATETIME
------------------------------ -------------------------------- ------------------------- ------------------- -------------------
8.设置启用或关闭回收站
SQL> ALTER SYSTEM SET RECYCLEBIN=OFF;
System altered
SQL> ALTER SYSTEM SET RECYCLEBIN=ON;
System altered
SQL> ALTER SESSION SET RECYCLEBIN=ON;
Session altered
编辑推荐:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
