Oracle表空間建立引數解析
表空間Tablespace是Oracle資料庫邏輯結構中的一個層次。建立管理表空間和對應的資料檔案,是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子句:檔案大小上限;
2、extent分割槽分配方案
表空間Tablespace內部容納的邏輯結構就是段segment物件。段物件通常是和資料庫各個Schema中的物件相關聯。表空間空間管理中一個重要方面就是將新的extent分配給segment物件。一個segment會對應一個或者多個extent物件。extent區就是連續的block塊集合。
從Oracle發展歷程看,extent分配方案有兩個階段。首先出現的是Dictionary Mangage Tablespace,就是資料字典管理方式。資料庫中維護一個資料表,每次進行extent分配管理的時候,都要訪問該資料表。DMT代表了一個時代,同時也伴隨著致命的缺陷。
資料庫的一個重要指標就是並行度。一旦出現並行瓶頸,就意味著系統架構存在缺陷。DML就是這樣的一個問題,當資料庫表空間存在大量的分配請求時,該資料表容易形成瓶頸。於是,DML就被一種新的分配方法Locally Mangage Tablespace(LMT)所取代。
目前的Oracle資料庫,都是預設使用LMT方法的。LMT簡單來說,就是利用點陣圖表技術,將分配extent的方法和記錄記錄在資料檔案的檔案頭上。這樣,不同檔案的分配壓力,就從一個資料表上分散到多個檔案上。
目前的Oracle資料庫,是可以同時支援LMT和DMT的。但是,新系統一般都會使用LMT。LMT策略下,有存在分配extent大小的問題。
每次進行extent分配的策略,有系統自動和統一大小uniform. size兩種方法。
ü automatic allocation自動分配大小。對每個分配extent的大小,由系統自動進行大小判定。這種方式的優點是每次的extent大小比較靈活。但是缺點也是很嚴重,就是引起大量的儲存碎片。
ü uniform. size統一大小。每次分配的extent的大小都是固定的,這樣可以很大程度的避免碎片問題。預設uniform. size大小是1M。
3、段segment管理策略
最後介紹表空間建立引數中的segment管理策略。segment對應的通常是一個資料庫留存物件資訊,如資料段、索引段、回滾段。Segment space management對應的是對segment空間管理的策略,目前有auto和manual兩種方式。
ü ASSM(auto)方式:ASSM是代表新趨勢的技術,10g中對應的shrink space功能,就是以ASSM技術作為基礎,有效減低HWM,避免出現過多的空間浪費。在過去需要設計的pctfree、pctlist等引數,也使用自動化方式進行管理;
ü 手工(Manual)方式:與自動ASSM相對應。與ASSM不同在於每個segment物件都能擁有獨立的儲存設定引數;
在segment管理策略上,目前一般都選擇ASSM策略。但並不意味著ASSM是萬能的,還存在一些侷限。
4、結論
表空間建立引數涉及多種方案子句,帶有不同的含義和特點。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26224914/viewspace-1179073/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 表空間 建立引數 說明Oracle
- oracle建立表空間Oracle
- Oracle OCP(47):表空間的建立Oracle
- Linux下建立Oracle表空間LinuxOracle
- oracle 建立表空間完整版Oracle
- oracle建立臨時表空間和資料表空間以及刪除Oracle
- Oracle建立表空間和使用者Oracle
- oracle 建立表空間和使用者Oracle
- ORACLE表空間的建立修改刪除Oracle
- 聊聊Oracle表空間Offline的三種引數(上)Oracle
- 聊聊Oracle表空間Offline的三種引數(中)Oracle
- 聊聊Oracle表空間Offline的三種引數(下)Oracle
- 建立加密表空間加密
- 詳解Oracle建立表的引數Oracle
- Oracle建立表空間、建立使用者以及授權Oracle
- PLSQL來Oracle建立表空間和建立使用者SQLOracle
- Oracle RAC建立表空間和使用者Oracle
- oracle RAC 建立使用者和表空間Oracle
- Oracle表空間Oracle
- Oracle引數檔案解析——引數解析Oracle
- Oracle 建立表空間和使用者指令碼Oracle指令碼
- Oracle create tablespace 建立表空間語法詳解Oracle
- oracle temp 表空間Oracle
- 增加oracle表空間Oracle
- oracle undo 表空間Oracle
- oracle users 表空間Oracle
- Oracle表空間管理Oracle
- Oracle 表空間管理Oracle
- oracle表空間操作Oracle
- ORACLE MOVE表空間Oracle
- ORACLE表空間概述Oracle
- Oracle表空間命令Oracle
- Oracle 表空間回收Oracle
- oracle建立使用者,表空間,臨時表空間,分配許可權步驟詳解Oracle
- Oracle生產環境建立大的表空間模板Oracle
- linux下使用裸裝置建立oracle表空間LinuxOracle
- 【儲存管理】建立臨時表空間組、建立臨時表空間組及使用
- Oracle表移動表空間Oracle