选择显示字体大小

oracle 10g 中的回收站

oracle 10g中,引入了一个回收站(recycle bin)的概念.
  
  回收站,从原理上来说就是一个数据字典表,放置用户drop掉的数据库对象信息.用户进行drop操作的对象并没有被数据库删除,仍然会占用空间.除非是由于用户手工进行purge或者因为存储空间不够而被数据库清掉.数据库有了这样的功能,能够减少很多不必要的麻烦.常常看到开发人员误把表删除,急急忙忙找dba来想办法的情况,相信,随着10g的大范围应用,这种情形应该比较少见了.
  
  dba管理上的相关信息可以从user_recyclebin(dba_recyclebin)中获取.从现在的beta版本来看,手册上所说的通过sql*plus的show recycle bin 命令查看还不可用.
  
  为了便于测试,我们创建了一个表空间foo,大小为1m,创建了一个用户foo,默认的表空间为foo.

  ------------------------------------
  sql> connect foo/foo
  已连接。

  sql> select table_name from user_tables;

  未选定行

  sql> desc user_recyclebin
  名称 是否为空? 类型
  --------------------------------------
    ......
    ...... 
  user_recyclebin大多是自解释的,涵义比较容易理解.

  sql> select object_name from user_recyclebin;

  未选定行

  sql> create table foo as select * from dual;
  
  表已创建。

  sql> select table_name from user_tables;

  table_name
  ------------------------------
  foo

  sql> drop table foo;






  表已丢弃。

  sql> select table_name from user_tables;

  table_name
  ------------------------------
  rb$$41888$table$0

  sql>

  sql> select object_name, original_name from user_recyclebin;

  object_name original_name
  -------------------- --------------------
  rb$$41888$table$0 foo

  sql> desc rb$$41888$table$0
  名称 是否为空? 类型
  ----------------------------------------

  dummy varchar2(1)

  当一个表被删除并移动到"回收站"中,它的名字要进行一些转换.这样的目的显而易见是为了避免同类对象名称的重复.(windows上,经过了特殊的处理,回收站里的操作系统文件可以重名.)

  转换后的名字格式如下:

  rb$$objn$object_type$version

  其中的rb,代表recycle bin. objn为表的目录对象号. object_type表示对象类型. version表示版本号.

  由数据库指定。foo表被删除后,在数据库回收站里变成了rb$$41888$table$0 。从名字可以看出,这个对象的类型是table,version是0.

  sql> create table foo as select * from dual;

  表已创建。

  sql> select table_name from user_tables;

  table_name
  ------------------------------
  foo
  rb$$41888$table$0


  sql> drop table foo;
  
  表已丢弃。

  sql> select object_name, original_name from user_recyclebin;

  object_name original_name
  -------------------- -------------
  rb$$41889$table$0 foo
  rb$$41888$table$0 foo

  sql>

  能看出来,虽然源表名字相同,在回收站里的对象名字是不同的。

  已经放到回收站里的表是不能用drop 命令删除的:
  
  sql> drop table rb$$41888$table$0;
  drop table rb$$41888$table$0
  *
  error 位于第 1 行:
  ora-38301: can not perform ddl/dml over objects in recycle bin

  如果要清掉改对象,使用purge命令:


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons