段的碎片整理
當(dāng)生成一個(gè)數(shù)據(jù)庫(kù)對(duì)象時(shí)(一個(gè)表或一個(gè)索引),通過(guò)用戶缺省值或指定值來(lái)為它指定表空間。一個(gè)在表空間中生成的段,用于存儲(chǔ)對(duì)象的相關(guān)數(shù)據(jù)。在段被關(guān)閉、收縮、截?cái)嘀,段所分配的空間將不被釋放。
一個(gè)段是由范圍組成,而范圍是由相鄰的Oracle塊組成。一旦存在的范圍不能再存儲(chǔ)新的數(shù)據(jù),這個(gè)段就會(huì)去獲得新的范圍,但并不要求這些范圍是彼此相鄰的。這樣的擴(kuò)展會(huì)一直繼續(xù)下去,直到表空間中的數(shù)據(jù)文件不能提供更多的自由空間,或者范圍數(shù)量已達(dá)到極限。
因此,一個(gè)碎片太多的數(shù)據(jù)段,不僅會(huì)影響運(yùn)行,也會(huì)引發(fā)表空間中的空間管理問(wèn)題。所以,每個(gè)數(shù)據(jù)段只含有一個(gè)范圍是十分有益的。借助監(jiān)控系統(tǒng),可以通過(guò)檢查DBA_SEGMENTS數(shù)據(jù)字典視圖來(lái)了解哪些數(shù)據(jù)庫(kù)對(duì)象含有10個(gè)或更多范圍的段,確定其數(shù)據(jù)段碎片。
若一個(gè)段的碎片過(guò)多,可用兩種方法解決:
1. 用正確的存儲(chǔ)參數(shù)建立一個(gè)新表,將舊表中的數(shù)據(jù)插入到新表中,再刪除舊表;
2. 利用Export/Import工具。
如:
exp system/manager file=exp.dmp
compress=Y grants=Y indexes=Y
tables=(T1,T2)
若輸出成功,進(jìn)入Oracle,刪除上述表。
注:compress=Y表示將在輸出過(guò)程中修改它們的存儲(chǔ)參數(shù)。
imp system/manager file=exp.dmp commit=Y buffer=64000 full=Y
注:在輸入時(shí)重新配置新的存儲(chǔ)參數(shù)。
自由范圍的碎片整理
表空間中的一個(gè)自由范圍是表空間中相連的自由(空間)塊的集合。當(dāng)一個(gè)段關(guān)閉時(shí),它的范圍將被釋放,并被標(biāo)記為自由范圍。然而,這些自由范圍再也不能與相鄰的自由范圍合并,它們之間的界線始終存在。但是當(dāng)表空間的缺省值pctincrease設(shè)置不是0時(shí),SMON后臺(tái)進(jìn)程會(huì)定期將這些相鄰的自由范圍合并。若pctincrease設(shè)置為0,那么相鄰自由范圍不會(huì)被數(shù)據(jù)庫(kù)自動(dòng)合并。但可以使用Alter table命令“coalesce”選項(xiàng),來(lái)強(qiáng)迫進(jìn)行相鄰自由范圍的合并。
不進(jìn)行自由范圍合并,在日后的空間請(qǐng)求中,會(huì)影響到表空間中的空間分配。當(dāng)需要一個(gè)足夠大的范圍時(shí),數(shù)據(jù)庫(kù)并不會(huì)合并相鄰的自由范圍,除非沒(méi)有其他選擇。這樣,當(dāng)表空間中前面較小的自由范圍已被使用時(shí),將使用表空間中后面部分最大的一個(gè)自由范圍。結(jié)果,會(huì)因?yàn)闆](méi)有足夠多的使用空間,從而導(dǎo)致表空間需求的矛盾。由于這樣的情況出現(xiàn),使數(shù)據(jù)庫(kù)的空間分配距理想越來(lái)越遠(yuǎn)。自由空間碎片常會(huì)出現(xiàn)在那些經(jīng)常關(guān)閉又重新生成的數(shù)據(jù)庫(kù)表和索引中。
在理想的Oracle表空間中,每一個(gè)數(shù)據(jù)庫(kù)對(duì)象存儲(chǔ)在一個(gè)單獨(dú)的范圍中,并且所有有效自由空間集中在一個(gè)巨大而連續(xù)的范圍中。這樣,在一個(gè)對(duì)象需要附加存儲(chǔ)空間時(shí),可以在增加獲取足夠大自由空間的可能性的同時(shí),最小化空間中的循環(huán)調(diào)用,提高自由空間使用率。
更多軟考資料請(qǐng)?jiān)L問(wèn):考試吧軟件水平考試欄目
希望與更多網(wǎng)友交流,請(qǐng)進(jìn)入考試吧軟件水平考試論壇
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |