初始化引數(Initialization Parameter)知識合集 based on 11g
初始化引數檔案分為:
1)pfile 靜態引數檔案
2)spfile 動態伺服器引數檔案
作用:儲存建立例項、啟動後臺程序所需引數值。
呼叫:例項啟動時,按如下順序調取初始化引數檔案
linux:
$ORACLE_HOME/dbs/spfile<SID>.ora $ORACLE_HOME/dbs/spfile.ora $ORACLE_HOME/dbs/init<SID>.ora
windows:
%ORACLE_HOME%\database\SPFILE<SID>.ORA %ORACLE_HOME%\database\SPFILE.ORA %ORACLE_HOME%\database\INIT<SID>.ORA
或者啟動時指定pfile:
startup open pfile='/home/oracle/init.ora';
例項從關閉狀態啟動到nomount(started狀態)時需要用到初始化引數檔案。
spfile是伺服器端檔案,例項啟動時被SMON讀取,不能重新命名和移動位置,它是二進位制檔案,不能手工編輯;pfile是客戶端檔案,例項啟動時由使用者程序讀取,可以隨意重新命名或 移動後通過制定其名稱和位置來啟動資料庫,它是ASCII文字檔案,可以編輯。
spfile是二進位制檔案,可以用strings命令來檢視內部的引數資訊:
可以在資料庫的任何狀態下(即使是關閉狀態下)用以下語句做初始化引數檔案的轉換:
CREATE SPFILE [=[fiilepath/]filename] FROM PFILE [=[fiilepath/]filename] ;
CREATE PFILE [=[fiilepath/]filename] FROM SPFILE [=[fiilepath/]filename] ;
此時的SQLPLUS僅僅是一個轉化工具而已,要求FROM後面的初始化引數檔案必須存在。
還可以
CREATE PFILE [=[fiilepath/]filename] FROM MEMORY;
CREATE SPFILE [=[fiilepath/]filename] FROM MEMORY;--當資料庫不是用spfile啟動的時候才能這樣操作
動態引數:可在例項執行時更改的引數,可以寫入記憶體立即生效,可以寫入spfile儲存設定,部分動態引數支援session級別的更改。
靜態引數:在例項啟動時就固定下來,即使更改也只先寫入spfile,需重啟例項才能啟用新值的引數。
v$parameter顯示當前例項生效的引數資訊(已匯入記憶體中的引數資訊);v$spparameter顯示磁碟中spfile中的值。
共342個引數,41個基本引數,301個非基本引數。
檢視初始化引數配置:
1)OEM:
2)v$parameter
3)show parameter command
更改初始化引數
1)更改動態引數,立即生效,不寫入spfile,重啟後恢復原來的值
alter system set db_file_multiblock_read_count=16 scope=memory;
2)更改動態引數,立即生效,寫入spfile,重啟後繼續使用當前值
alter system set db_file_multiblock_read_count=16 scope=both;
3)更改靜態引數,寫入spfile,需例項重啟後方才生效
alter system set db_file_multiblock_read_count=16 scope=spfile;
4)按會話級別動態更改,僅當前會話有效
alter session set optimizer_mode=first_rows;
用pfile啟動資料庫時,若改動spfile內的引數(scope=spfile),會報錯
資料庫至少啟動到nomount下可修改引數。關閉狀態下不允許修改。