Oracle表空間建立引數解析

flywiththewind發表於2014-06-09

 

 

表空間TablespaceOracle資料庫邏輯結構中的一個層次。建立管理表空間和對應的資料檔案,是DBA的一項重要工作內容。本篇從不同的表空間特性談起,說明使用的引數特性。

 

下面是一個使用命令列建立表空間的例項。

 

 

SQL> create tablespace tradway datafile '/u01/oradata/WILSON/datafile/trad.dbf' size 100m autoextend off extent management local uniform. size 1m segment space management manual;

 

Tablespace created

 

 

對應資料字典的資訊為:

 

 

SQL> select tablespace_name, extent_management, allocation_type,SEGMENT_SPACE_MANAGEMENT from dba_tablespaces;

 

TABLESPACE_NAME                EXTENT_MANAGEMENT ALLOCATION_TYPE SEGMENT_SPACE_MANAGEMENT

------------------------------ ----------------- --------------- ------------------------

(篇幅原因,有省略……

TRADWAY                        LOCAL             UNIFORM   MANUAL

 

9 rows selected

 

 

在使用命令列建立表空間Tablespace的過程中,包括幾個方面的引數。

 

ü        資料檔案引數:包括表空間對應資料檔名稱,初始大小和可變化規則;

ü        Extent(分割槽)分配規則方案:表空間對segment物件進行增加空間分配的時候,使用的分配方法和策略;

ü        Segment(段)物件管理方式:分為自動段物件管理或者手動段物件管理;

 

下面分別進行介紹:

 

1、資料檔案Datafile引數

 

表空間是“表、段、區、塊”Oracle四層邏輯結構中唯一與特定物理檔案對應的層次。一個表空間可以對應不同硬碟上的多個檔案,而一個檔案只能屬於一個表空間

 

在建立表空間的時候,都會生成至少一個資料檔案作為表空間資訊儲存的地方。如果在Create tablespace時沒有進行指定datafile字句,那麼Oracle會自動依據OMF的方式建立出一個資料檔案。

 

指定資料檔案的字句是使用datafile作為關鍵字,後面內容包括檔案路徑、初始大小、擴充方式和每次增加空間大小。

 

 

SQL> create tablespace test datafile 'd:\oradata\orcl\test.dbf' size 10m autoextend on next 1m maxsize 100m;

 

Tablespace created

 

ü        size子句:指定生成資料檔案的初始大小,預設值通常為100m。對成熟的系統部署移植工作而言,通常是可以確定檔案的固定大小。避免經常性的檔案膨脹,引起效能變化;

ü        autoextend開關與next子句:檔案大小變化開關是透過autoextend來實現的。如果設定on,表示該檔案允許進行動態擴充,檔案寫滿之後就會以next指定的大小進行擴充。如果設定為off,則該檔案不進行擴充;

ü        next子句:當檔案設定為可擴充時,next為每次進行擴充的步長。如果資料檔案是經常大批次的增加,設定一個較大的next值為好;

ü        maxsize子句:檔案大小上限;

 

 

2extent分割槽分配方案

 

表空間Tablespace內部容納的邏輯結構就是段segment物件。段物件通常是和資料庫各個Schema中的物件相關聯。表空間空間管理中一個重要方面就是將新的extent分配給segment物件。一個segment會對應一個或者多個extent物件。extent區就是連續的block塊集合。

 

Oracle發展歷程看,extent分配方案有兩個階段。首先出現的是Dictionary Mangage Tablespace,就是資料字典管理方式。資料庫中維護一個資料表,每次進行extent分配管理的時候,都要訪問該資料表。DMT代表了一個時代,同時也伴隨著致命的缺陷。

 

資料庫的一個重要指標就是並行度。一旦出現並行瓶頸,就意味著系統架構存在缺陷。DML就是這樣的一個問題,當資料庫表空間存在大量的分配請求時,該資料表容易形成瓶頸。於是,DML就被一種新的分配方法Locally Mangage TablespaceLMT)所取代。

 

 

目前的Oracle資料庫,都是預設使用LMT方法的。LMT簡單來說,就是利用點陣圖表技術,將分配extent的方法和記錄記錄在資料檔案的檔案頭上。這樣,不同檔案的分配壓力,就從一個資料表上分散到多個檔案上。

 

目前的Oracle資料庫,是可以同時支援LMTDMT的。但是,新系統一般都會使用LMTLMT策略下,有存在分配extent大小的問題。

 

每次進行extent分配的策略,有系統自動和統一大小uniform. size兩種方法。

 

ü        automatic allocation自動分配大小。對每個分配extent的大小,由系統自動進行大小判定。這種方式的優點是每次的extent大小比較靈活。但是缺點也是很嚴重,就是引起大量的儲存碎片。

ü        uniform. size統一大小。每次分配的extent的大小都是固定的,這樣可以很大程度的避免碎片問題。預設uniform. size大小是1M

 

 

3、段segment管理策略

 

最後介紹表空間建立引數中的segment管理策略。segment對應的通常是一個資料庫留存物件資訊,如資料段、索引段、回滾段。Segment space management對應的是對segment空間管理的策略,目前有automanual兩種方式。

 

ü        ASSMauto)方式:ASSM是代表新趨勢的技術,10g中對應的shrink space功能,就是以ASSM技術作為基礎,有效減低HWM,避免出現過多的空間浪費。在過去需要設計的pctfreepctlist等引數,也使用自動化方式進行管理;

ü        手工(Manual)方式:與自動ASSM相對應。與ASSM不同在於每個segment物件都能擁有獨立的儲存設定引數;

 

 

segment管理策略上,目前一般都選擇ASSM策略。但並不意味著ASSM是萬能的,還存在一些侷限。

 

 

4、結論

 

表空間建立引數涉及多種方案子句,帶有不同的含義和特點。

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26224914/viewspace-1179073/,如需轉載,請註明出處,否則將追究法律責任。

相關文章