Oracle 表空間的管理

wolfreturn發表於2015-04-03
表空間是ORACLE資料庫最高層次的邏輯儲存結構,儲存段、區、塊,由一個或多個資料檔案組成。
塊的儲存管理
塊是ORACLE儲存結構的最小單位。塊大小分為標準資料塊和非標準資料塊
標準資料塊由DB_BLOCK_SIZE設定,建立資料庫時設定的,建立完資料庫後不能修改。
非標準塊可以有4種,由初始化引數DB_nk_CACHE_SIZE設定,可在資料庫建立後使用。
資料塊的管理方法分為:
1
、自動管理方式  如建立表空間時設定為本地管理方式,並且將段的儲存空間方式設定為AUTO,該表空間的所有塊均採用自動管理方式。系統預設值。
2
、手工管理方式  是傳統的管理方式,主要透過PCTFREEPCTUSED兩個儲存引數控制可用儲存區的大小,避免行遷移現象的發生。這兩個引數可在建立表空間時設定,也可在資料庫的模式物件(表,索引)中設定。模式物件中設定的優先順序比表空間的要高。如表和索引中沒有設定,則按表空間的設定,如表空間也沒設定,則按自動管理方式管理塊。
區的儲存管理
區是ORACLE進行儲存空間分配的最小單位。是由一系列物理上連續的資料塊組成的邏輯儲存結構。段中第一個區叫初始區,隨後分配的區叫後續區。當段中所有的空間使用完後,ORACLE自動為該段分配一個新的區。
根據表空間的管理方法不同,區的分配方法也不同。
1)本地管理方式下的區的分配方法。
自動分配和統一分配
自動分配由ORACLE自動確定段中初始區大小,預設值為64K,並根據儲存要求自動分配最佳化大小的後續區。
統一分配由ORACLE自動分配具有統一大小的初始區和後續區。

CREATE TABLESPACE lmtbsb

DATAFILE '/u02/oracle/data/lmtbsb01.dbf' SIZE 50M

EXTENT MANAGEMENT LOCAL AUTOALLOCATE;

 

CREATE TABLESPACE lmtbsb DATAFILE '/u02/oracle/data/lmtbsb01.dbf' SIZE 50M

EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K;

