【Oracle】回收站
☆回收站概念
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】回收站的更多相关文章
- ORACLE 回收站导致的故障
ORACLE 回收站导致的故障 一.故障 (1)现象 一个生产环境,oracle数据库挂死,严重影响生产.查死锁sql,发现大量日志插入语句,并且每条运行时间都超过一分钟,插入非常缓慢.据分析 ...
- oracle 回收站管理
oracle10g,在pl/sql中选中删除后会出现类似:BIN$nJ5JuP9cQmqPaArFei384g==$0的表. 1.查看回收站 select * from user_recyclebin ...
- oracle 回收站
oracle10g,在pl/sql中选中删除后会出现类似:BIN$nJ5JuP9cQmqPaArFei384g==$0的表. 1.查看回收站 select * from user_recyclebin ...
- 5.创建表,使用alter进行表信息的增删改,Oracle回收站,集合运算
1 Oracle基于用户的管理方案 2 DDL语句可以管理数据库的对象有:视图 索引 序列 同义词 约束 3 创建一个表,有2个条件(1 有权限:2有表空间) Oracle给你提 ...
- 【转】Oracle回收站(recyclebin)
我们都比较熟悉windows中的回收站,文件删除后放到回收站里还可以再复原.Oracle回收站的原理完全一样,只是实现的细节方面有些差异.另外回收站中只能回收表和相关的对象包括索引.约束.触发器.嵌套 ...
- ORACLE回收站机制介绍
回收站概念 从ORACLE 10g开始,引入了一个叫回收站(Recycle Bin)的概念.它的全称叫Tablespace Recycle Bin.回收站实际是一个逻辑容器(逻辑区域),原理有点类似于 ...
- Oracle回收站使用全攻略
摘要:回收站(Recycle Bin)从原理上来说就是一个数据字典表,放置用户删除(drop)掉的数据库对象信息.用户进行删除操作的对象并没有被数据库删除,仍然会占用空间.除非是由于用户手工进行Pur ...
- Oracle回收站 使用
查询回收站 SELECT * FROM RECYCLEBIN; SELECT * FROM USER_RECYCLEBIN; --USER_RECYCLEBING与RECYCLEBIN是同义词,字段完 ...
- Oracle回收站
回收站是删除对象使用的存储空间.可以使用实例参数recyclebin禁用回收站,默认是on,可以为某个会话或系统设置为off或on.所有模式都有一个回收站. 当表空间不足时可以自动重用回收站对象占用的 ...
- Oracle回收站的清理方法
http://blog.itpub.net/18841027/viewspace-1057765/
随机推荐
- SSL证书在线申请和取回证书指南
1.客服下单后用户会收到一封邮件,来验证接收证书的邮箱;如图1所示:只有完成此邮箱验证才能正常申请证书; 请注意:为了确保您或您的用户能正常收到WoSign证书管理系统自动发送的邮件,请一定要把系统发 ...
- eas快捷键
ctrl+shift+c 获取分录行的id ctrl+alt+[ 获取任意界面操作的信息
- Ubuntu安装RTX2080显卡驱动
安装RTX2080显卡驱动 近日新购了一台DELL服务器,用于TensorFlow,由于显卡是另加的,需要安装显卡驱动. 服务器配置 服务器型号:DELL PowerEdge R730 CPU:2*I ...
- Linux目录与相关配置文件讲解
linux目录介绍及配置文件详细介绍 重要目录简介 目录名 作用 boot 与电脑启动相关,推荐单独分区. etc 存放配置文件 mnt 一般用来设置挂载点 src.sys.proc 与系统内核相关, ...
- Luogu P1198 BZOJ 1012 最大数 (线段树)
手动博客搬家: 本文发表于20170821 14:32:05, 原地址https://blog.csdn.net/suncongbo/article/details/77449455 URL: (Lu ...
- cxdbtreelist的处理点滴
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAuAAAAE8CAIAAAAOqJOXAAAgAElEQVR4nOy9eXAcV37n+bwzf21sbO ...
- 【[Offer收割]编程练习赛10 B】出勤记录II
[题目链接]:http://hihocoder.com/problemset/problem/1482 [题意] [题解] 递推题. 每次增加3个字符中的一个;然后根据下面这个数组递推; 递推方式看程 ...
- 南洋理工大学 ACM 在线评测系统 矩形嵌套
矩形嵌套 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 有n个矩形,每个矩形可以用a,b来描述,表示长和宽.矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a& ...
- [Cypress] Get started with Cypress
Adding Cypress to a project is a simple npm install away. We won’t need any global dependencies beyo ...
- SQL Server中如何设置对列的权限
一.方式一:使用视图 将需要限制用户只能看到特定的几个列.设置成一个视图,然后对这个视图进行权限控制 二.方式二:使用GRANT语句 1.授予相关列的查询权限(SELECT) 在数据库db1中,登录名 ...