oracle引數檔案pfile,spfile

uuxa發表於2009-10-28

1、 每一個資料庫中,都有一個作業系統檔案,叫初始化引數檔案,在10g版本中位於“C:oracleproduct10.1.0db_1database”目錄下,它決定了資料庫的物理結構、記憶體、資料庫的極限值及大量的預設值。是進行資料庫設計和最佳化的重要檔案。

2、 可以分為文字引數檔案(pfile text parameter file)和伺服器引數文字檔案(spfile server parameter file 兩種。9i以後才有此spfile

3、 Oracle在起動時,必須要一個引數檔案。在使用startup時,它先找spfile,如果沒有,再找pfile

資料庫啟動時spfile和pfile的載入順序
初始化引數是在資料庫例項啟動時(startup nomount)載入。
如果startup命令中未指定pfile引數,在windows系統中資料庫啟動時會按如下順序查詢啟動引數檔案:
%ORACLE_HOME%databaseSPFILE.ora
%ORACLE_HOME%databaseSPFILE.ora
%ORACLE_HOME%databaseinit.ora
在unix或linux系統中資料庫啟動時會按如下順序查詢啟動引數檔案:
%ORACLE_HOME%dbsSPFILE.ora
%ORACLE_HOME%dbsSPFILE.ora
%ORACLE_HOME%dbsinit.ora

[@more@]也就是說先找spfile.ora檔案,如果spfile.ora沒有則找spfile.ora檔案,最後才會去找 init.ora的pfile檔案.

如果要使用pfile,則必須使用pfile子句:startup force pfile=’d: PFILEORCL.ORA’

4、 引數檔案的匯出:原因有三

。伺服器引數檔案的備份

。列出例程當前使用的所有引數,以便查詢原因。

。透過先匯出spfile,再編輯pfile,再建立spfile,達到修改伺服器引數的目的。

5、 匯出spfile檔案的操作方法:

。建立pfile

SQL> create pfile from spfile;

在引數檔案目錄下,會產生一個INITorcl.ORA檔案,該檔案可以用記事本開啟編輯,千萬記住spfile不能這樣做。也可以指定路徑和檔名:

SQL> create pfile='d:backup.ora' from spfile

。匯出spfile

SQL> create pfile='c:test.ora' from spfile='c:oracleproduct10.1.0db_1databaseSPFILEORCL.ORA';

6、 建立spfile

SQL> create spfile from pfile='c:test.ora';

會在預設位置產生按預設規則命名的spfile檔案。

該語句應該在使用startup pfile啟動的資料庫環境下或在startup命令完成以前,否則會出現下面的提示錯誤:

7、 更改引數檔案

修改

alter system set parameter_name = parameter_value [, parameter_value ]...
[ COMMENT 'text' ]
[ DEFERRED ]
[ SCOPE = { MEMORY | SPFILE | BOTH } ]
[ SID = { 'sid' | * } ]

刪除

alter system reset parameter_name
[ SCOPE = { MEMORY | SPFILE | BOTH } ]
[ SID = 'sid' ]

也可以使用 ALTER SYSTEM SET PARAMETER=''達到相同的效果;

使用alrer system 語句來設定、更改或刪除(還原到預設值)初始化引數的值。注意,對於使用pfile引數檔案啟動的例程的修改只在當前例程中有效,要想將修改應用在未來的例程中,必須手動更新pfile文字引數檔案,而spfile則不需要,所以儘量使用spfile啟動。

另外,還要用scope子句來指明範圍,通常有三種:

Scope=spfile 只更改伺服器引數檔案,適用於動態和靜態引數,並且在下一次啟動時才生效

Scope=memory 只更改記憶體中的引數,對於動態引數,立即生效,但由於沒有更改spfile所以更改不能永久保留。不允許更改靜態引數

Scope=both 既更改伺服器引數檔案的引數,也更改記憶體中的引數。結果是對於動態引數立即生效並永久保留。不允許更改靜態引數。

SQL> alter system set open_cursors=30 scope=both;

如果沒有使用spfile引數檔案,那麼在指定scope=spfile或scope=both時會出錯。

如果使用spfile引數檔案啟到例程,預設設定scope=spfile;如果使用pfile,預設設定scope=memory。

對於動態引數,可以指定deferred關鍵值,這樣更改隻影響將來的會話。

8、檢視初始化引數

。show parameters 檢視當前使用的引數值。

SQL> show parameters open_cursors;

NAME TYPE VALUE
------------------------------------ ----------- ------
open_cursors integer 30

也可以匯出所有的引數

SQL> show parameters > c:t.txt

。show parameter spfile 檢視當前的spfile檔案,

SQL> show parameter spfile

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string C:ORACLEPRODUCT10.1.0DB_1
DATABASESPFILEORCL.ORA

如果沒有使用該檔案啟動例程,則返回值為空。

SQL> show parameter spfile

NAME TYPE VALUE
------------------------------------ ----------- -------------
spfile string

。v$parameter 該檢視顯示當前使用的引數值

SQL> select name,value from v$parameter where name='open_cursors';

NAME
-----------------------------------------------------------------------

VALUE
-----------------------------------------------------------------------

open_cursors
300

。v$spparameter 該檢視顯示spfile引數檔案中的當前內容,如果沒有使用Spfile,則返回為空。

SQL> select name,value from v$spparameter where name='open_cursors';

NAME
---------------------------------------------------------------------

VALUE
---------------------------------------------------------------------

open_cursors
300

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7416120/viewspace-1028229/,如需轉載,請註明出處,否則將追究法律責任。

相關文章