ORACLE Recyclebin管理及flashback recyclebin中的对象

Flashback用于恢复用户误删除的对象(包括表,索引等), 不支持sys用户. system表空间下的对象,也不能从回收站里拿到。
故使用SYS 或者SYSTEM用户登陆时, show recyclebin 为空。
初始化参数recyclebin 用于控制是否启用recyclebin功能,缺省是ON, 可以使用OFF关闭。

SQL> show parameter recyclebin;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
recyclebin string on

禁用该功能:
SQL> alter system set recyclebin=off;
SQL> alter system set recyclebin=on;
SQL> alter session set recyclebin=off;
SQL> alter session set recyclebin=on;
禁用后删除的对象将直接删除,不会写到Recycle中,当然在删除时,指定purge 参数,表也将直接删除,不会写到recyclebin中。
SQL> drop table name purge;

表空间的Recycle Bin 区域只是一个逻辑区域,而不是从表空间上物理的划出一块区域固定用于回收站,因此Recycle Bin是和普通对象共用表空间的存储区域,或者说

是Recycle Bin的对象要和普通对象抢夺存储空间。当发生空间不够时,Oracle会按照先入先出的顺序覆盖Recycle Bin中的对象。也可以手动的删除Recycle Bin占用的

空间。
1). Purge tablespace tablespace_name : 用于清空表空间的Recycle Bin
2). Purge tablespace tablespace_name user user_name: 清空指定表空间的Recycle Bin中指定用户的对象
3). Purge recyclebin: 删除当前用户的Recycle Bin中的对象
4). Purge dba_recyclebin: 删除所有用户的Recycle Bin中的对象,该命令要sysdba权限
5). Drop table table_name purge: 删除对象并且不放在Recycle Bin中,即永久的删除,不能用Flashback恢复。
6). Purge index recycle_bin_object_name: 当想释放Recycle bin的空间,又想能恢复表时,可以通过释放该对象的index所占用的空间来缓解空间压力。 因为索引

是可以重建的。
7).PURGE TABLE TABLE_NAME; --删除回收站中指定对象
或者使用其回收站中的名称:
PURGE TABLE "BIN$04LhcpndanfgMAAAAAANPw==$0";

==============
1、回收站不支持sys和system表空间下的对象

SQL> show user;
USER 为 "SYS"
SQL> create table test as select * from scott.emp;

表已创建。

SQL> commit;

提交完成。

SQL> select * from test;

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
1111 rusky dba 7839 2000 0 10
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
……
SQL> show parameter recyclebin;

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
recyclebin string on
SQL> drop table test;

表已删除。

SQL> show recyclebin;
SQL> select * from recyclebin; --sys用户删除的表不会进回收站

未选定行

2、普通用户使用flashback从回收站中还原删除的表

SQL> show user;
USER 为 "LXJ"
SQL> create table test as select * from scott.emp;

表已创建。

SQL> commit;

提交完成。

SQL> drop table test;

表已删除。

SQL> show recyclebin;
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
TEST1 BIN$Pv0yCIwaS9W2iDnPvOM3bQ==$0 TABLE 2015-02-13:14:42:48
SQL>

--RECYCLEBIN NAME的命名规则为BIN$GUID$Version 其中GUID为GlobalUID,是一个全局唯一、24个字符长的标识对象,它是ORACLE内部使用的标识。 其中$version是ORACLE数据库分配的版本号。

--还原回收站对象
还原回收站被删除的表、索引等对象, 是通过Flashback Drop实现的。如下所示。

SQL> flashback table test to before drop;

闪回完成。

--如果两个相同名字的表TEST被删除了,此时闪回被DROP的表TEST,实质是闪回最后一个被删除的表(后进先出原则),如果此时继续闪回操作就会报ORA-38312错误。
SQL> flashback table test to before drop;
flashback table test to before drop
*
ERROR at line 1:
ORA-38312: original name is used by an existing object。

此时可以在闪回过程中对表名进行重命名解决问题

SQL> flashback table test to before drop rename to test2; --闪回到新的名字

闪回完成。

--如果回收站有两个被DROP掉的表TEST, 如果想闪回第一个被删除的表,直接指定RECYCLEBIN NAME进行闪回即可。

SQL> show recyclebin;
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
TEST BIN$lTMSl/ObRsKNPJ4yanuhyQ==$0 TABLE 2015-02-13:15:24:34
TEST BIN$5DYhICpRT9mWVJGsAumSaw==$0 TABLE 2015-02-13:14:49:42

SQL> flashback table "BIN$lTMSl/ObRsKNPJ4yanuhyQ==$0" to before drop;

Flashback Drop注意事项
1:只能用于非系统表空间和本地管理的表空间。
在系统表空间中,表对象删除后就真的从系统中删除了,而不是存放在回收站中。
2:对象的参考约束不会被恢复,指向该对象的外键约束需要重建。
3:对象能否恢复成功,取决于对象空间是否被覆盖重用。
4:当删除表时,依赖于该表的物化视图也会同时删除,但是由于物化视图并不会放入recycle binzhong,因此当你执行flashback drop时,并不能恢复依赖其的物化视图。需要DBA手工重建。
5:对于回收站(Recycle Bin)中的对象,只支持查询。不支持任何其他DML、DDL等操作。

