oracle數據庫在啟動時報錯 提示找不到相關的配置文件 ,這時明確oracle數據啟動時加載的原理
1.oracle實例啟動時,尋找參數文件的順序為
spfileSID.ora----->spfile.ora------>initSID.ora
2.spfile與pfile的區別
(1)pfile是文本文件,可以使用文本編輯器進行編輯,而spfile是二進制文件,不能使用任何編輯器進行修改,但是可以使用strings查看文件的內容
(2)pfile里面是靜態參數,不能在線修改,而spfile里面有動態參數,可以在線修改,而不用重啟oracle
3.可以通過以下命令查看oracle使用pfile啟動,還是spfile啟動
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /u01/app/oracle/product/10.2.0
/db_1/dbs/spfileora.ora
如果value有值,說明是從spfile啟動,否則是通過pfile啟動
4.oracle的spfile,pfile存放位置
pfile:$ORACLE_HOME/dbs目錄下,如果數據庫是用dbca創建的話,則在$ORACLE_BASE/admin/ora/pfile還有一個pfile文件,並且 在$ORACLE_HOME/dbs目錄下創建一個spfileSID.ora的spfile文件
spfile:$ORACLE_HOME/dbs目錄下
5.spfile與pfile互相創建
(1)如果oracle是從pfile啟動,則可以使用如下命令創建spfile
SQL> create spfile from pfile
(2)如果oracle是從spfile啟動,則可以使用以下命令創建pfile
SQL> create pfile from spfile
6.利用pfile啟動oracle實例
SQL>STARTUP PFILE = $ORACLE_HOME/dbs/initORCL.ora
================================================================
(一)Pfile文件
Pfile(Parameter File,參數文件)是基於文本格式的參數文件,含有數據庫的配置參數。
Oracle 9i在安裝時為每個數據庫建立了一個Pfile,默認的名稱為“init+例程名.ora”,這是一個文本文件,可以用任何文本編輯工具打開。
(二)SPfile文件
SPfile(Server Parameter File,服務器參數文件)是基於二進制格式的參數文件,含有數據庫及例程的參數和數值,但不能用文本編輯工具打開。
動態修改參數
動態修改參數
alter system set parameter=Value
scope={spfile|both|memory};
SCOPE參數有三個可選值:
MEMORY:只改變當前實例運行;
SPFILE:只改變SPFILE的設置(如果修改的是靜態參數,則必須指定SCOPE=SPFILE,否則將會報ORA-02095錯。);
BOTH:改變實例及SPFILE(使用BOTH選項實際上等同於不帶參數的ALTER SYSTEM語句)。
(三)spfile和pfile的對比表
(四)Oracle啟動時的調用
用startup(默認)啟動的順序
1、直接在默認路徑下查找spfileSID.ora --(spfile)
如果沒有再查找2
2、直接在默認路徑下查找spfile.ora
如果沒有再查找3
3、直接在默認路徑下查找initSID.ora --(pfile)
如果還沒有 就會報錯……
用startup pfile= 的方式啟動。
1、指定的pfile:
startup pfile=$ORACLE_HOME/dbs/initSID.ora
2、使用spfile啟動,需要變通一下如:vi一個pfile文件aaa.ora,包含以下內容:
spfile=$ORACLE_HOME/dbs/spfileSID.ora
再用startup pfile=$ORACLE_HOME/dbs/aaa.ora啟動即可。
若使用這兩種方式,級別會高於直接用startup啟動的方式。
常見操作命令:
sql>tnsping orcl(實例名稱) --查看遠程的listener是否啟動
sql>crs_stat -t 查看集群資源運行狀態記錄
sql>SRVCTL Status
顯示指定數據庫的當前狀態
srvctl status database -d database_name
srvctl status instance -d database_name -i instance_name [,instance_name-list]
實例:顯示數據和所有實例狀態
srvctl status database -d mydb
sql>lsnrctl start
sql>lsnrctl status
sql>lsnrctl stop
sql>shutdown immediate;
實例:顯示指定實例的狀態
srvctl status instance -d mydb -i mydb,mydb
具體操作截圖如下: