昨天做的展示oracle表空间功能剩余空间的功能,发现查询表dba_free_space时特别慢,经网上搜索,说是由于表空间碎片和回收站(Oracle 10g以后才有)引起的,后来搜到一片介绍回收站的文章:

原文链接:http://blog.sina.com.cn/s/blog_61cd89f60102ed97.html

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

oracle的回收站介绍的更多相关文章

  1. Oracle优化器介绍

    Oracle优化器介绍 本文讲述了Oracle优化器的概念.工作原理和使用方法,兼顾了Oracle8i.9i以及最新的10g三个版本.理解本文将有助于您更好的更有效的进行SQL优化工作. RBO优化器 ...

  2. oracle常用视图介绍

    oracle常用视图介绍---------------------2013/10/04(last updated) dba_开头:   dba_users     数据库用户信息   dba_segm ...

  3. spool命令、创建一个表,创建而且copy表,查看别的用户下的表,rowid行地址 索引的时候使用,表的增删改查,删除表,oracle的回收站

      1.spool命令 spool "D:\test.txt" spool off SQL> host cls 2.创建一个表 SQL> --条件(1):有创建 ...

  4. Oracle清理回收站的方法

    原文链接:http://blog.itpub.net/18841027/viewspace-1057765/ purge DBA_RECYCLEBIN用于删除Oracle数据库回收站的所有数据,需要s ...

  5. Oracle systemstate dump介绍

    当数据库出现严重的性能问题或者hang起的时候,那么我们非常需要通过systemstate dump来知道进程在做什么,在等待什么,谁是资源的持有者,谁阻塞了别人.在出现上述问题时,及时收集syste ...

  6. oracle 锁的介绍 (转)

    本文转自:http://blog.csdn.net/gyb2013/article/details/6929697 一.什么是锁: Oracle的锁机制是一种轻量级的锁定机制,不是通过构建锁列表来进行 ...

  7. Oracle的回收站和闪回查询机制(二)

    上一篇中讲诉了Oracle中一些闪回查询(Flashback Query),这是利用回滚段信息来恢复一个或一些表到以前的一个时间点(一个快照).要注意的是,Flashback Query仅仅是查询以前 ...

  8. Oracle 学习笔记(一)Oracle的基本介绍与语法

    1.1 Oracle基础知识 1.1.1 介绍 Oracle数据库的主要特点: 支持多用户.大事务量的事务处理 在保持数据安全性和完整性方面性能优越 支持分布式数据处理 具有可移植性 1.1.2 Or ...

  9. oracle数据库相关概念介绍

    数据库相关概念介绍: 问题: 数据存储:变量(基本类型,引用类型) 基本类型:少量数据 引用类型:保证数据的完整性 数据源: 声明直接赋值 IO流从硬盘中读取 java在处理数据时,需要从硬盘中读取数 ...

随机推荐

  1. 选择CRM

    第一:可扩展和定制 选择CRM系统一定要注意系统扩展性,要用发展的眼光去审视公司的CRM需求,所以CRM系统必须具有一定的扩展性,从而满足不断变化的公司需求.而那些看起来功能和强大不能扩展看起来貌似也 ...

  2. mysql习惯及主从复制参数设置

    mysql 重复数据插入 replace into t(id, update_time) values(1, now()); 或 replace into t(id, update_time) sel ...

  3. excel学习

    制作打钩方格 :输入R ,然后选中R,在字体中选中wingdings 2即可 快速选中一列:选中两行以上,然后Ctrl+Shift+下 分段显示手机号:选中单元格,Ctrl+1,然后选中数字,自定义, ...

  4. 转-ArcGIS Engine中的License设置

    AE开发中的License有两种方法进行设置,一种是通过LicenseControl控件,另一种是通过IAoInitialize接口设置.整个应用程序中只能有一种方式存在,如果进行了两种License ...

  5. thinkphp 模型、控制器、视图

    控制器里面调用模型 echo D('Goods')->index(); 调用GoodsModel下index 控制器里面调用其他控制器 echo A('Goods')->index(); ...

  6. CentOS7下搭建邮件服务器(dovecot + postfix + SSL)

    CentOS   花了基本上两天的时间去配置CentOS7下的邮件服务器.其中艰辛太多了,一定得总结下. 本文的目的在于通过一系列配置,在CentOS 7下搭建dovecot + postfix + ...

  7. A:手把手教Wordpress仿站(基础)

    安装源码 需要服务器有php环境(PHP,Mysql,Apeach/Ngnax) 我用的主机宝(环境一键安装工具)   打开后台突然出现这种情况 Briefly unavailable for sch ...

  8. python基础知识

    由于python的灵活性,赋值前无需强调变量的数据类型,并且变量的数据类型在后期的操作过程中还可以改变,故不介绍关键字,直接定义方法及可以调用的方法. I  基本数据类型 一.字符串 1.使用单引号或 ...

  9. Pandas-多表操作

    Pandas包对多个数据表(DataFrame)的常用整合功能. 目录 merge join concat append combin_first merge 合并 pandas.merge可根据一个 ...

  10. win7提示“User Profile Service服务未能登录”

    注:本文由Colin撰写,版权所有!转载请注明原文地址,谢谢合作! 最近,有个同事打电话告诉我说他的用户名无法登陆到系统,提示“User Profile Service服务未能登录,无法加载用户配置文 ...