Oracle資料庫中的段管理方式詳細介紹 (3)

聽海★藍心夢發表於2009-06-19

聯機 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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章