oracle spfile&pfile 的作用

spfile&pfile
 

1.參數文件的定義、作用
  oracle數據庫通過一系列參數來對數據庫進行配置。這些參數是以鍵-值對的形式來表 示的,如:
MAXLOGFILES=50
BACKGROUND_DUMP_DEST=C:/DUMP
其中,等號左邊是參數名,右邊是對應的參數的值,值的類型有多種,典型的如數字和 字符串.

  參數文件就是存儲這些參數的地方,oracle在啓動時會從參數文件中讀取相關的配置。

2.參數文件的分類
  在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來鑑別,如果當 前使用的不是spfile,則相應格式的create pfile會產生錯誤。另一種方法是show   parameter   spfile命令,用來顯示spfile的位置,如果顯示的值爲空,則表示使用的是pfile。

3.參數文件的動作原理
  oracle實例在啓動時,會去讀取參數文件中的配置,這個過程是這樣的:
數據庫的startup命令中可以指定以哪個pfile來啓動,但是請注意,只能指定pfile,不 能指定spfile。
當使用不帶pfile 子句的startup 命令時,Oracle 將從平臺指定的默認位置上的服務器 參數文件(spfile) 中讀取初始化參數。Oracle查找spfile或者創通的init.ora的順序 是:在平臺指定的默認位置上,Oracle首先查找名爲spfile$ORACLE_SID.ora的文件,如 果沒有就查找spfile.ora文件,還沒有的話,就找init$ORACLE_SID.ora文件。
在$ORACLE_BASE/admin/db_name/spfile下,你很可能可以看到一個類似這樣init.ora.1 92003215317]名字的文件,這就是初始化參數文件,只是跟上了時間戳。對於Oracle920 ,缺省的就使用spfile啓動,但是這個spfile不是憑空而來,而是根據這個文件創建而來 ,你可以去掉這個長後綴,就是標準的pfile文件了。
對於Windows NT 和Windows 2000   ,其位置是:$ORACLE_HOME/database/spfile$ORACLE_SID.ora。
  數據庫在啓動後,參數的配置值可以通過查詢數據字典v$parameter得到。

4.參數文件的修改方法
  分爲手動修改和在線修改。
  手動修改用於修改pfile,直接用文本編輯打開pfile修改。要使用修改生效,須重 啓數據庫。
  在線修改是在數據庫運行時,用alter system命令進行修改,命令如下(詳細的命令 語句請參考oracle官方參考文檔):
sql>alter system set job_queue_processed=50 scope=MEMORY
注意,scope=MEMORY表示應用範圍,取值如下:
SPFILE:修改只對SPFILE有效,不影響當前實例,需要重啓數據庫才能生效;
MEMORY:修改只對內存有效,即只對當前實例有效,且立即生效,但不會保存到SPFILE, 數據庫重啓後此配置丟失;
BOTH:顧名思義,包含以上兩種,立即生效,且永久生效。
  對於ALTER SYSTEM的參數修改命令,請注意以下幾點:
第一,如果當前實例使用的是pfile而非spfile,則scope=spfile或scope=both會產生錯 誤;
第二,如果實例以pfile啓動,則scope的默認值爲MEMORY,若以spfile啓動,則默認值爲 BOTH;
第三,可以使用DEFERRED表示所作修改只適用於將來的會話,還可以使用COMMENT寫入注 釋,如:ALTER SYSTEM SET JOB_QUEUE_PROCESSES=50 SCOPE=BOTH DEFERRED COMMENT=" 註釋"
第四,刪除參數的方法如下:ALTER SYSTEM SET PARAMETER='';

5.創建參數文件
  對於pfile,你可以用文本編輯器直接手工編輯一個,也可以使用create pfile命令 從spfile創建,如:CREATE PFILE='C:/PFILE/MYPFILE.ORA' FROM   SPFILE='D:/SPFILE/MYSPFILE.ORA',或者從當前實例所使用的spfile創建:create   pfile='c:/pfile/mypfile.ora' from spfile。
  創建spfile的命令如下:CREATE SPFILE FROM PFILE='C:/PFILE/MYPFILE'。

本篇介紹常用參數

AUDIT_FILE_DEST
參數類型:字符串
語法:AUDIT_FILE_DEST = 'directory'
默認值:ORACLE_HOME/rdbms/audit
參數類別:靜態
AUDIT_FILE_DEST定義Oracle存儲審計文件的路徑。

AUDI_SYS_OPERATIONS
參數類型:布爾
默認值:false
參數類別:靜態
取值範圍:true或false
AUDI_SYS_OPERATIONS用來設置是否要對以SYSDBA或SYSOPER登錄的用戶的操作進行審計。審計記錄將會被寫入操作系統的審計跡中。

