admin 管理员组

文章数量: 1184232

删除一个表,并不执行真正的删除操作,而是重命名后连同表的索引、约束等放入recycl bin

一个用户一个recyclebin

SQL> showparameter recyclebin

NAME                                 TYPE        VALUE

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

recyclebin                           string      on

SQL>

SQL> select * from recyclebin; === 》是user_recyclebin的同义词

OBJECT_NAME                    ORIGINAL_NAME                    OPERATION TYPE                      TS_NAME

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

BIN$1d7kqYtrRSK8IZuFVL1c2g==$0TMP                             DROP      TABLE                     USERS

SQL> select * fromuser_recyclebin;

OBJECT_NAME                    ORIGINAL_NAME                    OPERATION TYPE                      TS_NAME

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

BIN$1d7kqYtrRSK8IZuFVL1c2g==$0TMP                             DROP      TABLE                     USERS

SQL> conn sys/ymhas sysdba;

已连接。

SQL> select * fromdba_recyclebin;

OWNER                          OBJECT_NAME                    ORIGINAL_NAME                    OPERATION TYPE

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

SCOTT                         BIN$1d7kqYtrRSK8IZuFVL1c2g==$0 TMP                              DROP   TABLE

Original name:被删除对象的原始名称。

Recyclebin name:被删除对象在recycle bin中的名称

Object  type:对象类型

Drop time:删除时间

BIN$1d7kqYtrRSK8IZuFVL1c2g==$0

是按照bin$$globalUID$version格式命名:

globalUID:数据库生成的26个长度的标识符

v$version:数据库生成的对象版本号.

SQL> select *  from scott.'BIN$1d7kqYtrRSK8IZuFVL1c2g==$0';

select *  from scott.'BIN$1d7kqYtrRSK8IZuFVL1c2g==$0'

*

第 1 行出现错误:

ORA-00903: 表名无效

SQL> select *  from scott. "BIN$1d7kqYtrRSK8IZuFVL1c2g==$0"; ====> 双引号

ID VL

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

201 A1

202 B1

7 PK_DEPT

8 PK_DEPT

9 PK_DEPT

10 DEPT

11 DEPT

12 DEPT

SQL> drop tableemp;

表已删除。

SQL> select * fromuser_recyclebin;

OBJECT_NAME                    ORIGINAL_NAME                    OPERATION TYPE                      TS_NAME

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

BIN$3lUPDEw+RA+mIB2+Ot6WsQ==$0TMP                             DROP      TABLE                     USERS

BIN$Q2RoiyoNQHiky9BiIj44yA==$0PK_EMP                          DROP      INDEX                     USERS

BIN$1d7kqYtrRSK8IZuFVL1c2g==$0TMP                             DROP      TABLE                     USERS

BIN$zoK1lJ9+SASHwMbJa5tFSg==$0EMP                             DROP      TABLE                     USERS

SQL> select * from "BIN$zoK1lJ9+SASHwMbJa5tFSg==$0" as oftimestamp sysdate-1; === 》回收站的东西也支撑 flashback query 查询

EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM    DEPTNO

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

7369 SMITH      CLERK           7902 17-12月-80            800                    20

7499 ALLEN      SALESMAN        7698 20-2月 -81           1600        300         30

7521 WARD       SALESMAN        7698 22-2月 -81           1250        500         30

7566 JONES      MANAGER         7839 02-4月 -81           2975                    20

7654 MARTIN     SALESMAN        7698 28-9月 -81           1250       1400         30

7698 BLAKE      MANAGER         7839 01-5月 -81           2850                    30

7782 CLARK      MANAGER         7839 09-6月 -81           2450                    10

7788 SCOTT      ANALYST         7566 19-4月 -87           3000                    20

7839 KING       PRESIDENT            17-11月-81           5000                    10

7844 TURNER     SALESMAN        7698 08-9月 -81           1500          0         30

7876 ADAMS      CLERK           7788 23-5月 -87           1100                    20

触发recycle bin主动清理对象只有一个原因:没有足够空间,导致出现不够的有两个:

1、表空间无足够的空闲空间,并且没有新的空间扩展操作。

2、该表空间内又要创建新的对象,需要分配空间。

原则:先进先出(FIFO)。同时删除的,先清理索引后清理表数据

删除不放入回收站的方式:

1、修改初始化参数禁用或启用recycle bin,默认为on。

SQL> alter systemset recyclebin=off;

系统已更改。

SQL> create tablescott.ymh(a int);

表已创建。

SQL> drop tablescott.ymh ;

表已删除。

SQL> select * fromdba_recyclebin where ORIGINAL_NAME='YMH';

未选定行

SQL>

SQL> alter systemset recyclebin=on;

系统已更改。

SQL> create tablescott.ymh(a int);

表已创建。

SQL> drop tablescott.ymh ;

表已删除。

SQL> select * fromdba_recyclebin where original_name='YMH';

OWNER                          OBJECT_NAME                    ORIGINAL_NAME                    OPERATION TYPE

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

SCOTT                         BIN$7i2IgZdhSG+IWz5bDB+nZA==$0 YMH                              DROP   TABLE

SQL>

2、删除时指定purge参数

SQL> showparameter recyclebin;

NAME                                 TYPE        VALUE

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

recyclebin                           string      ON

SQL> create tablescott.ttttttt(a int);

表已创建。

SQL> drop tablescott.ttttttt purge ;

表已删除。

SQL> select * fromdba_recyclebin where original_name='TTTTTTT';

未选定行

SQL>

3、清理recycle bin中的现有对象

SQL> showparameter recyclebin;

NAME                                 TYPE        VALUE

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

recyclebin                           string      ON

SQL> connscott/tiger

已连接。

SQL> create tabletemp2(id number);

表已创建。

SQL> drop tabletmp2;

表已删除。

SQL> showrecyclebin;

ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME

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

TMP              BIN$3lUPDEw+RA+mIB2+Ot6WsQ==$0TABLE        2011-07-30:10:29:40

TMP              BIN$1d7kqYtrRSK8IZuFVL1c2g==$0TABLE        2011-07-29:23:50:42

TMP2             BIN$hx369X7qTSSo42lU13frIA==$0TABLE        2011-07-30:10:51:23

YMH              BIN$7i2IgZdhSG+IWz5bDB+nZA==$0TABLE        2011-07-30:10:42:47

SQL> purge table"BIN$hx369X7qTSSo42lU13frIA==$0";

表已清除。

SQL> showrecyclebin;

ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME

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

TMP              BIN$3lUPDEw+RA+mIB2+Ot6WsQ==$0TABLE        2011-07-30:10:29:40

TMP              BIN$1d7kqYtrRSK8IZuFVL1c2g==$0TABLE        2011-07-29:23:50:42

YMH              BIN$7i2IgZdhSG+IWz5bDB+nZA==$0TABLE        2011-07-30:10:42:47

SQL> purgerecyclebin;

回收站已清空。

SQL> showrecyclebin;

SQL>

还有删除用户或所在表空间,也会清空对应的recycle bin。

本文标签: 表已删除 编程 已连接