Oracle引數檔案基礎

dba_manganese發表於2014-03-09
在Oracle中,引數檔案是一類較為重要的檔案。在Oracle資料庫啟動時,是通過讀取引數檔案來構建例項的。引數檔案指定了資料庫和例項的名字,記憶體元件的大小和構成,控制檔案的位置,強制和非強制程式的相關設定等資訊。例項啟動後資料庫將處於nomount狀態。

一、引數檔案的型別

1、靜態引數檔案(pfile):靜態引數檔案也稱客戶端初始化檔案,它是文字檔案,通過客戶端工具sqlplus等來讀取並啟動例項。
2、連結引數檔案(ifile):連結引數檔案時在pfile中指定的引數檔案,這裡可以理解為一種引數檔案的通用模板。下面是一個在pfile中使用ifile的例子:

點選(此處)摺疊或開啟

  1. ifile='/u01/oracle/dbs/pfile'
  2. thread=1
  3. instance_name=node1
  4. instance_number=1

點選(此處)摺疊或開啟

  1. ifile='/u01/oracle/dbs/pfile'
  2. thread=2
  3. instance_name=node2
  4. instance_number=2
3、動態引數檔案(spfile):從9i開始,Oracle引入了一種新的引數檔案型別---動態引數檔案。動態引數檔案也稱伺服器端引數檔案,它是二進位制檔案,只能通過alter system命令來修改。修改spfile中的引數的語句如下所示:
alter system set 引數名 = 引數值 scope = memory | spfile | both
說明一下scope各取值的含義:
memory:修改記憶體中的引數值,並立即生效,資料庫重啟後修改失效。
spfile:修改引數檔案中的引數值,無法立即生效,資料庫重啟後方可生效。
both:在memory和spfile中都生效。

二、如何還原引數
還原引數時必須指定sid,根據scope的取值不同,sid應取不同的值。還原引數的語句為:alter system reset 引數名 scope = spfile | memory sid='sid' | '*'
1、當scope=spflie時,sid='*',否則將會報錯。
SQL> show parameter log_archive_dest_1
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_1                   string      LOCATION=/u02/arch_log
log_archive_dest_10                  string
SQL> alter system reset log_archive_dest_1 scope=spfile sid='*';
System altered.
重啟後再次檢視該引數
SQL> show parameter log_archive_dest_1
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_1                   string
log_archive_dest_10                  string
2、當scope=memory時,sid='sid',否則將會報錯,但此時reset並不成功。
SQL> show parameter log_archive_dest_1
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_1                   string      LOCATION=/u02/arch_log
log_archive_dest_10                  string
SQL> alter system reset log_archive_dest_1 scope=spfile sid='testdb';
System altered.
SQL> show parameter log_archive_dest_1
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_1                   string      LOCATION=/u02/arch_log
log_archive_dest_10                  string
3、reset時,由於不同的scope所使用的sid是不一樣的,所以scope不能設定both,否則將會報錯。
SQL> alter system reset log_archive_dest_1 scope=both sid='testdb';
alter system reset log_archive_dest_1 scope=both sid='testdb'
*
ERROR at line 1:
ORA-32010: cannot find entry to delete in SPFILE
SQL> alter system reset log_archive_dest_1 scope=both sid='*';
alter system reset log_archive_dest_1 scope=both sid='*'
*
ERROR at line 1:
ORA-32009: cannot reset the memory value for instance * from instance testdb

三、v$parameter檢視
SQL> select isdefault,ismodified,issys_modifiable,isses_modifiable from v$parameter where name='instance_name';
ISDEFAULT ISMODIFIED ISSYS_MOD ISSES
--------- ---------- --------- -----
TRUE      FALSE      FALSE     FALSE
isdefault:該欄位說明引數是否為預設值。
ismodified:該欄位說明引數可在何種環境下修改:modified(會話級)、system_modified(系統級)、false(例項啟動後不能修改)。
issys_modifiable:該欄位說明將對引數做何種修改:immediate(修改立即生效)、deferred(延遲生效)、spfile(重啟後生效)。
isses_modifiable:該欄位說明引數是否可在session級修改。

四、其他和引數檔案相關知識

1、Oracle引數檔案預設儲存位置:在Linux(unix)中,其儲存在$ORACLE_HOME/dbs目錄下,在windows中,其儲存在$ORACLE_HOME\database目錄下。
2、根據spfile建立pfile:create pfile='/u02/backup' from spfile
3、根據pfile建立spfile:create spfile from pfile='u02/backup'
4、Oracle啟動時,讀取引數檔案的順序:spfile@.ora ---&gt spfile.ora ---&gt init@.ora(init.ora)
5、使用指定的引數檔案啟動資料庫:startup nomount pfile='引數檔名',如果引數檔案不再當前路徑,需新增路徑資訊。
6、如何確定例項使用何種引數檔案:
    SQL> show parameter spfile
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    spfile                               string      /u01/app/oracle/product/10.2.0
                                                     /db_1/dbs/spfiletestdb.ora


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

相關文章