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 OCP(47):表空間的建立Oracle
- 聊聊Oracle表空間Offline的三種引數(上)Oracle
- 聊聊Oracle表空間Offline的三種引數(中)Oracle
- 聊聊Oracle表空間Offline的三種引數(下)Oracle
- 16、表空間 建立表空間
- Oracle建立表空間和使用者Oracle
- oracle 建立表空間和使用者Oracle
- oracle建立臨時表空間和資料表空間以及刪除Oracle
- oracle 表空間Oracle
- Oracle表空間Oracle
- Oracle 19C 建立使用者&表空間Oracle
- Oracle 建立表空間和使用者指令碼Oracle指令碼
- oracle temp 表空間Oracle
- 增加oracle表空間Oracle
- oracle 表移動表空間Oracle
- Oracle表移動表空間Oracle
- oracle建立使用者,表空間,臨時表空間,分配許可權步驟詳解Oracle
- oracle表空間的整理Oracle
- Oracle 批量建表空間Oracle
- Oracle清理SYSAUX表空間OracleUX
- Oracle 表空間增加檔案Oracle
- Oracle OCP(49):表空間管理Oracle
- Oracle RMAN 表空間恢復Oracle
- Oracle Temp 表空間切換Oracle
- Oracle表空間收縮方案Oracle
- Oracle新建使用者、表空間、表Oracle
- oracle匯出使用者、表空間和角色的建立語句Oracle
- db2 建立bufferpool,表空間DB2
- oracle臨時表空間相關Oracle
- 【Oracle 恢復表空間】 實驗Oracle
- 【TABLESPACE】Oracle表空間最佳實踐Oracle
- oracle sql 表空間利用率OracleSQL
- Oracle的表空間quota詳解Oracle
- Oracle Table建立引數說明Oracle
- DB2建立資料庫,建立表空間DB2資料庫
- 2.5.6 建立預設的永久表空間
- 2.5.7 建立預設臨時表空間
- Oracle中新建表空間、使用者Oracle
- Oracle中表空間、表、索引的遷移Oracle索引