Oracle数据库中的段管理方式详细介绍 (3)

联机 shrink 命令是一个用于回收浪费的空间和重置 HWM 的强大的特性。我把后者(重置 HWM)看作该命令最有用的结果,因为它改进了全表扫描的性能。

找到收缩合适选择

在执行联机收缩前,用户可能想通过确定能够进行最完全压缩的段,以找出最大的回报。只需简单地使用 dbms_space 包中的内置函数 verify_shrink_candidate。如果段可以收缩到 1,300,000 字节,则可以使用下面的 PL/SQL 代码进行测试:

  begin
  if (dbms_space.verify_shrink_candidate
  ('ARUP','BOOKINGS','TABLE',1300000)
  then
  :x := 'T';
  else
  :x := 'F';
  end if;
  end;
  /
  

PL/SQL 过程成功完成。

  
  SQL> print x
  
  X
  --------------------------------
  T
  如果目标收缩使用了一个较小的数,如 3,000:
  begin
  if (dbms_space.verify_shrink_candidate
  ('ARUP','BOOKINGS','TABLE',30000)
  then
  :x := 'T';
  else
  :x := 'F';
  end if;
  end;
  

变量 x 的值被设置成 'F',意味着表无法收缩到 3,000 字节。现在假定您将着手在一个表上,或者也许是一组表上创建一个索引的任务。除了普通的结构元素,如列和单值性外,您将不得不考虑的最重要的事情是索引的预期大小 — 必须确保表空间有足够的空间来存放新索引。

在 Oracle 数据库 9i 及其以前的版本中,许多 DBA 使用了大量的工具(从电子数据表到独立程序)来估计将来索引的大小。在 10g中,通过使用 DBMS_SPACE 包,使这项任务变得极其微不足道。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/751371/viewspace-606938/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/751371/viewspace-606938/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值