Oracle引數檔案解析——引數檔案分析獲取

realkid4發表於2011-06-03

 

Oracle引數檔案(Parameter File)是Oracle資料庫中一個重要的檔案組成部分,負責在啟動階段提供重要的引數支援。正確配置的引數檔案可以保證啟動過程順利進行。

 

 

1、從啟動過程看引數檔案

 

首先說說啟動過程中,引數檔案Parameter File的作用。Oracle啟動過程共分為三個階段:nomountmountopen。其中,涉及到nomount階段的重要檔案就是引數檔案。在nomount階段,詳細配置資訊流如下:

 

ü        透過環境變數定位啟動例項物理位置和引數檔案位置

 

在資料庫例項停止的狀態下,使用者透過sqlplus登入空閒例項,主要認證方式是OS驗證或者密碼檔案Password File。此時,Oracle需要確定啟動的例項名稱和對應的Oracle程式檔案是什麼?解決的方法就是利用作業系統的環境變數。

 

Linux系統上,我們從安裝時就要進行一系列的環境變數配置。如下:

 

//獲取以ORA開頭的環境變數

[oracle@oracle11g ~]$ env | grep ORA

ORACLE_SID=wilson

ORACLE_BASE=/u01

ORACLE_HOME=/u01/oracle

 

 

$ORACLE_SID$ORACLE_BASE$ORACLE_HOME是環境變數中最重要的三個。分別定義了啟動資料庫例項的名稱sid、對應Oracle產品軟體的基礎目錄baseOracle資料庫安裝的Home路徑。在啟動sqlplus的時候,三個引數都會傳入到sqlplus的上下文環境。

 

在進行startup的時候,開始是nomount階段。Oracle首選去讀取三個環境變數值,找到$ORACLE_HOME對應的目錄結構。目前Oracle目錄結構大都遵循OFAOptimal Flexible Architecture最佳靈活體系結構)。簡單來說,就是將各種配置檔案都遵守相同部署規範和儲存結構。在這個體系中,Linux/Unix描述引數檔案通常都在$ORACLE_HOME/dbsNT體系下目錄為$ORACLE_HOME/database)目錄下。所以,如果可以確定$ORACLE_HOME目錄,就可以找到引數檔案儲存的目錄。

 

ü        確定引數檔名稱

 

由於歷史的原因,Oracle系統分別經歷過二進位制引數檔案和ASCII格式引數兩個時代。目前的Oracle版本,兩型別檔案都可以被支援。區別就是尋找的順序差異。

 

尋找的順序:首先是spfile.ora,該檔案是二進位制格式。如果不存在,Oracle會試圖尋找spfile.ora檔案,該檔案也是二進位制格式。如果兩者都沒有找到,就開始尋找init.ora檔案,最後確定init.ora檔案。

 

注意,此時就需要使用到$ORACLE_SID的環境變數。如果四個檔案都沒有找到,Oracle就會在nomount階段報錯。

 

 

ü        根據引數檔案Parameter File啟動例項

 

nomount階段,Oracle是不會主動進行資料庫檔案的開啟和載入的。這個階段主要完成的就是資料庫例項instance建立,包括backgroud process建立和共享記憶體分配。

 

nomount階段例項程式和共享記憶體建立的詳細解析,請參閱筆者《Oracle啟動三階段》(http://space.itpub.net/17203031/viewspace-684503)系列。

 

 

經過了nomount階段,Oracle實現了資料庫例項的啟動,共享記憶體分配。另一個重要方面就是引數檔案資訊的讀取。下面我們一起檢查下引數檔案中有什麼資訊呢?

 

 

2、獲取引數檔案資訊

 

目前的Oracle版本中,引數檔案主要是使用二進位制spfile檔案儲存的。直接進行修改引數檔案的手段主要是透過啟動Oracle之後,透過alter system/database之類的命令。本篇中,我們可以間接透過將二進位制格式檔案轉化為ASCII格式檔案,來檢視引數內容。

 

判斷資料庫啟動是否是透過SPFILE二進位制格式啟動,只需要檢視引數spfile。如果有value值,就表示啟動的資料庫是使用二進位制格式引數檔案。如果沒有,就是使用ASCII格式檔案。

 

 

SQL> show parameter spfile

 

NAME                        TYPE        VALUE

------------------------------------ ----------- ------------------------------

spfile                          string      /u01/oracle/dbs/spfilewilson.ora

 

 

之後我們到檔案系統中檢視該檔案。

 

//使用file命令檢視格式內容

 

[oracle@oracle11g test]$ file /u01/oracle/dbs/spfilewilson.ora

/u01/oracle/dbs/spfilewilson.ora: data //二進位制格式

 

 

使用create pfile命令將二進位制的spfile匯出為pfile檔案。

 

 

SQL> conn / as sysdba

Connected.

SQL> create pfile='/test/pfile.ora' from spfile;

File created.

 

//切換到檔案系統

[oracle@oracle11g ~]$ cd /test

[oracle@oracle11g test]$ ls -l

total 4

-rw-r--r--  1 oracle oinstall 963 Jun  1 04:49 pfile.ora

[oracle@oracle11g test]$ file pfile.ora

pfile.ora: ASCII text

 

 

展開檔案pfile.ora,可以直接獲取到引數檔案中包括的所有引數。

 

 

[oracle@oracle11g test]$ cat pfile.ora

wilson.__db_cache_size=92274688

wilson.__java_pool_size=4194304

wilson.__large_pool_size=4194304

wilson.__oracle_base='/u01'#ORACLE_BASE set from environment

wilson.__pga_aggregate_target=142606336

wilson.__sga_target=272629760

wilson.__shared_io_pool_size=0

wilson.__shared_pool_size=155189248

wilson.__streams_pool_size=8388608

*.audit_file_dest='/u01/admin/wilson/adump'

*.audit_trail='DB'

*.compatible='11.2.0.0.0'

*.control_files='/u01/oradata/WILSON/controlfile/o1_mf_6bcsqm50_.ctl','/u01/flash_recovery_area/WILSON/controlfile/o1_mf_6bcsqmd8_.ctl'

*.db_block_size=8192

*.db_create_file_dest='/u01/oradata'

*.db_domain=''

*.db_name='wilson'

*.db_recovery_file_dest='/u01/flash_recovery_area'

*.db_recovery_file_dest_size=3145728000

*.diagnostic_dest='/u01'

*.dispatchers='(PROTOCOL=TCP) (SERVICE=wilsonXDB)'

*.memory_target=415236096

*.open_cursors=300

*.processes=150

*.remote_login_passwordfile='EXCLUSIVE'

*.shared_servers=2

*.undo_tablespace='UNDOTBS1'

 

 

相對於Oracle內部控制檔案包括的巨大引數數量,引數檔案Parameter File中包括了一些很核心的重要引數。

 

 

接下來,我們打算針對不同型別對這些引數進行分析和解釋。

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17203031/viewspace-697141/,如需轉載,請註明出處,否則將追究法律責任。

相關文章