AUDIT_TRAIL
參數類型:字符串
語法:AUDIT_TRAIL = {NONE|FALSE|DB|TRUE|OS}
默認值:沒有默認值
參數類別:靜態
AUDIT_TRAIL設置是否自動將審計記錄寫入審計軌跡中。值如下:
NONE或FALSE:不寫入。
OS:啓動系統範圍的審計並將審計記錄寫入操作系統的審計軌跡中。
DB或TRUE:啓動系統範圍的審計並將審計記錄寫入數據庫的審計軌跡中(表SYS.AUD$)。
可以使用SQL命令AUDIT來設置審計選項而忽略此參數的設置。
BACKGROUND_DUMP_DEST
參數類型:字符串
語法:BACKGROUND_DUMP_DEST = {相應的操作系統路徑}
默認值:因操作系統而異
參數類別:動態:ALTER SYSTEM
BACKGROUND_DUMP_DEST用來指定後臺進程的跟蹤軌跡文件的存儲路徑。

BLANK_TRIMMING
參數類型:布爾
默認值:false
參數類別:靜態
取值範圍:true|false
BLANK_TRIMMING用來設置字符串賦語義。取值如下:
false:當對兩個字符串變量或列進行賦值時,如果源字符串長度大於目標變量或列的寬度,則無法賦值,將產生錯誤;
true:對兩個字符串變量或列進行賦值時,如果源字符串長度大於目標變量或列的寬度,則超長部分被截除。

CIRCUITS
參數類型:整型
默認值:如果是共享服務器架構,其值爲會話數;如果非共享服務器架構,則值爲0
參數類別:靜態
CIRCUITS用於指定在MTS服務器架構下的虛電路的總數。

CONTROL_FILES
參數類型:字符串
語法:CONTROL_FILES = 文件名[,文件名[,...]]
參數類別:靜態
取值範圍:1至8個文件名
實時應用集羣:多個實例必須有相同的設置。
CONTROL_FILES用來指定數據庫的參數文件。參數值裏指定的多個文件是鏡像關係。

CURSOR_SHARING
參數類型:字符串
語法:CURSOR_SHARING = {SIMILAR|EXACT|FORCE}
默認值:EXACT
參數類別:動態:ALTER SESSION,ALTER SYSTEM
CURSOR_SHARING用來指定SQL語句如何共享遊標。值如下:
FORCE:如果SQL表述只是字面上的不一樣,而效果是一樣的,則共享遊標;
SIMILAR:如果SQL表述只是字面上的不一樣,效果和查詢計劃的維度都一樣,則共享遊標。這比FORCE我了一個限制:查詢計劃的維度;
EXACT:僅當SQL表述在字面上完全相同時才共享遊標。

DB_ nK_CACHE_SIZE
DB_BLOCK_BUFFERS
DB_BLOCK_SIZE
DB_CACHE_SIZE
JAVA_POOL_SIZE
LOG_BUGGER
shared_pool_size
sort_area_size
large_pool_size
statistics_level
SGA_TARGET

以上幾個參數是關於內存數據塊的設置,請參考我前面的文章:《第七篇 再述oracle數據庫體系結構 之三:內存結構與動態內存管理》
DB_DOMAIN
DB_NAME
ORACLE_SID
INSTANCE_NAME

以上幾個參數,請參考我前面的文章:《第三篇 詳解:數據庫名、實例名、ORACLE_SID、數據庫域名、全局數據庫名、服務名》

DB_FILES
參數類型:整型
默認值:200
參數類別:靜態
實時應用集羣:必須爲每一個實例設置這個值,且值必須相等。
DB_FILES用來設置數據庫文件個數的最大值。

DB_WRITER_PROCESSES
參數類型:整型
默認值:1
參數類別:靜態
取值範圍:1至20
DB_WRITER_PROCESSES用來設置數據庫寫進程的個數。

DISPATCHERS
參數類型:字符串
語法:DISPATCHERS = 'dispatch_clause'
dispatch_cluse::=
(PROTOCOL = protocol)|(ADDRESS = address)|(DESCRIPTION = description)[option_clause]
options_clause::=
(DISPATCHERS = integer|SESSIONS= integer|CONNECTIONS = integer|TICKS = second|POOL = {1|ON|YES|TRUE|BOTH|({IN|OUT}=ticks)|0|OFF|NO|FALSE|ticks}|MULTIPLEX = {1|ON|YES|TRUE|0|OFF|NO|FALSE|BOTH|IN|OUT}|LISTENER=tnsname|SERVICE=service|INDEX=integer)
參數類別:動態:ALTER SYSTEM
DISPATCHERS用來配置在共享服務器架構下的dispatcher進程。


FIXED_DATE
參數類型:字符串
語法:FIXED_DATE=yyyy-mm-dd-hh24-mi-ss(或者是一個oracle默認格式的日期時間值)
參數類別:動態:ALTER SYSTEM
FIXED_DATE用來設置SYSDATE的值,使固化或動態變化,如:alter system set fixed_date='2006-01-01',則第次查詢select sysdate from dual的結果都是2006-01-01,若要將其設回當前時間:alter system set fixed_date=none。

IFILE
參數類型:參數文件
語法:IFILE=參數文件名
參數類別:靜態
實時應用集羣:不同的實例可以有不同的設定值
IFILE用來指出一個另一個鏈接的參數文件,這個鏈接的參數文件也是參數文件。我覺得使用這個參數的好處是可以將參數以不同的分類放在多個參數文件中,如:
IFILE=COMMON.ORA
IFILE=DBPARAMS.ORA
IFILE=MEMPARAMS.ORA

