Oracle啟動文件基礎
?
??? Oracle啟動文件的重要性就不說了,總之就是非常重要。之前對這一塊的了解還是比較混亂,所以這次在學習DBA知識之前,先把這一塊仔細學習一下。以下內容基本上是網上找的資料,因為來源比較多,而且內容也都是重復,轉載地址就不列舉出處了。
?
1、查看數據庫是否由SPFILE啟動:
?
SQL> Select isspecified,count(*) from v$spparameter group by isspecified;
?
ISSPECIFIED?? COUNT(*)
----------- ----------
FALSE????????????? 225
TRUE??????????????? 34
?
V$SPPARAMETER Description: V$SPPARAMETER displays information about the contents of the server parameter file. If a server parameter file was not used to start the instance, then each row of the view will contain FALSE in the ISSPECIFIED column.
?
??? 從v$spparameter的說明來看,只要是該視圖中有TRUE項,即表示該數據庫由SPFILE啟動。
?
?
2、查看SPFILE所在地址:
?
SQL> show parameter spfile
?
NAME???????????????????????????????? TYPE??????? VALUE
------------------------------------ ----------- ------------------------------
spfile?????????????????????????????? string????? %ORACLE_HOME%\DATABASE\SPFILE%ORACLE_SID%.ORA
?
??? 這個就是基本的默認路徑了。
?
?
3、SPLIFE的意義:
?
??? 在9i之前,參數文件只有PFILE一種,是文本格式的。從9i開始新增了服務器參數文件,即SPFILE,是二進制格式,無法直接手動修改。
??? 現在這兩種參數文件都可以用來存儲參數配置以供Oracle讀取,但也有不同點,注意以下幾點:
??? 第一:PFILE是文本文件,SPFILE是二進制文件;
??? 第二:對于參數的配置,PFILE可以直接以文本編輯器打開手工配置,而SPFILE不行,必須在數據庫啟動后,通過sql命令進行在線修改;
??? 第三:PFILE配置改變后,必須重新啟動數據庫后才能生效,SPFILE的配置生效時限和作用域可由SQL命令指定。(有些參數的修改必須重啟數據庫才能生效);
??? 第四: 可用SQL命令由PFILE創建SPFILE,也可以由SPFILE創建PFILE;
??? 第五: 如果是手動創建數據庫而不是通過DBCA,則開始創建數據庫時,你只能定義PFILE
,因為它是文本格式的;
??? 第六: Oracle啟動只使用一個參數文件,要么是PFILE,要么是SPFILE,可以通過create pfile方法來鑒別,也可以用show parameter spfile命令,如果值為空,則表示使用的是pfile
?
??? SPFILE改正了PFILE管理混亂的問題。在多結點的環境里,PFILE會有多個
IMAGE
啟動時候需要跟蹤最新的IMAGE,這是個煩瑣的過程。用SPFILE以后,所有參數改變都寫到SPFILE里面(只要定義scope=spfile或both),參數配置有個權威的來源。
?
?
4、SPFILE/PFILE的創建:
?
??? 從spfile獲取pfile:
?
???
Create
pfile
=
'pfile_location'
from
spfile
;
???
Create
pfile
=
'pfile_location'
from
spfile
=
'spfile_location'
;
?
??? 從pfile獲取spfile:
???
Create
spfile
from
pfile
=
'pfile_location'
;
???
Create
spfile
=
'spfile_location'
from
pfile
=
'Your_pfile_location'
;
?
??? 注:可以通過先從SPFILE創建PFILE,然后修改新生成的PFILE,再重新生成SPFILE,這樣會“比較”安全一些。
??? 另:要修改當前在使用的參數文件,必須將數據庫先關閉,然后重啟生效。必須是SHUTDOWN,STARTUP NOMOUNT也不行。
?
?
5、動態修改參數:
?
??? alter system set parameter=Value scope=spfile|both|memory;
?
???
MEMORY:只改變當前實例運行
??? SPFILE:只改變SPFILE的設置
??? BOTH:改變實例及SPFILE
?
??? alter session set parameter=Value;
?
??? 也可通過這樣來改變當前實例的參數
?
?
6、強制使用PFILE啟動:
?
??? SQL> startup pfile='Your_Pfile.ora';
?
?
7、Oracle啟動時的判定:
?
??? Oracle先去找SPFILE,若沒有找到則使用PFILE啟動,或還沒有,通過DBS文件夾下的INIT.ORA啟動。
?
?
?