☆回收站概念
oracle从10g开始,引入回收站(Recycle Bin)概念。回收站的全称叫:Tablespace Recycle Bin。回收站是一个逻辑区域,oracle并没有为它分配物理空间。当表被Drop后,如果回收站中空间够用的话,表并没有被立即删除,oracle会给表加上一个被删除的标记。只有当回收站空间不足,或者手动清理回收站,这些被删除的表才会被彻底删除。所以当我们误删除以后,可以用闪回技术还原被删除的表。

☆开启、关闭回收站
可以使用命令查看数据库是否开启了回收站,当下列中的value值为on时表明开启,off表示关闭

SYS@LGR> show parameter recyclebin;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
recyclebin string on SYS@LGR> select name,value from v$parameter where name='recyclebin'; NAME VALUE
-------------------- ----------
recyclebin on

☆可以通过设置初始化参数recyclebin启用或者禁用回收站功能。

##会话级别关闭回收站
SYS@LGR> ALTER SESSION SET RECYCLEBIN=OFF; Session altered. ##系统级别关闭回收站
SQL> alter system set recyclebin = off scope = spfile; System altered.

☆闪回删除
语法:
FLASHBACK TABLE [schema.] {BEFORE DROP [RENAME TO
table_new_name]}
回收站中表名的含义:(格式:BINglobalUIDversion )
- BIN:表示 RECYCLEBIN
- globalUID:是一个全局唯一的,24 个字节,该标识与原对象名没有 任何关系
- version:指数据库分配的版本号

1) 表准备环境(创建测试表 t ,索引 idx_t ,触发器 trg_t)

SYS@LGR> conn scott/tiger;
Connected.
SCOTT@LGR> create table t(x number(2),d date); Table created. SCOTT@LGR> create unique index idx_t on t(x); Index created. SCOTT@LGR> create or replace trigger trg_t
2 before insert on t
3 for each row
4 begin
5 if :new.d is null then
6 :new.d :=sysdate;
7 end if;
8 end;
9 / Trigger created

2)删除表t

SCOTT@LGR> drop table t;

Table dropped.

SCOTT@LGR> select tname,tabtype from tab;

TNAME                          TABTYPE
------------------------------ -------
BIN$Q8N67S/xGAngUwEAAH9JoA==$0 TABLE
BIN$QyLhuF3CKuHgUwEAAH/Q8Q==$0 TABLE
BONUS TABLE
DEPT TABLE
EMP TABLE
EMP1 TABLE
EMP2 TABLE
SALGRADE TABLE
T1 TABLE
TMPD_DEPT TABLE
TMPP_DEPT TABLE 11 rows selected. SCOTT@LGR> show recyclebin;
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
DEPT1 BIN$QyLhuF3CKuHgUwEAAH/Q8Q==$0 TABLE 2016-12-08:17:01:23
T BIN$Q8N67S/xGAngUwEAAH9JoA==$0 TABLE 2016-12-16:16:37:28 SCOTT@LGR> SELECT original_name, object_name, type,droptime FROM
2 user_recyclebin; ORIGINAL_NAME OBJECT_NAME TYPE DROPTIME
-------------- ------------------------------ -------- -------------------
IDX_T BIN$Q8N67S/vGAngUwEAAH9JoA==$0 INDEX 2016-12-16:16:37:28
DEPT1 BIN$QyLhuF3CKuHgUwEAAH/Q8Q==$0 TABLE 2016-12-08:17:01:23
TRG_T BIN$Q8N67S/wGAngUwEAAH9JoA==$0 TRIGGER 2016-12-16:16:37:28
T BIN$Q8N67S/xGAngUwEAAH9JoA==$0 TABLE 2016-12-16:16:37:28

3)闪回表

SCOTT@LGR> flashback table t to before drop;

Flashback complete.

SCOTT@LGR> SELECT  original_name,  object_name,  type,droptime  FROM user_recyclebin;

ORIGINAL_NAME                    OBJECT_NAME                    TYPE             DROPTIME
-------------------------------- ------------------------------ ------------------------- -------------------
DEPT1 BIN$QyLhuF3CKuHgUwEAAH/Q8Q==$0 TABLE 2016-12-08:17:01:23

4)查看闪回的表相关对象的状态
通过以下查询,发现以下两个问题:
1 :触发器的状态为失效的
2:对象名称,除表名以外,其他的都已不是原来的名称

SCOTT@LGR> SELECT object_name,object_type,status FROM user_objects;

OBJECT_NAME                      OBJECT_TYPE         STATUS
-------------------------------- ------------------- -------
DEPT TABLE VALID
PK_DEPT INDEX VALID
BONUS TABLE VALID
SALGRADE TABLE VALID
EMP1 TABLE VALID
EMP2 TABLE VALID
T1 TABLE VALID
TMPD_DEPT TABLE VALID
EMP TABLE VALID
TMPP_DEPT TABLE VALID
T TABLE VALID
BIN$Q8N67S/wGAngUwEAAH9JoA==$0 TRIGGER INVALID
BIN$Q8N67S/vGAngUwEAAH9JoA==$0 INDEX VALID

5) 重新编译触发器,并 重命名触发器

SCOTT@LGR> alter trigger"BIN$Q8N67S/wGAngUwEAAH9JoA==$0" compile;

Trigger altered.

SCOTT@LGR> alter trigger"BIN$Q8N67S/wGAngUwEAAH9JoA==$0" rename to trg_t;

Trigger altered.

SCOTT@LGR> SELECT object_name,object_type,status FROM user_objects;