2)字典管理方式下的區的分配方法。
根據儲存子句STORAGE中的儲存引數分配新的區。
storage (
initial  integer [K|M]
next  integer [K|M]
minextents integer
maxextents  {integer | unlimited}
pctincrease integer
)
如果使用了DEFAULT STORAGE子句,至少需要在其中設定一個儲存引數。
INITIAL
。缺少5個資料塊的大小。如該值不是資料塊大小的整數倍,系統自動確定舍入到資料塊大小的整數倍。
PCTINCREASE
。缺少為50。回滾段不能指定此引數,其值總是0
儲存子句可以在3處設定:
一是ORACLE預設值
二是建立表空間時為表空間設定的儲存引數
三是建立模式物件(如表、索引)時為該模式物件設定的儲存引數。
這三個地方都可能對區的分配產生影響,有優先順序
建立模式物件中的儲存子句最高,表空間次之,ORACLE預設值最低。
也就是說建立模式物件時沒有指定儲存引數,按表空間的儲存子句進行,如表空間沒有指定,按ORACLE預設值來。
區分配管理在建立表空間時確定,建完後,不允許更改
extent management
{dictionary |
local autoallocate | uniform [size integer K|M] }
autoallocate  
本地管理方式下的區自動分配
uniform     
本地管理方式下的區統一分配
段的儲存管理
一個段只屬於一個模式物件,如表、索引
建立一個模式物件時,ORACLE為這個物件建立一個段,在這個段中儲存這個物件的所有資料,當這個段資料增加時,為這個段分配新的區儲存資料。段中至少有一個初始區。
段有以下型別:
資料段   用來儲存表和簇的資料
索引段
臨時段   暫存SQL語句的臨時資料,以及臨時表和臨時表的索引等。
回退段
段管理主要有兩種方式:
自動管理方式。 採用點陣圖管理段的儲存空間
手工管理方式。 採用FREELIST管理段的儲存空間
段的管理方式只有在建立表空間時設定,完成後不好更改
ORACLE9I中,預設狀態為自動管理方式
segment space management { man l | auto}
表空間
表空間的管理方式主要有兩種:
字典管理  在資料字典中管理表空間的空間分配
本地管理  在每個資料檔案中使用點陣圖來管理空間的分配,表空間中所有區的分配資訊都儲存在該表空間對應的資料檔案的頭部。
oracle 8i
以前只有字典管理,之後引入本地管理
本地管理的表空間的優點:
速度快,儲存空間的分配和回收只是簡單地改變資料檔案中的點陣圖,而不像字典管理方式還需要修改資料庫。
改善了儲存管理的效能。某些在字典管理方式下的儲存分配有時會產生遞迴操作,從而影響了系統的效能,使用本地管理方式不會產生遞迴操作。
無碎片。
更易於DBA維護。
段的管理方式是在建立表空間時確定的,一經確定不能改變。
區的管理方式與表空間的管理方式密切相關:
字典方式下:ORACLE根據儲存子句分配區,這些引數可以在建立表空間後修改。引數設定不恰當,表空間中會有空閒區碎片,需要DBA手工執行碎片合併,降低效能,增加DBA工作。
本地方式下:由ORACLE自動分配區,這種方式一旦確定不能修改。ORACLE9I 建議採用方式。
表空間的型別
System Tablespace
系統表空間:主要包括資料字典、所有PL/SQL程式單元以及所有模式物件的定義。
Temp Tablespace  
臨時表空間:用於暫存一些複雜SQL查詢語句執行時產生的臨時資料。在執行SQL語句中,如臨時資料量大,SQL工作區放不下,將利用臨時表空間暫存部分臨時資料。
Undo Tablespace  
:由ORACLE自動分配管理,每一個例項只能使用一個UNDO表空間
User Tablespace  
使用者表空間:用來儲存使用者資料
表空間的管理原則:
1
、建立多個表空間
?       
將資料字典與使用者資料分別存放在不同的表空間中,避免同時訪問一個表空間產生訪問衝突
?       
將不同應用的資料存放在不同的表空間,保證各類應用資料的獨立性。避免由於一個表空間離線,導致多個應用程式受到影響。
?       
將不同表空間放在不同的硬碟上,均衡磁碟I/0操作。
?       
UNDO資料與使用者資料分別儲存,防止由於硬碟損壞導致資料永久丟失。
?       
當一些表空間聯機時,可以將另外的表空間設為離線,提高資料庫效能。
?       
為某種特殊用途專門設定一個表空間,比如頻繁的更新操作,或者臨時段的儲存。專門設定的表空間可以最佳化表空間的使用效率。
由於某些作業系統對一個程式可以同時開啟的系統檔案資料具有限制,從而影響同時聯機的表空間數量,儘量讓表空間使用較少的資料檔案。因此在建立表空間時,應當為表空間分配足夠大的資料檔案,或將資料檔案設定為自動增長方式,而不要讓一個表空間使用很多較小的資料檔案。
2
、設定表空間的預設儲存引數
建立字典管理方式的表空間時,可以設定表空間的預設儲存引數
3
、為使用者設定表空間限額
建立表空間:
CREATE [UNDO] TABLESPACE tablespace
[DATAFILE clause]
[MINIMUM EXTENT integer[K|M]]
[BLOCKSIZE integer [K]]
[LOGGING|NOLOGGING]
[DEFAULT storage_clause ]
[ONLINE|OFFLINE]
[PERMANENT|TEMPORARY]
[extent_management_clause]
[segment_management_clause]
在表空間建立過程中,ORACLE將在資料字典和控制檔案中記錄下新建了一個表空間,同時建立指定大小的資料檔案。
所有表空間的資料檔案總和不能超過初始化引數MAXDATAFILES的限制。
表空間建立好之後,可以使用:
alter tablespace
alter database   
來修改表空間
預設情況下,建立的表空間具有標準塊大小,由初始化引數DB_BLOCK_SIZE指定
建立非標準塊大小的表空間,須在DB_nk_CACHE_SIZE中設定非標準塊的大小,系統才在SGA區中建立具有相同大小的快取區,否則該表空間將無法使用。
本地管理表空間中指定區的分配管理方式。
AUTOALLOCATE
UNIFORM 兩種
預設是AUTOALLOCATE,常用於需要存放大小經常變化的物件和使用不同大小區的表空間,雖然可能造成一些儲存空間的浪費,可減輕DBA工作量。
create tablespace user02
datafile ‘d:/user02.dbf’ size 5M
extent management local autoallocate;
UNIFORM
方式常用於存放的大部分物件都要求使用相同大小區的表空間。不會產生任何儲存碎片,可以避免儲存空間的浪費。
create tablespace user02
datafile ‘d:/user02.dbf’ size 5M
extent management local uniform size 128k;
如沒有指定SIZE引數的值,將使用1M作為預設值。
本地管理的表空間分配的資料檔案,其頭部的部分空間用於空間管理,用UNIFORM方式建立本地管理表空間,為表空間分配的資料檔案大小應該大於UNIFORM之後的SIZE指定的區的大小。
本地管理表空間中指定段的儲存管理方式。
MAN L
AUTO兩種
MAN L
方式使用FREELIST來管理段中間的空閒資料塊,預設方式
create tablespace user02
datafile ‘d:/user02.dbf’ size 5M
extent management local
segment space management man l;
AUTO
方式使用點陣圖來管理段中已用資料塊和空閒資料塊。
create tablespace user02
datafile ‘d:/user02.dbf’ size 5M
extent management local
segment space management auto;
應用於以後所有在該表空間中建立的段,並且段儲存管理方式不能改變。
建立字典管理的表空間
透過儲存子句(storage)設定儲存引數對區進行儲存管理,其特點是儲存管理具有很強的靈活性,但是儲存空間空間會產生碎片,需要手工回收合併。
段的管理方式與本地管理的表空間一樣,既可以採用MAN L,也可以採用AUTO方式。
create tablespace user06
datafile 'd:/user06.dbf' size 5M
extent management dictionary
defa


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

相關文章