oracle的引數檔案 pfile和spfile

2021-05-23 06:31:44 字數 3334 閱讀 6047

在oracle資料庫中,引數檔案包含了所有的資料庫配置資訊,它非常重要。如果要把oracle管理好,必須要做到對引數及引數檔案的瞭如指掌。但是,oracle資料庫中 據是龐大的,且正因為引數檔案包含了資料庫的所有配置資訊,所以引數很多,有幾百 個之多,一時是難以熟悉和掌握的,這需要在實踐中的配置,了解和領會。有關各個引數的詳細參考資訊,請參閱oracle官方文件《oracle9i database reference》。

一、引數檔案說明

主要說明引數檔案的定義、功用、動作原理、分類,以及如何修改引數。

1.引數檔案的定義、作用

oracle資料庫通過一系列引數來對資料庫進行配置。這些引數是以鍵-值對的形式來表 示的,如:

maxlogfiles=50

background_dump_dest=c:/dump

其中,等號左邊是引數名,右邊是對應的引數的值,值的型別有多種,典型的如數字和 字串.

引數檔案就是儲存這些引數的地方,oracle在啟動時會從引數檔案中讀取相關的配置。

2.引數檔案的分類

在9i之前,引數檔案只有一種,它是文字格式的,稱為pfile,在9i及以後的版本中,新 增了伺服器引數檔案,稱為spfile,它是二進位制格式的。這兩種引數檔案都是用來儲存參 數配置以供oracle讀取的,但也有不同點,注意以下幾點:

第一,pfile是文字檔案,spfile是二進位制檔案;

第三,pfile配置改變後,要使用其生效,必須重新啟動資料庫,spfile的配置生效時限 和作用域可以由修改引數的sql命令指定,可以立即生效,也可以不立即生效。當然有些 引數的修改必須重啟資料庫才能生效;

第四,可用sql命令由pfile建立spfile,也可以由spfile建立pfile;

第五,如果是手動建立資料庫而不是通過dbca,則開始建立資料庫時,你只能定義pfile 。因為它是文字格式的;

第六,oracle資料庫只使用乙個引數檔案,要麼是pfile,要麼是spfile,即麼如何判斷 資料庫當前使用的是哪乙個引數檔案呢?一種方法是能過create pfile來鑑別,如果當 前使用的不是spfile,則相應格式的create pfile會產生錯誤。另一種方法是show  parameter  spfile命令,用來顯示spfile的位置,如果顯示的值為空,則表示使用的是pfile。

3.引數檔案的動作原理

oracle例項在啟動時,會去讀取引數檔案中的配置,這個過程是這樣的:

資料庫的startup命令中可以指定以哪個pfile來啟動,但是請注意,只能指定pfile,不 能指定spfile。

當使用不帶pfile 子句的startup 命令時,oracle 將從平台指定的預設位置上的伺服器 引數檔案(spfile) 中讀取初始化引數。oracle查詢spfile或者創通的init.ora的順序 是:在平台指定的預設位置上,oracle首先查詢名為spfile$oracle_sid.ora的檔案,如 果沒有就查詢spfile.ora檔案,還沒有的話,就找init$oracle_sid.ora檔案。

在$oracle_base/admin/db_name/spfile下,你很可能可以看到乙個類似這樣init.ora.1 92003215317]名字的檔案,這就是初始化引數檔案,只是跟上了時間戳。對於oracle920 ,預設的就使用spfile啟動,但是這個spfile不是憑空而來,而是根據這個檔案建立而來 ,你可以去掉這個長字尾,就是標準的pfile檔案了。

對於windows nt 和windows 2000  ,其位置是:$oracle_home/database/spfile$oracle_sid.ora。

資料庫在啟動後,引數的配置值可以通過查詢資料字典v$parameter得到。

4.引數檔案的修改方法

手動修改用於修改pfile,直接用文字編輯開啟pfile修改。要使用修改生效,須重 啟資料庫。

alter system set parameter = value 。comment好理解是為該引數指定注釋;deferred是指定修改之在下次啟動例項時再生效;scope指定修改應用的範圍,可以僅僅是記憶體中,那麼就不需要寫入spfile,下次例項啟動時,修改就被丟棄,可以是寫入spfile中,但並不立即應用到當前例項中,下次啟動例項時再生效,both選項(預設選項)就是指定立即生效並且寫入spfile中;sid指定修改應用的例項,如果指定*(預設選項),則是應用到所有例項。

sql>alter system set job_queue_processed=50 scope=memory

注意,scope=memory表示應用範圍,取值如下:

spfile:修改只對spfile有效,不影響當前例項,需要重啟資料庫才能生效;

memory:修改只對記憶體有效,即只對當前例項有效,且立即生效,但不會儲存到spfile, 資料庫重啟後此配置丟失;

both:顧名思義,包含以上兩種,立即生效,且永久生效。

對於alter system的引數修改命令,請注意以下幾點:

第一,如果當前例項使用的是pfile而非spfile,則scope=spfile或scope=both會產生錯 誤;

第二,如果例項以pfile啟動,則scope的預設值為memory,若以spfile啟動,則預設值為 both;

第三,可以使用deferred表示所作修改只適用於將來的會話,還可以使用comment寫入注 釋,如:alter system set job_queue_processes=50 scope=both deferred comment=" 注釋"

第四,刪除引數的方法如下:alter system set parameter='';

alter system reset scope=both sid=』*』

5.建立引數檔案

對於pfile,你可以用文字編輯器直接手工編輯乙個,也可以使用create pfile命令 從spfile建立,如:create pfile='c:/pfile/mypfile.ora' from  spfile='d:/spfile/myspfile.ora',或者從當前例項所使用的spfile建立:create  pfile='c:/pfile/mypfile.ora' from spfile。

建立spfile的命令如下:create spfile from pfile='c:/pfile/mypfile'。

注意:oracle例項啟動時,讀取引數檔案的優先順序如下:spfilesid.oraàdefault spfileàinitsid.ora。由此也看出oracle也有限選擇使用spfile。不過我們也可以在執行startup命令時手工指定pfile檔案:startup pfile=$oracle_home/dbs/initorcl.ora。不能手工指定spfile,不過可以這樣處理,新建乙個pfile,在pfile檔案中指定spfile=$oracle_home/database/myspfile.ora。然後在startup命令中指定pfile為剛才建立的pfile。

oracle引數檔案

pfile靜態引數檔案 spfile是乙個二進位制檔案,不能手工修改只能用命令列修改,只有oracle9i以上的才有 啟動資料庫時候引數檔案的預設讀取順序 spfilesid.ora default spfile initsid.ora default pfile 重建spfile,既pfile同步...

oracle 引數檔案

又被作為靜態的文字檔案來儲存初始化引數的配置,我們可以通過作業系統的文字編譯器 對該檔案進行編譯,可以為乙個初始化引數設定多個值,但是如果設定多個值,後乙個值會把前乙個值覆蓋。即為 動態初始化引數檔案,使用動態引數是因為 修改完一些引數無需重新啟動資料庫 還有就是因為oracle引入了很多自動調整的...

oracle啟動引數檔案

1.初始引數檔案 pfile initialization parameter file 2.伺服器引數檔案 spfile server side parameter file 主要的區別是 1.pfile是文字檔案,spfile是二進位制檔案 2.pfile可以通過文字編輯器修改,spfile主要...