oracle recyclebin详解

简介: 今天在SOA应用数据库上运用DBMS_REDEFITION包进行在线非分区表转换分区表操作时,本想DROP掉建的临时表cube_scope_temp不小心后面忘记加"temp"直接执行了,我...
今天在SOA应用数据库上运用DBMS_REDEFITION包进行在线非分区表转换分区表操作时,本想DROP掉建的临时表cube_scope_temp不小心后面忘记加"temp"直接执行了,我等意识到这个问题的时候已经晚了,因为项目建设等遗留问题,数据库是非归档模式,也没有做备份,因为怕影响业务,一时也没想到oracle回收站recyclebin这个方法,直接将备份的建表语句新建了表,保证了业务正常开展,正苦于怎么恢复数据时,突然想oracle 10g提供了回收站这个特性,成功实施数据恢复!
    oracle 回收站recyclebin是10g才有的新特性,当我们drop table cube_scope 【purge】时,如果不指定purge时,系统只是将这个表重命名为BIN$开头的名称,并在数据字典中修改了相关数据,表所占用的物理空间并没有真正的回收,此时所占用的空间还是原来的表空间,当表空间不够用时,ORACLE会跟据DROPSCN#自动进行逐个清理回收站中对像所占用的空间,10g默认是打开回收站功能的。
一、如何查看是否开启回收站功能?
SQL> show parameter recyclebin
     NAME                                 TYPE        VALUE
     ------------------------------------ ----------- ------------------------------
     recyclebin                           string      on
     on:表示表空间启用的回收站功能,建议所有数据都开启这个功能,百利而无一害!
     备注:该参数可以设置成session级别打开,也可以设置成system级别,不用重启就可以生效
二、如何不经过回收站直接删除并释放所占用空间?
SQL> drop table cube_scope purge
     备注:此命令相当于truncate+drop操作,一般不建议这么操作!
三、如何将回收站recyclebin中的对像还原?
SQL> flashback table cube_scope to before drop
     表名可以是回收站系统的dba_recyclebin.object_name也可以是dba_recyclebin.original_name
     但是此时问题来了,我已经用备份的DDL语句重建了一个新的表,这个时候再用此命令还原显然会报错,这个时候怎么办呢,只能还原成一个别名,具体操作命令是
SQL> flashback table cube_scope before drop rename to cube_scope_old
     既然恢复了删除前的表中数据,现在只能从cube_scope_old中的数据插入cube_scope中
SQL> insert into cube_scope select * from cube_scope_old t
     成功恢复了数据,是不是可以收工了?没有,还有什么忘记做了?想想?
     注意:如果将表drop掉,那么索引也被drop掉了,用这种方法把表找回来了,但是你的索引呢?你的约束呢?表恢复后一定要将表上的索引重建建立起来(切记),索引丢了最多影响性能,约束没了可能会造成业务数据混乱(一定要注意)
四、如何手工清除回收站中的对像?
SQL> purge table orabpel.cube_scope_old --清除具体的对像
    注意:如果此时是DBA用户操作其它用户数据,清除回收站中的表时要加上用户名,否则报表不在回收站中
SQL> purge tablespace ORAPEL   --清除指定的表空间对像
SQL> purge tablespace ORAPEL user orabpel --删除表空间指定用户下的所有对像
SQL> purge recyclebin  --清空整个回收站
五、show recyclebin为什么没有数据呢?
    首先们需要明白一点,recyclebin是user_recyclebin的同义词,如此你当前的登陆用户是system此时运用
show recyclebin是没有数据据的
六、如果同一对像多次删除怎么在recyclebin中识别?
    dba_recyclebin中对每删除一个对像都会以BIN$进行命名,同时会有相应的dropscn、createtime、droptime可以跟据这些对像进行定位,然后进行恢复
七、ORACLE空间利用原则
    1. 使用现有的表空间的未使用空间
    2. 如果没有了空闲空间,则检查回收站,对于回收站的对象按照先进先出的原则,对于最先删除的对象,
       oracle在空间不足之时会最先从回收站删除以满足新分配空间的需求
    3. 如果回收站也没有对象可以清理,则检查表空间是否自扩展,如果自扩展则扩展表空间,然后分配新空
       间
    4.如果表空间非自扩展,或者已经不能自扩展(到达最大限制),则直接报表空间不足错误,程序终止
八、DROP掉的对像是不是都会经过回收站?
    以下几种drop不会将相关对像放进回收站recyclebin中
    * drop tablespace :会将recyclebin中所有属于该tablespace的对像清除
    * drop user :会将recyclebin中所有属于该用户的对像清除
    * drop cluster : 会将recyclebin中所有属于该cluster的成员对像清除
    * drop type : 会将recyclebin中所有依赖该type对像清除
    另外还需要注意一种情况,对像所在的表空间要有足够的空间,不然就算drop掉经过recyclebin由于空间不足oracle会自动删除的哦(切记)!
