oracle10g系統(tǒng)管理之存儲參數(shù)
2024-08-29 13:53:52
供稿:網(wǎng)友
1. INITIAL
對于字典管理表空間來說,INITIAL用于指定段所分配的第一個區(qū)的尺寸。對于本地管理表空間來說,如果MINEXTENTS等于1,數(shù)據(jù)庫會使用INITIAL和區(qū)尺寸確定段的初始尺寸。假定本地管理表空間的區(qū)尺寸為5M,如果INITIAl為1M,那么會分配一個5M的區(qū)。如果INITIAL為7M,則分配兩個5M的區(qū)。INITIAL只能在建立對象時設(shè)置,不能使用ALTER語句進(jìn)行修改。
CREATE TABLE t1(cola INT) TABLESPACE user01
STORAGE(INITIAL 500k);
說明:使用user01表空間,假定user01創(chuàng)建時使用UNIFORM選項,并且區(qū)尺寸為128K.則t1表的段初始尺寸為500K。
2. NEXT
對于本地管理表空間來說,因為數(shù)據(jù)庫可以自動管理區(qū),所以該參數(shù)沒有太大意義。對于字典管理表空間來說,NEXT用于指定為段所分配的第二個區(qū)的尺寸。
3. PCTINCREASE
對于本地管理表空間來說,因為數(shù)據(jù)庫可以自動管理區(qū),所以該參數(shù)沒有太大意義。對于字典管理表空間來說,該參數(shù)可以指定從第三個區(qū)開始,每個區(qū)比前一個區(qū)所增長的百分比。
4. MINEXTENTS
對于本地管理表空間來說,因為數(shù)據(jù)庫可以自動管理區(qū),所以該參數(shù)沒有太大意義。對于字典管理表空間來說,MINEXTENTS用于指定為段所分配的初始區(qū)個數(shù)。
5. MAXEXTENTS
對于本地管理表空間來說,因為數(shù)據(jù)庫可以自動管理區(qū),所以該參數(shù)沒有太大意義。對于字典管理表空間來說,MINEXTENTS用于指定段可包含的最大區(qū)個數(shù)。
6. FREELIST GROUPS
FREELIST GROUPS用于指定對象的空閑列表組個數(shù),每個空閑列表組會占用一個數(shù)據(jù)塊。Oracle建議為Oracle Real application Cluster的每個例程指定一個空閑列表組。需要注意,F(xiàn)REELIST GROUPS只能在段級指定。
7. FREELISTS
FREELISTS用于指定每個空閑列表組上的空閑列表個數(shù),空閑列表用于維護(hù)可插入數(shù)據(jù)的數(shù)據(jù)塊。需要注意,F(xiàn)REELISTS只能在段級指定。
8. 假定建立字典管理表空間user02時,指定默認(rèn)存儲參數(shù)INITIAL和NEXT均為10K,PCTINCREASE為50.下面以建立表t2為例,說明在字典管理表空間上這些存儲參數(shù)的作用。
CREATE TABLE t2(cola int) TABLESPACE user02
STORAGE(NEXT 20K MINEXTENTS 4);
執(zhí)行以上語句后,Oracle會建立表T1,并且為其分配尺寸為110K的表段t2。因為MINEXTENTS為4,所以段T1包含四個區(qū);因為建表時未指定INITIAL,所以第一個區(qū)會使用表空間的默認(rèn)存儲參數(shù):10K。第二個區(qū)區(qū)20K,第三區(qū):30K,第四區(qū):50K。
9. 顯示已分配區(qū)
建立數(shù)據(jù)對象時,Oracle會為數(shù)據(jù)對象分配相應(yīng)的段。段是由一個或多個區(qū)組成的,并且一個區(qū)只能存放在一個數(shù)據(jù)文件上,而同一個段的不同區(qū)可以放在不同數(shù)據(jù)文件上。通過查詢數(shù)據(jù)字典視圖dba_extents,可以取得已分配區(qū)的詳細(xì)信息。
SELECT extent_id,file_id,block_id,bytes
FROM dba_extents
WHERE owner=’SYS’ AND segment_name=’T1’;
10. 顯示空閑區(qū)
當(dāng)在表空間上建立數(shù)據(jù)對象時,Oracle會在表空間的剩余空間中位相應(yīng)段分配空間。當(dāng)段不足以容納更多數(shù)據(jù)時,Oracle會通過分配去來擴展段。隨著時間的推移,將導(dǎo)致表空間的剩余空間越來越少。
SELECT sum(bytes)FROM dba_free_space
WHERE tablespace_name=’USER01’;