LICENSE_MAX_SESSIONS
參數類型:整型
默認值:0
參數類別:動態:ALTER SYSTEM
實時應用集羣:不同的實例可以有不同的設置值,但總數須小於等於數據庫的total number of sessions licensed。
LICENSE_MAX_SESSIONS用於設置實例的最大許可用戶會話數,如果會話數達到這個值,則只允許有RESTRICTED
SESSION權限的用戶才能連接到數據庫。

LICENSE_MAX_USERS
參數類型:整型
默認值:0
Real Application Clusters:Multiple instances should have the same values. If different instances specify different values for this parameter, then the value of the first instance to mount the database takes precedence.
LICENSE_MAX_USERS設置數據庫的最大用戶數,當實際用戶數達到這個限額,將不能再創建用戶。

LOCK_SGA
參數類型:布爾
默認值:false
參數類別:靜態
取值範圍:false|true
LOCK_SGA用來設定是否SGA只使用物理內存。若值爲true,則只使用物理內存,若值爲false,則可以允許使用操作系統的虛擬內存(虛擬內存是操作系統利用磁盤空間來當成內存使用的一種技術)。

LOG_ARCHIVE_DEST
LOG_ARCHIVE_DEST_ n
LOG_ARCHIVE_DEST_STATE_ n
LOG_ARCHIVE_DUPLEX_DEST
LOG_ARCHIVE_FORMAT
LOG_ARCHIVE_MAX_PROCESSES
LOG_ARCHIVE_MIN_SUCCEED_DEST
LOG_ARCHIVE_START
LOG_ARCHIVE_TRACE

以上這幾個參數是關於歸檔日誌的相關設置,這些參數很重要。請參考我前面的文章:《第八篇 再述oracle數據庫體系結構 之四:Oracle實例的進程結構》以及oracle官方參考文檔中相關歸檔日誌的介紹。

LOG_CHECKPOINT_INTERVAL
LOG_CHECKPOINT_TIMEOUT

以上兩個參數是關於檢查點的,請參考我前面的文章:《第八篇 再述oracle數據庫體系結構 之四:Oracle實例的進程結構》

LOG_CHECKPOINTS_TO_ALERT
參數類型:布爾
默認值:false
LOG_CHECKPOINTS_TO_ALERT用於設定是否將檢查點日誌寫入警報文件(alert file)中。

MAX_DISPATCHERS
參數類型:整型
默認值:5
參數類別:靜態
MAX_DISPATCHERS用於在共享服務器架構中,設定DISPATCHER(分配器)的最大數。

MAX_DUMP_FILE_SIZE
參數類型:字符串
語法:MAX_DUMP_FILE_SIZE={integer [K|M]}
默認值:UNLIMITED
參數類別:動態:ALTER SYSTEM,ALTER SESSION
取值範圍:0至UNLIMITED
MAX_DUMP_FILE_SIZE用來設置軌跡文件的最大文件大小。

MAX_ENABLED_ROLES
參數類型:整型
默認值:20
參數類別:靜態
MAX_ENABLED_ROLES用於設定一個用戶可以同時可最多擁有多少個生效的角色。而實際上一個用戶所擁有的有效色是2+MAX_ENABLED_ROLES,因爲每個用戶都默認擁有兩個生效的角色,一個是public,一個是用戶特有的角色。

MAX_ROLLBACK_SEGMENTS
參數類型:整型
默認值:MAX(30, TRANSACTIONS/TRANSACTIONS_PER_ROLLBACK_SEGMENT)
參數類別:靜態
取值範圍:2至65535
MAX_ROLLBACK_SEGMENTS用來設定SGA中最大回滾段的最大值。

MAX_SHARED_SERVERS
參數類型:整型
參數類別:靜態
MAX_SHARED_SERVERS用於設定在共享服務器架構中的最大共享服務器數量。

OPEN_CURSORS
參數類型:整型
默認值:50
參數類別:動態:ALTER SYSTEM
取值範圍:1至4294967295
OPEN_CURSORS用於設定一個會話最多可以同時打開多少個遊標。

PROCESSES
參數類型:整型
參數類別:靜態
PROCESSES用於設置總的實例的進程數限額,包括服務器進程,以及後臺進程、任務進程等。

REMOTE_LOGIN_PASSWORDFILE
參數類型:字符串
語法:REMOTE_LOGIN_PASSWORDFILE={NONE|SHARED|EXCLUSIVE}
參數類別:靜態
此參數用於設置密碼文件的驗證方式,詳見我前面的文章:《第四篇 關於SYS用戶的驗證》。

SESSIONS
參數類型:整型
默認值:(1.1 * PROCESSES) + 5
參數類別:靜態
SESSIONS用於設定系統可創建的最大會話數。


SGA_MAX_SIZE
參數類型:大整型
語法:SGA_MAX_SIZE = integer [K | M | G]
參數類別:靜態
SGA_MAX_SIZE用於設置實例的SGA的大小。

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章