目录
相关文章
|
Oracle 关系型数据库
Oracle 11g中recyclebin参数的微小变化
<div style="font-family:'lucida Grande',Verdana,'Microsoft YaHei'; font-size:14px; line-height:23px"> <div>SQL&gt; show parameter recyclebin</div> <div><br></div> <div>NAME<span style="white-sp
1689 0
|
SQL Oracle 关系型数据库
Oracle recyclebin引起library cache lock事件
目前在客户这里遇到一个问题,生产环境的Oracle数据库批处理突然运行非常缓慢,处理过程平均花费时间为平时的2倍以上,所有会话卡在一个insert语句上: insert into cux_loan_transactions sele...
1179 0
|
Oracle 关系型数据库 索引
[Oracle]-[recyclebin][索引]-回收站恢复的索引名称修改
从回收站中恢复表后,索引也会自动恢复,但索引的名称仍是回收站中的26位标识,不会改为原始名字,可以使用alter index修改索引名,但需要注意的是因为标识中带有特殊字符,需要用""括起来。
830 0
|
18天前
|
Oracle 关系型数据库 Linux
【赵渝强老师】Oracle数据库配置助手:DBCA
Oracle数据库配置助手(DBCA)是用于创建和配置Oracle数据库的工具,支持图形界面和静默执行模式。本文介绍了使用DBCA在Linux环境下创建数据库的完整步骤,包括选择数据库操作类型、配置存储与网络选项、设置管理密码等,并提供了界面截图与视频讲解,帮助用户快速掌握数据库创建流程。
200 93
|
3月前
|
存储 Oracle 关系型数据库
服务器数据恢复—光纤存储上oracle数据库数据恢复案例
一台光纤服务器存储上有16块FC硬盘,上层部署了Oracle数据库。服务器存储前面板2个硬盘指示灯显示异常,存储映射到linux操作系统上的卷挂载不上,业务中断。 通过storage manager查看存储状态,发现逻辑卷状态失败。再查看物理磁盘状态,发现其中一块盘报告“警告”,硬盘指示灯显示异常的2块盘报告“失败”。 将当前存储的完整日志状态备份下来,解析备份出来的存储日志并获得了关于逻辑卷结构的部分信息。
|
1月前
|
SQL Oracle 关系型数据库
Oracle数据库创建表空间和索引的SQL语法示例
以上SQL语法提供了一种标准方式去组织Oracle数据库内部结构,并且通过合理使用可以显著改善查询速度及整体性能。需要注意,在实际应用过程当中应该根据具体业务需求、系统资源状况以及预期目标去合理规划并调整参数设置以达到最佳效果。
98 8
|
3月前
|
SQL Oracle 关系型数据库
比较MySQL和Oracle数据库系统,特别是在进行分页查询的方法上的不同
两者的性能差异将取决于数据量大小、索引优化、查询设计以及具体版本的数据库服务器。考虑硬件资源、数据库设计和具体需求对于实现优化的分页查询至关重要。开发者和数据库管理员需要根据自身使用的具体数据库系统版本和环境,选择最合适的分页机制,并进行必要的性能调优来满足应用需求。
129 11
|
3月前
|
Oracle 关系型数据库 数据库
数据库数据恢复—服务器异常断电导致Oracle数据库报错的数据恢复案例
Oracle数据库故障: 某公司一台服务器上部署Oracle数据库。服务器意外断电导致数据库报错,报错内容为“system01.dbf需要更多的恢复来保持一致性”。该Oracle数据库没有备份,仅有一些断断续续的归档日志。 Oracle数据库恢复流程: 1、检测数据库故障情况; 2、尝试挂起并修复数据库; 3、解析数据库文件; 4、导出并验证恢复的数据库文件。
|
3月前
|
存储 Oracle 关系型数据库
【赵渝强老师】Oracle RMAN的目录数据库
Oracle RMAN默认将备份元信息存储在控制文件中,但控制文件损坏或丢失会导致恢复失败,且备份增多会使控制文件无限增长。为解决这些问题,Oracle引入了RMAN目录数据库(Catalog Database),专门用于存储RMAN备份的元信息。使用目录数据库可提升备份管理效率,支持多数据库共享、长期备份历史记录存储,并可保存RMAN脚本。本文详细介绍了如何创建目录数据库、注册目标数据库及其操作步骤。

推荐镜像

更多