1. 程式人生 > >Oracle表空間為"本地管理"與"資料字典"管理區別?

Oracle表空間為"本地管理"與"資料字典"管理區別?

在Oracle8I的版本中,Oracle推出了一種全新的表空間管理方式:本地化管理的表空間。

    所謂本地化管理,就是指Oracle不再利用資料字典表來記錄Oracle表空間裡面的區的使用狀況,而是在每個表空間的資料檔案的頭部加入了一個位圖區,在其中記錄每個區的使用狀況。每當一個區被使用,或者被釋放以供重新使用時,Oracle都會更新資料檔案頭部的這個記錄,反映這個變化。
 

    本地化管理的表空間的建立過程:
  語法:CREATE TABLESPACE 表空間名字
          DATAFILE '資料檔案詳細資訊'
          [EXTENT MANAGEMENT { LOCAL
          {AUTOALLOCATE | UNIFORM [SIZE INTETER [K|M] ] } } ]
    關鍵字EXTENT MANAGEMENT LOCAL 指定這是一個本地化管理的表空間。對於系統表空間,只能在建立資料庫的時候指定EXTENT MANGEMENT LOCAL,因為它是資料庫建立時建立的第一個表空間。
    在8i中,字典管理還是預設的管理方式,當選擇了LOCAL關鍵字,即表明這是一個本地管理的表空間。當然還可以繼續選擇更細的管理方式:是AUTOALLOCATE 還是 UNIFORM.。若為AUTOALLOCATE,則表明讓Oracle來決定區塊的使用辦法;若選擇了UNIFORM,則還可以詳細指定每個區塊的大小,若不加指定,則為每個區使用1M大小。 


    Oracle之所以推出了這種新的表空間管理方法,對比下表空間組織方法的優點:
     1. 本地化管理的表空間避免了遞迴的空間管理操作。而這種情況在資料字典管理的表空間是經常出現的,當表空間裡的區的使用狀況發生改變時,資料字典的表的資訊發生改變,從而同時也使用了在系統表空間裡的回滾段。
     2. 本地化管理的表空間避免了在資料字典相應表裡面寫入空閒空間、已使用空間的資訊,從而減少了資料字典表的競爭,提高了空間管理的併發性
     3. 區的本地化管理自動跟蹤表空間裡的空閒塊,減少了手工合併自由空間的需要。
     4. 表空間裡的區的大小可以選擇由Oracle系統來決定,或者由資料庫管理員指定一個統一的大小,避免了字典表空間一直頭疼的碎片問題。
     5. 從由資料字典來管理空閒塊改為由資料檔案的頭部記錄來管理空閒塊,這樣避免產生回滾資訊,不再使用系統表空間裡的回滾段。因為由資料字典來管理的話,它會把相關資訊記在資料字典的表裡,從而產生回滾資訊。
 

    由於這種表空間的以上特性,所以它支援在一個表空間裡邊進行更多的併發操作,並減少了對資料字典的依賴。