当前位置:  数据库>oracle

Oracle回收站概述

    来源: 互联网  发布时间:2017-06-25

    本文导语: 在做展示Oracle表空间功能剩余空间的功能,发现查询表dba_free_space时特别慢,经网上搜索,说是由于表空间碎片和回收站(Oracle 10g以后才有)引起的。 今天在SOA应用数据库上运用DBMS_REDEFITION包进行在线非分区表转换分区表操作...

在做展示Oracle表空间功能剩余空间的功能,发现查询表dba_free_space时特别慢,经网上搜索,说是由于表空间碎片和回收站(Oracle 10g以后才有)引起的。

今天在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 to 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会自动删除的哦(切记)!


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 回收Oracle的监听器日志文件
  • Oracle回滚段空间回收步骤
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍
  • SCO unix下安装oracle,但没有光盘,请大家推荐一个oracle下载站点(unix版本的)。谢谢!!!!
  • oracle中如何把表中具有相同值列的多行数据合并成一行
  • 请问大家用oracle数据库, 用import oracle.*;下的东西么? 还是用标准库?
  • Oracle 数据库(oracle Database)性能调优技术详解
  • Linux /$ORACLE_HOME $ORACLE_HOME
  • ORACLE日期相关操作
  • Linux系统下Oracle的启动与Oracle监听的启动
  • ORACLE数据库常用字段数据类型介绍
  • 请问在solaris下安装ORACLE,用root用户和用oracle用户安装有什么区别么?
  • Oracle 12c的九大最新技术特性介绍
  • 网间Oracle的连接,远程连接Oracle服务器??


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3