时间: 2024-08-01 22:43:42

ORACLE Recyclebin管理及flashback recyclebin中的对象的相关文章

2.Oracle 闪回特性(FLASHBACK DROP & RECYCLEBIN)

转载自:https://blog.csdn.net/leshami/article/details/6105327 FLASHBACK DROP 特性允许在不丢失任何数据库的情况下将指定的表恢复至其被删除的时间点,并保持数据库为当前状态.闪回删除并不是真正的删除表,而是把该表重命名并放入回收站,类似于Windows的回收站一样.当某个活动对象需要使用该表所占用的空间时,该表才会被真正删除.只要空间未被复用,该表即可恢复.本文主要讲述了FLASHBACK DROP特性以及闪回特性中回收站(RECY

altersystem set recyclebin = off 报错 recyclebin 参数在11g和10g中的区别

在11g中altersystem set recyclebin = off 报错recyclebin 参数在11g和10g中的区别 在Oracle 11g中,recyclebin参数发生了微小的变化. This supported parameter was introduced inOracle 10.2.0 Version  ParameterName               Data Type             Session Modifiable             Sys

oracle 回收站管理

oracle10g,在pl/sql中选中删除后会出现类似:BIN$nJ5JuP9cQmqPaArFei384g==$0的表. 1.查看回收站 select * from user_recyclebin; 2.清空回收站 purge recyclebin; 3.清空回收站中的某个表 --如下方式删除会提示:SQL命令未正确结束. purge table BIN$/UpBuh+LQ9yZGN95BFsk5Q==$0 --正确写法如下: purge table "BIN$/UpBuh+LQ9yZGN9

Oracle 闪回特性(FLASHBACK DATABASE)

--===================================== -- Oracle 闪回特性(FLASHBACK DATABASE) --===================================== 闪回技术通常用于快速简单恢复数据库中出现的认为误操作等逻辑错误,从闪回的方式可以分为基于数据库级别闪回.表级别闪回.事务 级别闪回,根据闪回对数据的影响程度又可以分为闪回恢复,闪回查询.闪回恢复将修改数据,闪回点之后的数据将全部丢失.而闪回查询则可 以查询数据被DML的

ORACLE权限管理调研笔记

在默认的方式下,任何非授权用户都不能在ORACLE执行任何操作,且默认情况下,只有SYSTEM和SYS能给其他用户授予权限. ORACLE的用户权限分为系统权限(SYSTEMPRIVILEGE)和对象权限(OBJECTPRIVILEGE). * 系统权限控制了对数据字典的修改. * 对象权限控制了对数据的修改. 1      系统权限 系统权限通常是针对修改表数据字典.修改数据库实例的情况进行控制.例如创建用户.创建表空间.控制会话等. 1.1    语法支持 其中权限部分可以有两种选择,分别是

Oracle权限管理详解

转载--CzmMiao的博客生活 Oracle 权限 权限允许用户访问属于其它用户的对象或执行程序,ORACLE系统提供三种权限:Object 对象级.System 系统级.Role 角色级.这些权限可以授予给用户.特殊用户public或角色,如果授予一个权限给特殊用户"Public"(用户public是oracle预定义的,每个用户享有这个用户享有的权限),那么就意味作将该权限授予了该数据库的所有用户.对管理权限而言,角色是一个工具,权限能够被授予给一个角色,角色也能被授予给另一个角

Oracle 客户端管理软件安装

1.首先,先说明下为什么要安装Oracle客户端管理工具? 因为Oracle服务端过大,而且消耗的资源过多,大部分公司会把服务端装在公司的服务器上,而不会装在员工的电脑上,所以这个时候就需要使用Oracle客户端管理工具来远程连接到Oracle服务端上.综上所述:Oracle客户端管理工具就是用来远程连接Oracle服务端的一种工具.下面简单介绍几种常用的Oracle客户端. 2.Oracle客户端介绍 (1)SQL Developer SQL Developer是Oracle自带的客户端工具,

[转]Oracle DB 管理ASM实例

? 描述使用ASM 的好处 ? 管理ASM 实例 ? 创建和删除ASM 磁盘组 ? 扩展ASM 磁盘组 ? 通过使用各种实用程序检索ASM 元数据 Automatic Storage Management Automatic Storage Management (ASM) 将文件系统与卷管理器纵向集成在一起,这是一项专门为Oracle DB 文件建立的技术.使用ASM 可管理单个对称多处理(SMP) 计算机,或通过管理集群的多个节点来支持Oracle Real Application Clus

oracle 用户管理

1. 用户进程 Ps –elf | greporacleocl |grep–v grep 2. 数据库进程 Ps –elf |greporacleorcl 3. 守护进程 Ps –elf |grep oha 大池:在SGA中,大池是一个可选的缓冲区域,管理员可以根据需要对其进行配置,在大规模输入输出及备份过程中需要大池作为缓存空间,例如,大数据操作.数据库备份与恢复之类的操作. Java池:Java池是一个可选的缓冲区,但是在安装java或者java程序时必须设置Java池,它用于编译Java语