字典托管轉(zhuǎn)到本地托管以提高Oracle數(shù)據(jù)庫(kù)性能
在Oracle數(shù)據(jù)庫(kù)中,其表空間管理主要有兩種模式,分別為“字典托管”模式和“本地托管”模式。這兩種模式雖然對(duì)于終端用戶來(lái)說(shuō),可能沒(méi)有明顯的差異。但是從數(shù)據(jù)庫(kù)工程師角度來(lái)講,其差異是非常巨大的。最重要的一點(diǎn),如果采用本地托管模式的話,從性能上來(lái)講要優(yōu)于字典托管模式。在這篇文章中,筆者就給大家介紹一下,如何通過(guò)這個(gè)管理模式的轉(zhuǎn)變來(lái)提高Oracle數(shù)據(jù)庫(kù)的性能,以及轉(zhuǎn)換時(shí)注意的內(nèi)容。
一、轉(zhuǎn)換過(guò)程中的注意點(diǎn)及實(shí)現(xiàn)方法。
如上圖所示,Oracle數(shù)據(jù)庫(kù)中表空間可以分為系統(tǒng)System表空間和非系統(tǒng)表空間。這兩種表空間都支持字典托管模式和本地托管模式。但是由于系統(tǒng)表空間的特殊性,將其從字典托管模式轉(zhuǎn)換到本地托管模式時(shí),有一些特別需要注意的內(nèi)容。筆者等一下會(huì)特別強(qiáng)調(diào)這一方面的事項(xiàng)。
根據(jù)經(jīng)驗(yàn),筆者發(fā)現(xiàn)在Oracle11G或者10G數(shù)據(jù)庫(kù)中執(zhí)行表空間的轉(zhuǎn)換,主要有“遷移”和“重建”兩種方法。不過(guò)筆者這里并不建議采用遷移的方案。因?yàn)橥ㄟ^(guò)遷移的方式將表空間從字典托管模式轉(zhuǎn)換為本地托管模式的時(shí)候,盤區(qū)映射將會(huì)移入到表空間的數(shù)據(jù)文件頭中。注意,此時(shí)系統(tǒng)是不能夠使用自動(dòng)分配或者統(tǒng)一盤區(qū)尺寸管理。也就是說(shuō),無(wú)法使用本地托管模式的優(yōu)勢(shì),無(wú)法有效的減少碎片。在這種情況下,還必須為表空間中的每個(gè)段指定存儲(chǔ)語(yǔ)句。不過(guò)遷移方法也并不是一無(wú)用處,其能夠在一定程度上帶來(lái)性能的提升。不過(guò)其提升的效果沒(méi)有“重建數(shù)據(jù)庫(kù)”的方法那么好。另外特別重要的是,數(shù)據(jù)庫(kù)系統(tǒng)將無(wú)法從遷移總獲得策略方面的優(yōu)勢(shì)。如無(wú)法像本地托管模式那樣對(duì)盤區(qū)進(jìn)行有效的操作。
所以筆者這里建議大家采用的是“重建數(shù)據(jù)庫(kù)”法。雖然這個(gè)方法在操作上要比遷移方法復(fù)雜一點(diǎn),但是最終帶來(lái)的效果還是蠻客觀的。這也就是說(shuō),產(chǎn)出要大于投入。其實(shí)這個(gè)重建數(shù)據(jù)庫(kù)的過(guò)程也就是四個(gè)步驟。
第一步:導(dǎo)出表空間中的段。在Oracle數(shù)據(jù)庫(kù)中,可以在命令行模式下使用Expdb等語(yǔ)句將數(shù)據(jù)庫(kù)中已有的段導(dǎo)出來(lái)。如果數(shù)據(jù)庫(kù)管理員對(duì)于命令行不熟悉的話,也可以借助其管理控制臺(tái)來(lái)導(dǎo)出所有的數(shù)據(jù)段。
第二步:刪除原有的表空間。如果數(shù)據(jù)庫(kù)管理員仍然需要用到原來(lái)的服務(wù)器,那么就需要將這個(gè)服務(wù)器上原有的表空間刪除。注意,這里采用的不是遷移方案。所以不是像操作系統(tǒng)升級(jí)一樣,在原版本的功能上進(jìn)行升級(jí)。而是徹底的刪除之后,再重新安裝。為了減少文件碎片影響轉(zhuǎn)換后的效果,最好對(duì)相關(guān)的磁盤分區(qū)再采取格式化的操作。盡量提供一個(gè)干凈的環(huán)境。
第三步:重建建立表空間。在建立表空間的時(shí)候,可以采用關(guān)鍵字management local來(lái)說(shuō)明要?jiǎng)?chuàng)建的是本地托管表空間。在重新創(chuàng)建表空間的時(shí)候,筆者有一個(gè)小小的建議。即在創(chuàng)建表空間之前,最好能夠先分析一下數(shù)據(jù)段的大小。然后盡可能的巴一個(gè)單獨(dú)的表空間分割成幾個(gè)不同大小的盤區(qū),以容納不同大小的段。這可以有效的減少碎片,從后提高數(shù)據(jù)庫(kù)的性能。雖然這個(gè)分析數(shù)據(jù)段的過(guò)程在這個(gè)轉(zhuǎn)換過(guò)程中并不是必需的。但是這個(gè)過(guò)程本來(lái)就是為了提高數(shù)據(jù)庫(kù)的性能,所以在這個(gè)過(guò)程中同時(shí)考慮數(shù)據(jù)段的大小,可以提到1加1大于2的效果。所以筆者還是非常推薦這么做的。
第四步:重新導(dǎo)入段。表空間建立好之后,再將剛才導(dǎo)出的段再導(dǎo)入到數(shù)據(jù)庫(kù)中。這種重建的方法就相當(dāng)于一開(kāi)始采用的就是本地托管表空間。為此可以避免因?yàn)椤白值渫泄堋蹦J蕉斐傻牟患嫒莠F(xiàn)象。也就是說(shuō),可以將本地托管模式的優(yōu)勢(shì)發(fā)揮到最有效的狀況。
|
|