导读:
在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/u1/53616/showart_425448.html
在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/u1/53616/showart_425448.html