在Oracle數據庫中,這個初始化參數文件分為兩類,分別為文本參數文件與服務器參數文件。他們的內容是相同的,只是所表示的方式不同。在服務器參數文件中,是以二進制的形式保存的?梢岳脭祿䦷斓拿顚λ麄冞M行轉換。接下去筆者就談談維護服務器參數文件的一些技巧。
一、在數據庫啟動的時候指定參數文件。
在啟動數據庫的過程中,必須要提供一個準確的初始化參數文件,無論是文本參數文件還是服務器參數文件。在利用Startup命令啟動數據庫的時候,可以指定其采用的服務器參數文件。不過在這里需要注意一個細節(jié),即采用的初始化參數文件不同,其采用的關鍵字也是不同的。如果采用的是服務器參數文件,則需要使用SPfile指定;如果采用的是文本參數文件,則需要使用Pfile關鍵字指定。數據庫系統(tǒng)并不會自動根據參數文件的類別來進行判斷,而是根據這個關鍵字來判斷。如果發(fā)生張冠李戴現象的話,即使這個初始化參數文件本身沒有問題,但是因為關鍵字使用錯誤,會誤導數據庫啟動進程,從而導致數據庫啟動錯誤。
如果在利用命令startup啟動數據庫(如數據庫自動隨操作系統(tǒng)啟動而自動啟動)的過程中沒有指定采用的初始化參數文件,則數據庫系統(tǒng)會自動在默認的位置進行查找。一般情況下,其先查找是否有服務器參數文件(二進制文件),如果有的話則會啟用。如果沒有的話,則會繼續(xù)查找是否有文本參數文件。如果有責啟用,如果沒有的話則會向用戶提示啟動失敗。所以在默認情況下是服務器參數文件優(yōu)先的。如果數據庫管理員要讓數據庫自動啟動的時候采用文本參數文件,則就需要在關閉數據庫后刪除那個服務器參數文件,或者將其移動到其他的位置。然后下次重新啟動時在沒有指定初始化參數文件時而自動采用文本參數文件。對于數據庫系統(tǒng)來說,采用服務器參數文件還是采用文本參數文件,沒有多大的區(qū)別。只要保證他們的內容準確即可。所以到底是采用哪種參數文件為好,就全憑數據庫管理員的工作喜好了。
二、服務器參數文件的維護。
雖然說也可以利用文本編輯器來打開二進制形式的服務器參數文件,并查看相關的內容。但是需要注意的是,切不可在這里對此進行更改。也就是說不能夠手工更改這個服務器參數文件。由于二進制文件與文本文件保存方式的不同。在這里直接進行更改的話,則會導致這個初始化參數文件損壞,而導致數據庫無法正常啟動。為此如果要更改服務器參數文件,最好是將其轉換為文本參數文件后進行更改。更改完成后直接使用文本參數文件啟動或者轉換為服務器參數文件再啟動數據庫系統(tǒng)。
另外就是直接通過命令來進行更改。這里需要注意的是,存儲在服務器參數文件中的初始化參數是永久保留的。也就是說,在數據庫運行的過程中,通過命令對參數所做的任何更改,在數據庫關閉后是會被保存在服務器的初始化文件中。為此數據庫管理員不用擔心數據庫重新啟動后參數丟失的問題。
三、導出服務器參數文件。
在數據庫部署完成之后或者對初始化參數文件進行修改之前,管理員都需要對參數文件進行備份。無論是服務器參數文件還是文本參數文件,這個備份都是免不了的。因為任何數據庫管理員都不能夠保證在以后這個參數文件是否會出現損壞的情況。未雨綢繆,對服務器參數文件或者文本參數文件進行備份是提高數據庫安全的一個重要舉措。其次,有時候在排除數據庫故障時候,也需要導出這個數據庫服務器參數文件。因為將這個文件導出后,可以利用文本編輯器來方便的查詢所有的初始化參數,以分析故障的原因。雖然在數據庫的SQL*PLUS等工具中也可以查看這些初始化參數,但是操作起來不是很方便。所以不少管理員喜歡將他們導成文本文件來進行分析。最后,對服務器參數文件進行更改。由于不能夠通過文本編輯器直接對二進制的服務器參數文件進行更改,為此數據庫管理員往往會將將服務器參數文件導出來,然后再利用數據庫提供的命令將其轉換為文本文件。最后再將其轉換為服務器參數文件,并利用其啟動。有時候,在重新部署數據庫之前管理員也會先導出這個服務器參數文件,以方便后續(xù)重新使用這個服務器參數文件來啟動數據庫。
在導出數據庫服務器參數文件的時候,主要需要注意以下幾點。
首先,需要具有相關的權限。根據Oracle數據庫的要求,如果要導出數據庫服務器參數文件的話,必須需要數據庫的SYSDBA或者SYSOPER權限。如果用戶沒有類似權限的話,那么在利用命令導出服務器參數文件過程中,會出現“權限不足”的錯誤提示。
其次,可以直接直接利用命令create pfile from spfile命令,將服務器參數文件導出為文本文件。在導出的時候,不需要關閉原有的例程。如果沒有指定目錄與名稱的話,則數據庫會存放在不同的目錄中。這里主要需要注意這個名稱。因為在不同的操作系統(tǒng)平臺上,其采用的名稱是不同的。即在沒有指定導出文件名稱的話,數據庫會采用平臺特定的名稱,并于據平臺特定的默認服務器參數文件進行創(chuàng)建。有時候為了方便起見,可以在命令中指定存儲的路徑。如要指定路徑的話,需要采用=號和單引號。如采用pfile=’路徑名’的形式。
第三,在導出的過程中,服務器還會將原先二進制文件中的一些行注釋也導出到文本文件中,以方便管理員進行略讀。同理,在將文本文件轉換為二進制的服務器參數文件時,也會將行注釋存儲在二進制文件中。不過其只保存行注釋,而不會保存其他的注釋。此時再將二進制服務器參數文件轉換為文本參數文件時,原先的其他注釋也會丟失,只會保存行注釋。所以在初始化參數文件中編寫注釋的時候,最好采用行注釋。只有這個行注釋才會在轉換的過程中被永久的保留。
四、創(chuàng)建服務器參數文件。
當服務器參數文件出現損壞而無法啟動數據時,就有可能需要重新創(chuàng)建服務器參數文件。上面筆者已經強調過好幾次,服務器參數文件是無法手工編輯與創(chuàng)建的。為此必須通過文本參數文件來創(chuàng)建服務器參數文件。為了在服務器參數文件出現損壞時有一個補救,最好在平時將服務器參數文件進行備份,或者將其導出為文本參數文件。然后再必要的時候,根據這個文本參數文件來創(chuàng)建服務器參數文件。雖然可以手工創(chuàng)建文本參數文件,但是這個工作太復雜,不是輕易可以完成的。如果對其進行小修小改還行,但是若要將其從零開始創(chuàng)建,可是一個很浩大的工程,基本上是一項不可能完成的任務。
若要根據文本參數文件來轉換成服務器參數文件,可以使用數據庫提供的命令:Create Spfile=’’ from pfile=’’來完成。如果沒有指定服務器參數文件的名字與路徑的話,數據庫xiotng 采用的是平臺特定的名稱,并保存在數據庫的默認位置中。然后數據庫管理員就可以利用Startup命令來啟動了。當保存在默認位置時,可以不加參數即啟用這個服務器參數文件。因為默認情況下,這個服務器參數文件要比文本參數文件優(yōu)先級高。
最后需要說明的一點是即使是文本參數文件,數據庫管理員要讀懂這個文件中的內容,仍然需要一定的功底。為此筆者建議管理員,以后若更改系統(tǒng)的默認參數的話,最好加上注釋,以利于提高這個文本參數文件的可讀性。如此的話,在利用這個文件排除故障與改善數據庫性能使會變得相對簡單一點,有利于提高這個文本參數文件的可讀性。