Oracle服務(wù)器參數(shù)文件管理的注意事項
當(dāng)用戶通過網(wǎng)絡(luò)訪問Oracle數(shù)據(jù)庫時,在客戶端要為應(yīng)用程序分配用戶進(jìn)程;與之同時,要在服務(wù)器端為期分配服務(wù)器進(jìn)程。而且,客戶應(yīng)用的所有SQL操作最終都由服務(wù)器進(jìn)程來執(zhí)行的。那么客戶端進(jìn)程與服務(wù)器進(jìn)程之間如何協(xié)調(diào)工作呢?這就主要是通過初始化參數(shù)來實現(xiàn)的。在Oracle數(shù)據(jù)庫中,初始化參數(shù)包括默認(rèn)的初始化參數(shù)和以參數(shù)文件控制的初始化參數(shù)。默認(rèn)的初始化參數(shù)有200多個,在通常情況下,數(shù)據(jù)庫管理員不需要對其進(jìn)行更改。數(shù)據(jù)庫管理員平時要管理的就是參數(shù)文件。而參數(shù)文件中保存的就是一些非默認(rèn)參數(shù)。
參數(shù)文件主要用于保存數(shù)據(jù)庫啟動例程所需要的初始化參數(shù)。作為Oracle數(shù)據(jù)庫管理員來說,默認(rèn)參數(shù)往往不需要進(jìn)行更改。其日常需要維護(hù)的主要就是參數(shù)文件中保存的非默認(rèn)參數(shù)。在Oracle10之后的版本中,其同時支持兩種類型的參數(shù)文件,分別為Pfile(文本參數(shù)文件)和Spfile(服務(wù)器參數(shù)文件)。這兩個參數(shù)文件雖然起到的作用是相同的,但是其有很大的不同。
一、Pfile參數(shù)文件與Spfile參數(shù)文件的區(qū)別
在Oracle數(shù)據(jù)庫比較早的版本中,初始化參數(shù)都是以Pfile(文本參數(shù)文件)的形式來保存的。而在Oracle 9之后的版本中,則引入了Spfile(服務(wù)器參數(shù)文件)。Oracle官方是建議數(shù)據(jù)庫管理員采用Spfile參數(shù)文件。這主要是因為若采用后者這種形式的參數(shù)文件,其有兩個優(yōu)點。一是比較容易備份,因為服務(wù)器參數(shù)文件可以利用RMAN備份工具進(jìn)行備份,而文本參數(shù)文件則不行。二是服務(wù)器參數(shù)文建管理起來比較方便。文本參數(shù)文件其維護(hù)起來相對比較繁瑣。
不過入道比較早的數(shù)據(jù)庫管理員,還是比較喜歡采用Pfile(文本參數(shù)文件)。若數(shù)據(jù)庫管理員采用這種類型的參數(shù)文件來管理啟動參數(shù)的話,則需要注意以下幾個問題。
1、是初始化參數(shù)不能夠重復(fù)。也就是說,數(shù)據(jù)庫管理員在修改或者增加初始化參數(shù)之前,首先需要檢查初始化參數(shù)是否存在。若數(shù)據(jù)庫管理員想要更改或者設(shè)置的初始化參數(shù)已經(jīng)存在的話,那么就必需直接更改原有的參數(shù)。只有在不存在的情況下,才能夠在文件末尾添加新的參數(shù)。即當(dāng)相關(guān)參數(shù)重復(fù)時,Oracle數(shù)據(jù)庫不會自動采用最后的參數(shù),而是會報錯。
2、是需要注意文本參數(shù)文件修改格式方面的問題。如在文本參數(shù)文件中,每一行都只能夠設(shè)置一個參數(shù),不能再同一行中設(shè)置多個不同的參數(shù)。如參數(shù)若是字符型的則可以利用引號引住;但是,若參數(shù)是數(shù)字型的,則不能夠使用引號引住。但是,若同一個參數(shù)有多個值,則可以放在同一行中,只是不同值之間必須要用逗號進(jìn)行分割。無論是引號還是逗號,都必須是英文狀態(tài)下的符號。
3、是在文本參數(shù)文件中,有個特殊的符號即#。當(dāng)數(shù)據(jù)庫管理員不需要某個參數(shù)時,我們往往不建議直接刪除它;而是建議數(shù)據(jù)庫管理員把參數(shù)屏蔽掉。這對于日后維護(hù)是很有必要的。此時,數(shù)據(jù)庫管理員若要屏蔽某個參數(shù),就可以直接在某個參數(shù)前面加入#符號。通過這種方式,就可以讓Oracle數(shù)據(jù)庫服務(wù)器忽略這個被屏蔽的參數(shù)。
二、Spfile參數(shù)文件的管理與配置
筆者雖然接觸Oracle數(shù)據(jù)庫服務(wù)器也已經(jīng)有不少的年頭了。不過筆者還是比較喜歡采用Spfile參數(shù)文件來管理數(shù)據(jù)庫服務(wù)器的參數(shù)文件。Spfile參數(shù)文件是以二進(jìn)制形式存放的。若要采用這種形式來管理啟動參數(shù)文件,筆者有如下的建議。
1、對于其存放位置的建議。雖然說,Oracle數(shù)據(jù)庫服務(wù)器對于服務(wù)器參數(shù)文件的存放位置沒有強(qiáng)制性的規(guī)定。但是,為了管理方便,筆者還是建議數(shù)據(jù)庫管理員要把服務(wù)器參數(shù)文件存放在一個特定的目錄中。如可以把服務(wù)器參數(shù)文件存放在數(shù)據(jù)庫安裝目錄下的Datebase目錄中。如此的話,日后維護(hù)起來就會比較方便。
2、服務(wù)器參數(shù)文件如何命名。對于這個命名數(shù)據(jù)庫服務(wù)器也沒有強(qiáng)制性的規(guī)則。不過,通常情況下,數(shù)據(jù)庫管理員會有一套約定俗成的命名規(guī)則,如SPfileSID.ora。其中Spfile前綴表示這是一個服務(wù)器參數(shù)文件,而不是文本參數(shù)文件;SID為例程名;ORA則為擴(kuò)展名。這個命名規(guī)則不是強(qiáng)制性的。但是,若數(shù)據(jù)庫管理員采用這套命名規(guī)則的話,則對于其后一任數(shù)據(jù)庫管理員來說,則其管理起來就會方便許多。
3、如何修改服務(wù)器參數(shù)文件呢?雖然說服務(wù)器參數(shù)文件是以二進(jìn)制形式存儲的。但是,利用文本編輯器工具仍然可以看到相關(guān)的內(nèi)容。如利用文本編輯器打開服務(wù)器參數(shù)文件中,通常情況下,只有參數(shù)文件的尾部與頭部的一些不怎么重要的內(nèi)容會以二進(jìn)制的形式顯示外,其他一些具體的設(shè)置參數(shù)都可以正常顯示出來。但是數(shù)據(jù)庫管理員不能夠像文本參數(shù)文件一樣,在文本編輯器中直接進(jìn)行更改。而必須采用一個Alter System命令對其進(jìn)行更改。若采用這個命名進(jìn)行更改的話,則就不需要遵循上面文本參數(shù)文件的相關(guān)注意事項。因為利用Alter System命令進(jìn)行更改的話,就自動會符合相關(guān)的格式規(guī)定。
但是,需要注意一個問題,即Alter System命令不是萬能的。也就是說,其不能夠更改服務(wù)器參數(shù)文件中的所有啟動參數(shù)。如對于服務(wù)器參數(shù)文件中的數(shù)據(jù)庫名,就不能夠直接利用這個命令進(jìn)行更改。而必須要先修改初始化參數(shù)db_name,然后重新建立控制文件。這也主要是為了提高服務(wù)器參數(shù)文件的準(zhǔn)確率所考慮的。
4、如何查看當(dāng)前數(shù)據(jù)庫系統(tǒng)到底是采用什么類型的參數(shù)文件。由于在Oracle9I以后的數(shù)據(jù)庫版本中,同時支持文本參數(shù)文件與服務(wù)器參數(shù)文件。如果數(shù)據(jù)庫管理員是后來接受這個數(shù)據(jù)庫維護(hù)任務(wù)的,那么有可能不怎么清楚,當(dāng)前數(shù)據(jù)庫服務(wù)器到底采用的是什么類型的參數(shù)文件。故其要對數(shù)據(jù)庫服務(wù)器參數(shù)文件進(jìn)行更改,也無從做起。此時,數(shù)據(jù)庫管理員可以利用服務(wù)器自帶的命令進(jìn)行查詢。當(dāng)相關(guān)例程處于啟動狀態(tài)時,先以特權(quán)用戶登錄。然后采用show parameter spfile命令,來系統(tǒng)顯示初始化參數(shù)的值。如果在顯示的結(jié)果中,Value處有值的話,則表示例程在使用的是服務(wù)期參數(shù)文件;如果Value處沒有任何返回結(jié)果的話,則表示例程現(xiàn)在使用的是文本參數(shù)文件。
三、建立服務(wù)器參數(shù)文件
若數(shù)據(jù)庫管理員因為一時粗心,把服務(wù)器參數(shù)文件丟失了的話,再重新建立服務(wù)器參數(shù)文件,那可真要命了。因為上面筆者說過,服務(wù)器參數(shù)文件不能夠直接在文本編輯器中修改,而必須要采用Alter命令進(jìn)行一條條的更改與添加。所以,其重新建立服務(wù)期參數(shù)文件是一件比較累人的工作。但是,因為服務(wù)器參數(shù)文件具有管理方便、可以利用RMAN等備份工具進(jìn)行備份等優(yōu)點。若為此舍棄了服務(wù)期參數(shù)文件,而采用文本參數(shù)文件,那就有點因小失大了?所以,無論是Oracle官方,還是筆者,都建議數(shù)據(jù)庫管理員采用服務(wù)器參數(shù)文件來管理數(shù)據(jù)庫的啟動參數(shù)。
不過,我們可以采用一些技巧,讓服務(wù)器參數(shù)文件的建立變得簡單起來。也就是說,我們可以先利用文本文件建立文本參數(shù)文件。因為在文本文件中建立相關(guān)的參數(shù)會比利用命令簡單許多。然后,再通過CREATE Spfile…FROM FILE…命令來進(jìn)行轉(zhuǎn)換,把文本參數(shù)文件轉(zhuǎn)換為服務(wù)器參數(shù)文件。這其中,第一個參數(shù)用于指定服務(wù)器參數(shù)文件全名。第二個參數(shù)用于指定文本參數(shù)文件全名。注意,如果沒有指定服務(wù)器參數(shù)文件的全名,則其會在數(shù)據(jù)庫的默認(rèn)路徑下建立服務(wù)器參數(shù)文件,即服務(wù)器安裝目錄下的DATEBASE子目錄。若沒有指定文本參數(shù)文件全名的話,則數(shù)據(jù)庫采用的是默認(rèn)的文本參數(shù)文件。再者,執(zhí)行這個命令也有權(quán)限上的限制,即只有特權(quán)用戶才能夠執(zhí)行這個命令。
總之,參數(shù)文件中保存了很多啟動參數(shù)。在通常情況下,在服務(wù)器安裝過程中,服務(wù)器會根據(jù)相關(guān)情況自動對參數(shù)進(jìn)行賦值。若沒有特殊的需要,不需要對其進(jìn)行額外的更改。但是,若服務(wù)器的硬件配置或者服務(wù)期所屬的網(wǎng)絡(luò)環(huán)境出現(xiàn)變化的話,則就需要對其進(jìn)行調(diào)整。另外,有時候出于優(yōu)化數(shù)據(jù)庫服務(wù)器性能的考慮,也需要對相關(guān)的初始化參數(shù)進(jìn)行調(diào)整。在對參數(shù)文建進(jìn)行更改時,除了需要遵循以上注意事項之外,筆者還有最后一條忠告。即無論是采用文本參數(shù)文件,還是服務(wù)器參數(shù)文件,最好都能夠事先對參數(shù)文件進(jìn)行備份,以防不時之需。這主要是因為參數(shù)文件對于數(shù)據(jù)庫服務(wù)器的影響是很大的。在修改時,若哪個參數(shù)被意外更改,很可能導(dǎo)致數(shù)據(jù)庫啟動失敗。
您正在閱讀:Oracle服務(wù)器參數(shù)文件管理的注意事項
【編輯推薦】