探索Oracle pfile和spfile的祕密
判斷ORACLE啟動時使用spfile還是pfile
自Oracle 9i以後啟動的時候預設使用的初始化檔案是spfile,我們可以通過如下三種方式來判斷是SPFILE還是PFILE方式啟動資料庫。
1、show parameter spfile
2、show parameter pfile
3、看v$spparameter檢視
1、show parameter spfile
2、show parameter pfile
3、看v$spparameter檢視
1、通過檢視spfile、pfile檢視
用spfile啟動資料庫:
SQL> show parameter pfile;
NAME TYPE VALUE
------------------------------------ -------- ------------------------------
spfile string C:\ORACLE\PRODUCT\10.2.0\DB_1\
DATABASE\SPFILEWWL.ORA
SQL> show parameter spfile;
------------------------------------ -------- ------------------------------
spfile string C:\ORACLE\PRODUCT\10.2.0\DB_1\
DATABASE\SPFILEWWL.ORA
SQL> show parameter spfile;
NAME TYPE VALUE
------------------------------------ -------- ------------------------------
spfile string C:\ORACLE\PRODUCT\10.2.0\DB_1\
DATABASE\SPFILEWWL.ORA
------------------------------------ -------- ------------------------------
spfile string C:\ORACLE\PRODUCT\10.2.0\DB_1\
DATABASE\SPFILEWWL.ORA
用pfile啟動資料庫
SQL> startup pfile=c:\initwwl.ora
ORACLE instance started.
ORACLE instance started.
Total System Global Area 1610612736 bytes
Fixed Size 2066080 bytes
Variable Size 385878368 bytes
Database Buffers 1207959552 bytes
Redo Buffers 14708736 bytes
Database mounted.
Database opened.
SQL> col type format a8
SQL> show parameter pfile;
Fixed Size 2066080 bytes
Variable Size 385878368 bytes
Database Buffers 1207959552 bytes
Redo Buffers 14708736 bytes
Database mounted.
Database opened.
SQL> col type format a8
SQL> show parameter pfile;
NAME TYPE VALUE
------------------------------------ -------- ------------------------------
spfile string
SQL> show parameter spfile;
------------------------------------ -------- ------------------------------
spfile string
SQL> show parameter spfile;
NAME TYPE VALUE
------------------------------------ -------- ------------------------------
spfile string
SQL>
我們在這裡可以很明顯的發現,使用spfile啟動資料庫,在檢視show parameter pfile和show parameter spfile 都能看到spfile引數檔案的路徑。
反之使用pfile啟動的資料庫,我們無論是檢視show parameter pfile還是show parameter spfile 都無法看到pfile引數檔案的路徑。
------------------------------------ -------- ------------------------------
spfile string
SQL>
我們在這裡可以很明顯的發現,使用spfile啟動資料庫,在檢視show parameter pfile和show parameter spfile 都能看到spfile引數檔案的路徑。
反之使用pfile啟動的資料庫,我們無論是檢視show parameter pfile還是show parameter spfile 都無法看到pfile引數檔案的路徑。
2、通過v$spparameter檢視
使用spfile啟動資料庫,我們可以看到查詢出來的結果是spfile
SQL> select decode(count(*),1,'spfile','pfile') from v$spparameter where rownum=1 and isspecified = 'TRUE';
DECODE(COUNT
------------
spfile
使用pfile啟動資料庫,我們可以看到查詢出來的結果是pfile。
SQL> select decode(count(*),1,'spfile','pfile') from v$spparameter where rownum=1 and isspecified ='TRUE';
SQL> select decode(count(*),1,'spfile','pfile') from v$spparameter where rownum=1 and isspecified = 'TRUE';
DECODE(COUNT
------------
spfile
使用pfile啟動資料庫,我們可以看到查詢出來的結果是pfile。
SQL> select decode(count(*),1,'spfile','pfile') from v$spparameter where rownum=1 and isspecified ='TRUE';
DECODE(COUNT
------------
pfile
自9i後,資料庫預設使用spfile啟動,但是我們也可以指定通過pfile的方式啟動。而且pfile和spfile是可以互相轉換的,並且轉換的話要應用到資料庫必須重啟資料庫。
------------
pfile
自9i後,資料庫預設使用spfile啟動,但是我們也可以指定通過pfile的方式啟動。而且pfile和spfile是可以互相轉換的,並且轉換的話要應用到資料庫必須重啟資料庫。
從spfile建立pfile
SQL> create pfile from spfile;
File created.
SQL> create pfile from spfile;
File created.
從pfile建立spfile
SQL> create spfile from pfile;
File created.
SQL> create spfile from pfile;
File created.
如果在資料庫的$ORACLE_HOME/dbs/目錄下既有spfile又有pfile,使用spfile啟動資料庫,不需要指定引數檔案路徑(因為資料庫會優先選擇spfile啟動),使用pfile啟動,則需指定完整路徑,如例項1。如果引數檔案不在$ORACLE_HOME/dbs/目錄下,無論是通過spfile或pfile啟動均需要指定完整路徑。
例項1:
SQL> startup pfile=$ORACLE_HOME/dbs/initorcl.ora
ORACLE instance started.
Total System Global Area 422670336 bytes
Fixed Size 1300352 bytes
Variable Size 306186368 bytes
Database Buffers 109051904 bytes
Redo Buffers 6131712 bytes
Database mounted.
Database opened.
SQL> startup pfile=$ORACLE_HOME/dbs/initorcl.ora
ORACLE instance started.
Total System Global Area 422670336 bytes
Fixed Size 1300352 bytes
Variable Size 306186368 bytes
Database Buffers 109051904 bytes
Redo Buffers 6131712 bytes
Database mounted.
Database opened.
SQL> show parameter spfile;
NAME TYPE VALUE
------------------------------------ ---------- ------------------------------
spfile string
SQL> show parameter pfile;
NAME TYPE VALUE
------------------------------------ ---------- ------------------------------
spfile string
show parameter spfile和show parameter pfile結果仍然一樣,此時spfile的值為NULL了。
SQL> select decode(count(*),1,'spfile','pfile') from v$spparameter where rownum=1 and isspecified = 'TRUE';
DECODE(COUNT
------------
pfile
NAME TYPE VALUE
------------------------------------ ---------- ------------------------------
spfile string
SQL> show parameter pfile;
NAME TYPE VALUE
------------------------------------ ---------- ------------------------------
spfile string
show parameter spfile和show parameter pfile結果仍然一樣,此時spfile的值為NULL了。
SQL> select decode(count(*),1,'spfile','pfile') from v$spparameter where rownum=1 and isspecified = 'TRUE';
DECODE(COUNT
------------
pfile
spfile和pfile的區別
就Oracle的spfile和pfile的區別主要是spfile的修改是可以線上的,而pfile的修改必須關閉資料庫,到引數檔案所在路徑下通過vi或記事本等文字編輯工具修改。(因為引數檔案裡面的內容太多,編輯起來容易導致錯誤的編輯到其它的引數,從而導致資料庫無法起來,所以在9i以前一般都是要備份pfile後再來做引數的修改,而且修改任何引數都需要停庫,非常的不方便;在9i以後的spfile就可以同通過命令修改指定的引數了,而且有很多引數都不用重啟資料庫,能夠線上生效,這個線上生效的引數會隨著資料庫的版本增高而增加。如果引數修改有問題資料庫起不來了可以在nomount狀態下建立成pfile再修改回來即可。)
就Oracle的spfile和pfile的區別主要是spfile的修改是可以線上的,而pfile的修改必須關閉資料庫,到引數檔案所在路徑下通過vi或記事本等文字編輯工具修改。(因為引數檔案裡面的內容太多,編輯起來容易導致錯誤的編輯到其它的引數,從而導致資料庫無法起來,所以在9i以前一般都是要備份pfile後再來做引數的修改,而且修改任何引數都需要停庫,非常的不方便;在9i以後的spfile就可以同通過命令修改指定的引數了,而且有很多引數都不用重啟資料庫,能夠線上生效,這個線上生效的引數會隨著資料庫的版本增高而增加。如果引數修改有問題資料庫起不來了可以在nomount狀態下建立成pfile再修改回來即可。)
修改spfile引數的三種模式:
scope=both 立即並永久改變,(預設模式)
scope=spfile 下次啟動執行新的改變。
scope=memory 立即臨時改變下次啟動新引數失效
scope=spfile 下次啟動執行新的改變。
scope=memory 立即臨時改變下次啟動新引數失效
spfile 修改的方法:
SQL> alter system set processes = 100 scope=both; ----該引數不支援動態修改,必須修改完後重啟資料庫
alter system set processes = 100 scope=both
*
ERROR at line 1:
ORA-02095: specified initialization parameter cannot be modified
-------------------------------------------------------------------------------------------------------------------------------
SQL> show parameter pga;
alter system set processes = 100 scope=both
*
ERROR at line 1:
ORA-02095: specified initialization parameter cannot be modified
-------------------------------------------------------------------------------------------------------------------------------
SQL> show parameter pga;
NAME TYPE VALUE
------------------------------------ -------- ------
pga_aggregate_target big inte 798M
ger
SQL> alter system set pga_aggregate_target = 500m scope=both; -----該引數支援動態修改,所以就立即生效了
------------------------------------ -------- ------
pga_aggregate_target big inte 798M
ger
SQL> alter system set pga_aggregate_target = 500m scope=both; -----該引數支援動態修改,所以就立即生效了
System altered.
SQL> show parameter pga;
NAME TYPE VALUE
------------------------------------ -------- ------
pga_aggregate_target big inte 500M
ger
SQL>
------------------------------------ -------- ------
pga_aggregate_target big inte 500M
ger
SQL>
SQL> alter system set processes = 100 scope=spfile; ----修改完後重啟資料庫能生效,不信你試試。
System altered.
SQL> alter system set pga_aggregate_target = 700m scope=spfile; ----當然也可以選擇資料庫下次啟動的時候生效。
System altered.
SQL> alter system set processes = 100 scope=memory; ----因為該引數不支援動態修改,同樣也就無法實現立即生效,下次啟動失效。
alter system set processes = 100 scope=memory
*
ERROR at line 1:
ORA-02095: specified initialization parameter cannot be modified
SQL>
SQL> alter system set pga_aggregate_target = 600m scope=memory; ---因為該引數支援動態修改,當然也就可以實現立即生效,下次啟動失效咯。
System altered.
SQL>
如果使用的是pfile則無法通過命令進行修改,會報ORA-02095或32001錯誤。
SQL> alter system set processes = 100;
alter system set processes = 100
*
ERROR at line 1:
ORA-02095: specified initialization parameter cannot be modified
alter system set processes = 100
*
ERROR at line 1:
ORA-02095: specified initialization parameter cannot be modified
SQL> alter system set processes = 100 scope=spfile;
alter system set processes = 100 scope=spfile
*
ERROR at line 1:
ORA-32001: write to SPFILE requested but no SPFILE specified at startup
SQL> alter system set processes = 100 scope=both;
alter system set processes = 100 scope=both
*
ERROR at line 1:
ORA-02095: specified initialization parameter cannot be modified
SQL> alter system set processes = 100 scope=memory;
alter system set processes = 100 scope=memory
*
ERROR at line 1:
ORA-02095: specified initialization parameter cannot be modified
SQL>
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/20674423/viewspace-722669/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle的spfile和pfileOracle
- Oracle中的spfile和 pfileOracle
- Oracle中的pfile和spfileOracle
- Oracle Spfile and pfileOracle
- oracle spfile和pfile小結Oracle
- Oracle 引數檔案(spfile和pfile)Oracle
- 【原創】oracle spfile和pfile小結Oracle
- Oracle Concepts - pfile and spfileOracle
- oracle引數檔案pfile,spfileOracle
- (轉)Oracle中的啟動引數檔案:spfile和pfileOracle
- orcle pfile和spfile的區別和聯絡
- oracle實驗記錄 (PFILE 啟動SPFILE)Oracle
- 水煮Oracle——《Oracle pfile/spfile引數檔案詳解Oracle
- Oracle基礎 07 引數檔案 pfile/spfileOracle
- 如何在pfile中引用spfile來啟動oracleOracle
- 判斷ORACLE啟動時使用spfile還是pfileOracle
- 檢視ORACLE啟動時使用spfile還是pfileOracle
- oracle pfile spfile啟動順序 優先順序 spfilesid 〉 spfile 〉 initsidOracle
- Create spfile from pfile命令要注意
- 關於pfile,spfile的一些命令
- 檢視 Oracle 是用spfile 啟動還是 pfile 啟動Oracle
- oracel體系結構梳理----控制檔案以及pfile和spfile
- Rac中使用create pfile from spfile後的解決方法
- 探索HTTP傳輸中gzip壓縮的祕密HTTP
- nomount的時候是必須讀取pfile或者spfile檔案的。
- Flutter和原生之間的祕密Flutter
- 11.2版本alert日誌中記錄了pfile或者spfile的全路徑
- Oracle修改spfile的位置Oracle
- 室友的Zip加密檔案探祕,Python解決Zip加密檔案探索祕密!加密Python
- Oracle啟動找不到spfile或者pfile提示ORA-01078,利用init.ora手工建立Oracle
- Oracle專家調優祕密(轉)Oracle
- Oracle專家調優祕密(zt)Oracle
- Eventloop的祕密OOP
- Deep和Cross不得不說的祕密ROS
- 【問題處理】恢復因誤生成PFILE 導致RAC的SPFILE無效的問題
- oracle中spfile的預設位置Oracle
- Oracle ASM spfile in a disk groupOracleASM
- 一窺圖靈的祕密——matrix67評《圖靈的祕密》圖靈