关于ORACLE 10g中的RECYCLE BIN

在ORACLE 10g中引入了RECYCLE BIN这个东东,好处就是当你删除了一张表或索引什么的后并不是完全删除,就像WINDOWS中的回收站一样,好处就是防止误删除,可以对误删除的表进行恢复,当然也可以清空RECYCLE BIN。

介绍下RECYCLEBIN里一些简单的东西

先建立一张表,名FOO

SQL>CREATE TALBE FOO(ID NUMBER(5),NAME VARCHAR2(5));

查看当前SCHEME下的所有表的名字

SQL>SELECT TALBE_NAMES FROM USER_TALBES;

TABLE_NAME
------------------------------
FOO

删除表FOO

SQL>DROP TALBE FOO;
SQL>SELECT TALBE_NAMES FROM USER_TALBES;

TABLE_NAME
------------------------------
BIN$Z2ptJ6PcRk6mJbM/0BmmAg==$0

--如果只想看RECYCLEBIN内的表名,可以用 SELECT OBJECT_NAME FROM USER_RECYCLEBIN;效果同上显示

发现有一个名为'BIN$Z2ptJ6PcRk6mJbM/0BmmAg==$0'的表,这个表就是FOO表DROP掉以后在RECYCLE BIN内产生的表,RECYCLE BIN会以特殊的方法来保证每张被删除的表在RECYCLE BIN内的表名都不一样,即使在未被删除时表名是相同的。

如果想看被删除表的详细点的内容,可用
SQL>SHOW RECYCLEBIN;  --这句在SQL*PLUS内可用,但PL/SQL DEV中显示不出内容,不知道怎么会事
或着
SQL>SELECT ORIGINAL_NAME,OBJECT_NAME,TYPE,DROPTIME FROM USER_RECYCLEBIN;

ORIGINAL_NAME                    OBJECT_NAME                    TYPE                      DROPTIME
-------------------------------- ------------------------------ ------------------------- -------------------
FOO                              BIN$Z2ptJ6PcRk6mJbM/0BmmAg==$0 TABLE                     2007-11-18:21:53:02


也可以用
SQL>DESC "BIN$Z2ptJ6PcRk6mJbM/0BmmAg==$0";  --来看被删除表的结构,注意要双引号!!这一句
          
PL/SQL DEV中也不能用,会显示没有这个表,在SQL*PLUS中可用。
 
现在对删除后表名的命名简单说一下:
当一个表被删除并移动到"回收站"中,它的名字要进行一些转换。这样的目的显而易见是为了避免同类对象名称的重复。(这一点和Windows操作系统的回收站不同,Windows中的回收站经过了特殊的处理,操作系统文件可以重名。)
转换后的名字格式如下:
BIN$unique_id$version 其中BIN代表RecycleBin
unique_id是数据库中该对象的唯一标志,26个字符长度
version表示该对象的版本号


删除recyclebin中的对象

我们用PURGE,语句PURGE TABLE "TABLE_NAME";
注:双引不要忘记,对RECYCLEBIN中对象操作都要有" "。

如上例,则:
SQL>purge table "BIN$6qAKR9ljQo+l+1gDCV8xCQ==$0";

SQL>PURGE RECYCLEBIN; --可以清空RECYCLEBIN;


恢复recyclebin中的对象

我们用FLASHBACK,中文名"闪回"
语句FLASHBACK TABLE [已删除TABLE名|"RECYCLEBIN中的名字"] TO BEFORE DROP;

如上例,则:
SQL>FLASHBACK TABLE FOO TO BEFORE DROP;
闪回完成。

但当你在RECYCLEBIN内有2张相同名字的表时候,只有通过
"RECYCLEBIN中的名字"来闪回指定的表,用上面方法只闪回第一个被删除的同名表。

http://blog.chinaunix.net/space.php?uid=8824503&do=blog&cuid=425448

 

 

Oracle10中增加的回收站的功能:

 

1.查看所有与回收站有关的数据对象:

SQL> 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

 

2.查看回收站的东西:

SQL> SHOW RECYCLEBIN

仅仅列出OBJECT_NAME,ORIGINAL_NAME,TYPE,DROPTIME四列。

ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE DROP TIME

---------------- ------------------------------ ------------ -------------------

A                BIN$R+MY75CQQr+U9AGzM0MJ1Q==$0 TABLE        2009-01-10:16:02:35

B                BIN$tnTJEnUFSiOVfgMGQJD4NA==$0 TABLE        2009-01-10:16:02:44

C1               BIN$V+zsHnmGSLe0aaG+UOkWIw==$0 TABLE        2009-01-10:16:02:54

STUDENT          BIN$zV1QAvZLRF6QUJk1kd9MBg==$0 TABLE        2008-12-28:17:31:20

T                BIN$0Xc7bFJlQlOhoAan/bp4Fw==$0 TABLE        2008-12-14:19:42:19

T2               BIN$WuDMiaqgRraE4AwfZyKR1w==$0 TABLE        2009-01-10:16:03:22

 

3.查看recycle视图的定义

SQL> DESC RECYCLEBIN

Name           Type         Nullable Default Comments                                                

-------------- ------------ -------- ------- --------------------------------------------------------

OBJECT_NAME    VARCHAR2(30)                  New name of the object                                  

ORIGINAL_NAME VARCHAR2(32) Y                Original name of the object                             

OPERATION      VARCHAR2(9) Y                Operation carried out on the object                     

TYPE           VARCHAR2(25) Y                Type of the object                                      

TS_NAME       VARCHAR2(30) Y                Tablespace Name to which object belongs                 

CREATETIME     VARCHAR2(19) Y                Timestamp for the creating of the object                

DROPTIME       VARCHAR2(19) Y                Timestamp for the dropping of the object                

DROPSCN        NUMBER       Y                SCN of the transaction which moved object to Recycle Bin

PARTITION_NAME VARCHAR2(32) Y                Partition Name which was dropped                        

CAN_UNDROP     VARCHAR2(3) Y                User can undrop this object                             

CAN_PURGE      VARCHAR2(3) Y                User can undrop this object                             

RELATED        NUMBER                        Parent objects Obj#                                     

BASE_OBJECT    NUMBER                        Base objects Obj#                                       

PURGE_OBJECT   NUMBER                        Obj# for object which gets purged                       

SPACE          NUMBER       Y                Number of blocks used by this object    

 

4.详细查看具体的

SQL> SELECT T.OBJECT_NAME,T.ORIGINAL_NAME,T.TYPE,T.DROPTIME,T.CREATETIME FROM RECYCLEBIN T;

 

OBJECT_NAME                    ORIGINAL_NAME                    TYPE                      DROPTIME            CREATETIME

------------------------------ -------------------------------- ------------------------- ------------------- -------------------

BIN$0Xc7bFJlQlOhoAan/bp4Fw==$0 T                                TABLE                     2008-12-14:19:42:19 2008-10-11:23:01:11

BIN$ccbejyZCQ4udSL2iQk83Ww==$0 PK_STUDENT_ID                    INDEX                     2008-12-28:17:31:19 2008-12-28:17:27:21

BIN$UyiSWkrGRRSYCbZ4w97ptg==$0 T_TRIGGER                        TRIGGER                   2008-12-14:19:42:19 2008-10-26:15:37:14

BIN$zV1QAvZLRF6QUJk1kd9MBg==$0 STUDENT                          TABLE                     2008-12-28:17:31:20 2008-12-28:17:27:20

BIN$R+MY75CQQr+U9AGzM0MJ1Q==$0 A                                TABLE                     2009-01-10:16:02:35 2008-10-30:22:01:26

BIN$tnTJEnUFSiOVfgMGQJD4NA==$0 B                                TABLE                     2009-01-10:16:02:44 2008-10-30:22:03:44

