初始化參數檔案是Oracle資料庫非常重要的配置檔案,Oracle資料庫根據初始化參數來配置自身的啟動,每個執行個體在啟動之前,首先讀取參數檔案中設定的參數。這些參數決定了Oracle資料庫的記憶體配置及其内部很多的處理規則,它對系統的穩定運作及性能優劣會産生重要影響。
在Oracle 9i以前,Oracle隻有一個文本形式的參數配置檔案init(sid).ora也就是pfile,如果要修改資料庫參數,必須編輯修改該文本檔案中相應參數的值,然後再重新開機資料庫才能生效。從Oracle 9i開始,Oracle引入了二進制的參數配置檔案spfile(sid).ora也就是spfile,如果資料庫使用了spfile,Oracle的許多參數就可以通過指令動态實時修改,切注意spfile檔案不允許手工編輯,否則會損壞。
1、Oracle9i讀取初始化參數檔案的順序
Oracle9i資料庫啟動時讀取參數檔案的順序是:
會首先在$ORACLE_HOME/dbs(Windows為database目錄)目錄下查找spfile(sid).ora檔案(spfile),如果有,則利用該檔案啟動資料庫;
若找不到該spfile,則繼續在$ORACLE_HOME/dbs(Windows為database目錄)目錄下查找init(sid).ora檔案(pfile),若有則利用該檔案啟動資料庫;
若以上檔案都沒有,則oracle會報錯,無法啟動。
2、檢查Oracle版本和參數值
可以用SYS使用者在SQLPLUS中發出以下指令查詢oracle的版本資訊:
SQL>select * from v$version;
傳回如下結果:
BANNER
--------------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.5.0 - 64bit Production
PL/SQL Release 9.2.0.5.0 - Production
CORE 9.2.0.6.0 Production
TNS for Solaris: Version 9.2.0.5.0 - Production
NLSRTL Version 9.2.0.5.0 – Production
以上結果說明該資料庫版本為64位的oracle 9.2.0.5。如果傳回結果中沒有64bit Production的資訊,則為32位版本的資料庫。
特别要注意,32位版本oracle資料庫的SGA區最大不超過1.7G,如果在初始化參數檔案裡配置的SGA超過了1.7G,oracle無法利用,且可能會導緻不可測的問題。Windows平台在設定了boot.ini後,最多可以達到2.6G
3、設定Oracle9i初始化參數
Oracle9i初始化參數我們隻需關注兩種
動态參數,可以用alter system指令修改,修改後立即生效;
靜态參數,可以用alter system..scope=spfile修改,修改後必須重新啟動執行個體才能夠生效;
檢視初始化參數的類型
SQL> select name, value, issys_modifiable from v$parameter;
如果issys_modifiable為immediate說明是動态參數;
如果issys_modifiable為false說明是靜态參數;
SPFILE的備份
彩鈴要求統一使用SPFILE,是以在修改初始化參數前應對SPFILE進行一次備份。
檢視Oracle是否使用SPFILE啟動:
SQL> show parameter spfile
--如結果為空,則說明使用的不是SPFILE,而是PFILE!
備份SPFILE(SYSDBA登陸):
SQL> create pfile='/home/oracle/spfile.bak' from spfile;
create pfile='/home/spfile.bak' from /dev/spfile;
--路徑和檔案名可更改,但不要放在$ORACLE_HOME/dbs(Windows為database目錄)下面。
修改初始化參數
修改初始化參數必須用AS SYSDBA身份登陸資料庫。
動态參數
SQL> alter system set job_queue_processes=20;
靜态參數
SQL> alter system set sga_max_size=2048M scope=spfile;
修改完畢,重新啟動執行個體使之生效。