OBJECT_NAME                    OBJECT_TYPE         STATUS
------------------------------ ------------------- -------
DEPT TABLE VALID
PK_DEPT INDEX VALID
BONUS TABLE VALID
SALGRADE TABLE VALID
EMP1 TABLE VALID
EMP2 TABLE VALID
T1 TABLE VALID
TMPD_DEPT TABLE VALID
EMP TABLE VALID
TMPP_DEPT TABLE VALID
T TABLE VALID
BIN$Q8N67S/vGAngUwEAAH9JoA==$0 INDEX VALID
TRG_T TRIGGER VALID

【Oracle】回收站的更多相关文章

  1. ORACLE 回收站导致的故障

    ORACLE 回收站导致的故障 一.故障 (1)现象     一个生产环境,oracle数据库挂死,严重影响生产.查死锁sql,发现大量日志插入语句,并且每条运行时间都超过一分钟,插入非常缓慢.据分析 ...

  2. oracle 回收站管理

    oracle10g,在pl/sql中选中删除后会出现类似:BIN$nJ5JuP9cQmqPaArFei384g==$0的表. 1.查看回收站 select * from user_recyclebin ...

  3. oracle 回收站

    oracle10g,在pl/sql中选中删除后会出现类似:BIN$nJ5JuP9cQmqPaArFei384g==$0的表. 1.查看回收站 select * from user_recyclebin ...

  4. 5.创建表,使用alter进行表信息的增删改,Oracle回收站,集合运算

     1  Oracle基于用户的管理方案 2 DDL语句可以管理数据库的对象有:视图   索引  序列  同义词   约束 3  创建一个表,有2个条件(1 有权限:2有表空间) Oracle给你提 ...

  5. 【转】Oracle回收站(recyclebin)

    我们都比较熟悉windows中的回收站,文件删除后放到回收站里还可以再复原.Oracle回收站的原理完全一样,只是实现的细节方面有些差异.另外回收站中只能回收表和相关的对象包括索引.约束.触发器.嵌套 ...

  6. ORACLE回收站机制介绍

    回收站概念 从ORACLE 10g开始,引入了一个叫回收站(Recycle Bin)的概念.它的全称叫Tablespace Recycle Bin.回收站实际是一个逻辑容器(逻辑区域),原理有点类似于 ...

  7. Oracle回收站使用全攻略

    摘要:回收站(Recycle Bin)从原理上来说就是一个数据字典表,放置用户删除(drop)掉的数据库对象信息.用户进行删除操作的对象并没有被数据库删除,仍然会占用空间.除非是由于用户手工进行Pur ...

  8. Oracle回收站 使用

    查询回收站 SELECT * FROM RECYCLEBIN; SELECT * FROM USER_RECYCLEBIN; --USER_RECYCLEBING与RECYCLEBIN是同义词,字段完 ...

  9. Oracle回收站

    回收站是删除对象使用的存储空间.可以使用实例参数recyclebin禁用回收站,默认是on,可以为某个会话或系统设置为off或on.所有模式都有一个回收站. 当表空间不足时可以自动重用回收站对象占用的 ...

  10. Oracle回收站的清理方法

    http://blog.itpub.net/18841027/viewspace-1057765/

随机推荐

  1. [SDFZOJ]1069:树上统计

    神题...std丑的不行. 我们可以发现i->i+1的边被覆盖过i×(n-i)次. 因为以1->i为左端点,以i+1->n的为右端点,i->i+1都将被覆盖这么多次. 然后从1 ...

  2. C++ 类型转化(运算符重载函数)和基本运算符重载(自增自减)

    类型转化(运算符重载函数) 用转换构造函数可以将一个指定类型的数据转换为类的对象.但是不能反过来将一个类的对象转换为一个其他类型的数据(例如将一个Complex类对象转换成double类型数据).在C ...

  3. (11)Spring Boot配置ContextPath【从零开始学Spring Boot】

    Spring boot默认是/ ,这样直接通过http://ip:port/就可以访问到index页面,如果要修改为http://ip:port/path/ 访问的话,那么需要在Application ...

  4. LaTeX的简单使用方法

    先来一个总结得比较好的https://blog.csdn.net/garfielder007/article/details/51646604 1.普通公式 $公式不换行$ $公式不换行$ $$公式独 ...

  5. dubbo协议参考手册(转)

    原文链接:http://wely.iteye.com/blog/2331332 协议参考手册 (+) (#) 推荐使用Dubbo协议 性能测试报告各协议的性能情况,请参见:性能测试报告 (+) dub ...

  6. Linux查看文件内容命令:less(转)

    less与more类似,但使用less可以随意浏览文件,而more仅能向前移动,却不能向后移动,而且less在查看之前不会加载整个文件. 语法 less [参数] 文件 参数说明: -b <缓冲 ...

  7. STM32的IO配置点灯

    1.led.c的详细的代码: /*----------------------------------------------------------*/ #include "led.h&q ...

  8. 在Maven中设置Nexus私有服务为中央工厂

    在Maven中设置Nexus私有服务为中央工厂(repository) 2015-12-12 17:45 168人阅读 评论(0) 收藏 举报  分类: Maven(17)  版权声明:本文为博主原创 ...

  9. VC++玩转Native Wifi API 2---Wifi on与wifi off

     有心栽花花不开,无心插柳柳成排. 今天要说的这个wifi on\off是在软件层面控制无线网卡的开和关. 问题听起来简单,调查起来复杂.但解决起来却也简单.关键函数便是Native wifi a ...

  10. CentOS安装、配置APR和tomcat-native

    APR:Apache Portable Run-time libraries,Apache可移植执行库 在早期的Apache版本号中.应用程序本身必须可以处理各种详细操作系统平台的细节,并针对不同的平 ...