BIN$V+zsHnmGSLe0aaG+UOkWIw==$0 C1                               TABLE                     2009-01-10:16:02:54 2008-10-26:16:05:42

BIN$WuDMiaqgRraE4AwfZyKR1w==$0 T2                               TABLE                     2009-01-10:16:03:22 2008-10-26:15:36:19

BIN$aFjB3kaNQmacc1irUBJfsg==$0 TT_TRIGGER                       TRIGGER                   2009-01-10:16:03:22 2008-10-26:15:39:22

BIN$4I6nffFIQjeGv3jKsc4Xow==$0 T3                               TABLE                     2009-01-10:16:03:22 2008-10-26:15:38:45

BIN$9gb8zixHSGqKGH96Te1/gQ==$0 TEST                             TABLE                     2009-01-10:16:03:22 2008-10-12:21:21:46

BIN$DxduMzI4RdqPL/UFxOJe+w==$0 TEST1                            TABLE                     2009-01-10:16:03:22 2008-10-12:21:23:37

BIN$egeKA5GkThWaiHe/0GixPQ==$0 TEST2                            TABLE                     2009-01-10:16:03:22 2008-10-12:21:28:39

BIN$GXH7XLqTQTGbjwzzlrNt6g==$0 TEST3                            TABLE                     2009-01-10:16:03:22 2008-10-12:21:49:29

BIN$Gouz6KxTS+2ac55DqAYJiQ==$0 TEST4                            TABLE                     2009-01-10:16:03:22 2008-10-12:22:11:55

BIN$Sg1vjzx0TIW3m9lmCWMqQg==$0 TEST5                            TABLE                     2009-01-10:16:03:22 2008-10-12:22:13:34

BIN$7IuwzwIER2ew1nm0j7jSTw==$0 TEST6                            TABLE                     2009-01-10:16:03:22 2008-10-15:22:03:39

BIN$UuoORCOETPCYuEY7indiSg==$0 TT                               TABLE                     2009-01-10:16:03:22 2008-10-26:16:10:49

BIN$n9q6RusoSlmfbRngZftmPA==$0 TT3                             TABLE                     2009-01-10:16:03:23 2008-10-29:21:07:25

 

5.清除一个表:

SQL> PURGE TABLE "BIN$UuoORCOETPCYuEY7indiSg==$0";

 

Done

 

6.清除回收站:

SQL> PURGE RECYCLEBIN;

 

Done

 

SQL> SELECT T.OBJECT_NAME,T.ORIGINAL_NAME,T.TYPE,T.DROPTIME,T.CREATETIME FROM RECYCLEBIN T;

 

OBJECT_NAME                    ORIGINAL_NAME                    TYPE                      DROPTIME            CREATETIME

------------------------------ -------------------------------- ------------------------- ------------------- -------------------

 

 

6.恢复一个表:

SQL> DROP TABLE P1;

 

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

------------------------------ -------------------------------- ------------------------- ------------------- -------------------

BIN$wtP8UH7PSFqRKd5NzdUsgQ==$0 SYS_C005204                      INDEX                     2009-01-11:15:54:22 2008-10-26:16:04:26

BIN$vaxMSW3YT/mOkJTp9VmtDw==$0 P1                               TABLE                     2009-01-11:15:54:22 2008-10-26:16:04:26

 

SQL> FLASHBACK TABLE P1 TO BEFORE DROP;

 

Done

SQL> SELECT * FROM TAB WHERE TNAME ='P1';

 

TNAME                          TABTYPE CLUSTERID

------------------------------ ------- ----------

P1                             TABLE  

 

7.不启用回收站:

SQL> ALTER SESSION SET RECYCLEBIN=OFF;

Session altered

 

SQL> PURGE RECYCLEBIN;

Done

 

SQL> DROP TABLE P1;

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

 

转载于:https://www.cnblogs.com/chinhr/archive/2011/09/19/2181296.html

你可能感兴趣的:(关于ORACLE 10g中的RECYCLE BIN)