水煮Oracle——《Oracle pfile/spfile引數檔案詳解

1向2飛發表於2011-06-08
在建立資料庫時,SPFile檔案中部分必須考慮的引數值:

  基本規則

  a.在SPFile檔案中,所有引數都是可選的,也就是說只需要在初始化引數檔案中列出那些需要修改的引數,其它保持預設值即可。

  b.SPFile檔案中只能包含引數賦值語句和註釋語句。註釋語句以“#”符合開頭,是單行註釋。

  c.SPFile檔案中列出的引數是不分次序的。

  d.SPFile引數的名稱和值是不區分大小寫的,只有在Unix系統中,由於作業系統本身區分檔名稱和路徑的大小寫,才需要在設定引數時注意大小寫問題。

  e.若要在SPFile檔案的同一行設定多個引數,需要使用空格分隔。比如:PROCESSES=100 CPU_COUNT=1 OPEN_CURSORS=10

  f.對於可以具有多個值的初始化引數,需要將所有的值放在一個括號內,並使用逗號進行分隔,比如ROLLBACK_SEGMENTS=(SEG1,SEG2,SEG3,SEG4,SEG5)

  g.在SPFile檔案中,可以使用IFILE引數引用其它的SPFile檔案。

  h.對於具有字串型別值的引數,如果字串中包含空格或製表符,必須使用單引號或雙引號將字串括起來,比如:NLS_TERRITORY="CZECH REPUBLIC"

  常用引數:

  DB_NAME和DB_DOMAIN

  全域性資料庫名通常由本地資料庫標識(DB_NAME)和網路域名(DB_DOMAIN)組成,在網路中唯一標識一個Oracle,在只有一個例項的情況下,DB_NAME與例項標識SID相同。

  全域性資料庫名在資料庫建立後可以更改,使用【Alter DataBase RENAME GLOBAL_NAME】語句,語句執行成功後,必須重啟Oracle並重建控制檔案(重建控制檔案是一件比較危險的工作,因此,建議避免修改全域性資料庫名)。

  DB_NAME同時儲存在資料檔案、控制檔案和重做日誌檔案中,如果DB_NAME引數指定的資料庫名與控制檔案的保持不一致,Oracle將無法啟動。

  CONTROL_FILE

  控制檔案儲存有關於資料庫物理結構的基本資訊,每個Oracle都必須至少擁有一個控制檔案。Oracle建議建立兩個控制檔案,並且應當將他們分別放置在不同點硬碟上。

  DB_Block_Buffer

  這部分記憶體的作用主要是在記憶體中快取從資料庫中讀取的資料塊,資料庫緩衝區越大,為使用者已經在記憶體裡的共享資料提供的記憶體就越大,這樣可以減少所需要的磁碟物理讀寫次數。

  在Oracle 9i以前版本資料庫中,緩衝是由db_block_buffers*db_block_size來決定,db_block_size引數是在建立資料庫時設定的,它決定資料庫裡每個塊的大小,9i以前不能改變已經存在的資料庫的塊大小,因此應該在最初建立資料庫時就確保設定適當的資料庫塊大小。在建立資料庫時設定為8k,db_block_buffers*db_block_size的乘積佔實體記憶體的20%~30%,實體記憶體在1G以內,可以佔20%,1G~2G之間可佔25%,實體記憶體在2G以上,可以佔30%,甚至更高。

  DB_Block_Lru_Latches

  在多CPU機器上通過初始化引數DB_BLOCK_LRU_LATCHES允許多個LRU鎖存器。當DBWR和伺服器程式掃描資料塊緩衝Cache時,它們需要獲取LRU鎖存器。這種鎖存器對於避免緩衝區變髒以及避免被其他程式改變都是必要的,這也避免了掃描時返回不一致的結果。如果沒有使用鎖存器,某個掃描自由緩衝區的程式可能會發現一個自由緩衝區,但是立刻就可能被其他程式使用。每一個LRU 鎖存器至少保護50個資料塊緩衝區。所有緩衝區都被Oracle基於Hash演算法分配到特定的LRU鎖存器之上。如果該值太小,在資料庫活動量很大時就會潛在地導致競爭。在多CPU機器之上這種競爭會高一些,這是因為多個伺服器程式可能排隊以獲取一個LRU Cache。該引數預設值為CPU個數的一半,在多CPU系統中,推薦設為等於CPU數目或CPU數目的2倍~3倍(在Oracle 9i中,該引數已經變為一個隱含引數)。

  DB_BLOC

K_SIZE

  資料庫塊(BLOCK)是Oracle用來管理儲存空間的最小單元,也被稱為Oracle塊,一個Oracle塊可以由一個或多個作業系統快組成。

  Oracle塊的大小在建立Oracle時由DB_BLOCK_SIZE指定,並且在Oracle建立後不能更改。DB_BLOCK_SIZE指定的值為標準Oracle塊的大小,SYSTEM表空間及其其它表空間的預設地使用標準Oracle塊。標準Oracle塊必須是作業系統的整數倍,通常是4KB或8KB,隨著資料庫塊大小的增加,資料庫對記憶體(SGA區)的需求也會隨著增加。

  注:在Oracle9i中,最多支援使用四種不同大小的非標準Oracle塊,可以是2KB、4KB、8KB、16KB或32KB中的任意四個。

  DB_Cache_Size

  SGA區是Oracle例項的重要組成部分,它是由作業系統專門分配給Oracle使用的一塊共享記憶體區。

  該引數直接指定SGA區中資料庫告訴快取區的大小(以KB或MB為單位),動態引數,可以在例項執行過程中動態改變。

  DB_File_MultibLock_Read_Count

  該引數主要同全表掃描有關。當Oracle在請求大量連續資料塊的時候,該引數控制塊的讀入速率。DB_FILE_MULTIBLOCK_READ_COUNT引數能對系統效能產生較大的影響,它和DB_BLOCK_SIZE引數之間有重要關係。因為在Unix物理層上,Oracle總是以最小64K的資料庫塊進行讀入,因此應該使這2個引數的乘積為64K。即如果DB_BLOCK_SIZE為8192,則DB_FILE_MULTIBLOCK_READ_COUNT應設為8。

  DB_nK_CACHE_SIZE

  如果要在資料庫中使用非標準塊,除了使用DB_CACHE_SIZE引數外,至少還要指定一個DB_nK_CACHE_SIZE引數。

  DB_nK_CACHE_SIZE一共有5個:DB_2K_CACHE_SIZE、DB_4K_CACHE_SIZE、DB_8K_CACHE_SIZE、DB_16K_CACHE_SIZE、DB_32K_CACHE_SIZE

  DB_Queue_Process

  該引數指定每個例程的SNP作業佇列程式的數量。當使用job或複製時,一定要設定該引數,推薦設為3或4。並行查詢中需要設定的引數

  並行查詢僅當在多CPU處於空閒狀態且資料分佈在不同磁碟時才會對某些查詢(有全表掃描操作)的效能產生有益的影響,而且即使在這種情況下,並行查詢伺服器的最大數量最好也不要超過CPU的數量。這裡面應該修改的引數如下。
  
   DML_Locks

  該參數列示所有使用者獲取的表鎖的最大數量。對每個表執行 DML 操作均需要一個 DML鎖。例如,如果3個使用者修改 2 個表,就要求該值為 6。該值過小可能會引起死鎖問題。這個引數同transaction引數有關係,預設為4倍的transaction大小。建議該引數不應該低於600,可以檢查系統的當前值,若比600小,則將transaction引數改為150以上,dml_locks引數會自動變為transaction的4倍。

  Java_Pool_Size

  Oracle 8i以後版本中,Oracle資料庫內建了對Java的支援,短訊息系統並未使用這些功能,因此java_pool_size的值可以減少到1M。但如果資料庫安裝時選擇了JServer元件,則這個值可以設定為20M~30M之間。(可以查詢v$option動態檢視,如果java那一項值為true,則表示安裝了JServer,為false,表示未安裝)。

  Large_Pool_Size

  Oracle的large_pool用於MTS、並行查詢和RMAN。如果使用了MTS或RMAN,large_pool特別有用,它可以降低使用者對shared_pool的爭用,這個引數不推薦設定。(或設為1M)。

  Log_Buffer

  Log_buffer是重做日誌緩衝區,對資料庫的任何修改都按順序被記錄在該緩衝,然後由LGWR程式將它寫入磁碟。LGWR的寫入條件是:使用者提交、有1/3重做日誌緩衝區未被寫入磁碟、有大於1M重做日誌緩衝區未被寫入磁碟、超時、DBWR需要寫入的資料的SCN 號大於LGWR記錄的SCN 號,DBWR 觸發LGWR寫入。從中可以看出,大於1M的log buffer值意義並不大,建議不論實體記憶體多大,該值統一設為1M。

  Log_CheckPoint_Interval

  該引數同檢查點有關,檢查點由ckpt 程式執行,檢查點發生時Oracle會同步資料檔案、控制檔案和redo檔案。該引數指定當寫入重做日誌檔案中的OS 塊 (而不是資料庫塊) 的數量達到設定值時,強制執行一次檢查點。該值較低可以縮短例程恢復所需的時間,但可能導致磁碟操作過量。在Oracle 8i中該值預設為100000。當值為0時,表示此引數不起作用。該引數的設定需要考慮的因素較多,建議使用預設值。

  Log_CheckPoint_TimeOut

  該引數仍然同檢查點有關。它指定距下一個檢查點出現的最大時間間隔(秒數)。將該時間值指定為0,將禁用以時間為基礎的檢查點。較低的值可以縮短例程恢復的時間,但可能導致磁碟操作過量。在8i中該值預設為1800。如果想強制某一時間段後執行檢查點,則用此選項。不建議修改該值。

  Open_Cursors

  指定一個會話一次可以開啟的遊標 (環境區域) 的最大數量,並且限制PL/SQL使用的PL/SQL遊標快取記憶體的大小,以避免使用者再次執行語句時重新進行語法分析。請將該值設定得足夠高,這樣才能防止應用程式耗盡開啟的遊標。此值建議設定為250~300。

  PGA_Aggregate_Target

  該引數指定連線到例程的所有伺服器程式的目標 PGA 總記憶體。建議對該值設定為每1G記憶體增加100M,但最大不要超過500M。設定了workarea_size_policy和pga_aggregate_target引數後,不用再設定sort_area_size等引數。

  PROSESSES

  指定Oracle能夠併發執行的作業系統程式的最大數目。最小值是6(每個資料庫至少啟動5個後臺程式和一個使用者程式)

  Re_Page_SGA

  該參數列示將把所有SGA裝載到記憶體中,以便使該例項迅速達到最佳效能狀態。這將增加例程啟動和使用者登入的時間,但在記憶體充足的系統上能減少缺頁故障的出現。建議在2G以上(含2G)記憶體的系統都將該值設為true。

  Session_Cached_Cursor

  該引數指定要快取記憶體的會話遊標的數量。對同一SQL語句進行多次語法分析後,它的會話遊標將被移到該會話的遊標快取記憶體中。這樣可以縮短語法分析的時間,因為遊標被快取記憶體,無需被重新開啟。設定該引數有助於提高系統的執行效率,建議無論在任何平臺都應被設為50。

  SHARED_POOL_Reserved_SIZE

  它的作用是在shared pool中保留一塊區域以放置一些大物件(如大型軟體包),如不設定此引數,系統預設保留5%的shared pool空間用於放置大物件,不建議設定該引數,讓系統自動分配即可。

  SHARED_POOL_SIZE

  該引數用於設定SGA區中共享池的大小,共享池用於存放解析後的SQL和PL/SQL語句,以及由多個服務程式共享的會話資訊。動態引數。

  SGA_Max_Size

  該引數用於限制SGA區所能使用的最大記憶體空間,儘管SGA區中資料庫快取記憶體區、共享池等元件的大小在Oracle9i中都能動態調整,只要SGA區不大於該值,就可以動態調整資料庫緩衝區和share pool的大小。建議該值取實體記憶體的50%。

  Sort_area_retained_size

  這個引數的含義是當排序完成後至少為session繼續保留的排序記憶體的最小值,該值最大可設為等於Sort_area_size。這樣設定的好處是可以提高系統效能,因為下次再做排序操作時不需要再臨時申請記憶體,缺點是如果Sort_ara_size設得過大並且session數很多時,將導致系統記憶體不足。建議該值設為Sort_area_size的10%~20%左右,或者不設定(預設為0)。

  Sort_area_size

  該引數是當查詢需要排序的時候,Oracle將使用這部分記憶體做排序,當記憶體不足時,使用臨時表空間做排序。這個引數是針對會話(session)設定的,不是針對整個資料庫。即如果應用有170個資料庫連線(session),假設這些session都做排序操作,則Oracle會分配8×170等於1360M記憶體做排序,而這些記憶體是在Oracle的SGA區之外分配的,即如果SGA區分配了1.6G記憶體,Oracle還需要額外的1.3G記憶體做排序。

  建議該值設定不超過3M,當實體記憶體為1G時,該值宜設為1M或更低(如512K);2G時可設為2M;但不論實體記憶體多大,該值也不應超過3M。

  Undo_Management

  由Undo_management引數決定是使用undo tablespace還是使用手工建立的回滾段。如果該引數為auto,則表示使用undo tablespace。為manual,表示使用手工管理回滾段,

  Undo_Retention

  該引數的單位為秒,當undo_management引數為auto時,undo_retention表示在undo_tablespace中保留多長時間的回滾資訊,Oracle 9i的flash_back功能同該值有關。該值設為多大同undo_tablespace的大小有關,在9i R2中預設值為10800,一般情況下已經夠了,不建議修改該引數。

  WorkArea_Size_Policy

  這也是Oracle 9i新引入的引數,如果該引數設為auto,Oracle會為所有的session在SGA區之外分配一塊大的記憶體區域做為UGA,該記憶體由pga_aggregate_target設定。每個session都在這塊大記憶體區中做排序等操作,從而不用再設定其他的“*_area_size” 引數。該值在Oracle 9i中預設設為auto,建議繼續使用預設值。

  Pfile檔案

  Pfile(Parameter File)檔案是基於文字格式的引數檔案,含有資料庫的配置引數。

  Oracle 9i在安裝時為每個資料庫建立了一個Pfile,預設的名稱為“init+例程名.ora”,這是一個文字檔案,可以用任何文字編輯工具開啟。

  下表為資料庫的初始化引數檔案分析:

  ##############################################################################

  # Copyright (c) 1991, 2001, 2002 by Oracle Corporation     Oracle公司版權標識

  IXDBA.NET技術社群

  ##############################################################################

  ###########################################

  # Cache and I/O     快取記憶體和 I/O

  ###########################################

  db_block_size=8192   指定資料塊大小為8KB

  db_cache_size=33554432    指定資料緩衝區為32MB,該值越大,可以減少對資料庫檔案的I/O次數,提高效率

  db_file_multiblock_read_count=16

  ###########################################

  # Cursors and Library Cache   遊標和庫快取記憶體

  ###########################################

  open_cursors=300   指定一個會話一次可以開啟的遊標的最大數量為300,應將該值設定得足夠高,這樣才能防止應用程式耗盡開啟的遊標
   ###########################################

  # Database Identification   資料庫標識

  ###########################################

  db_domain=""   資料庫域名為mynet,加上資料庫名稱db_name構成全域性資料庫名稱

  db_name=cicro   資料庫名稱為myoracle

  ###########################################

  # Diagnostics and Statistics    診斷和統計

  ###########################################

  background_dump_dest=/opt/oracle/admin/cicro/bdump   後臺程式跟蹤檔案目錄

  core_dump_dest=/opt/oracle/admin/cicro/cdump      核心轉儲跟蹤檔案目錄

  timed_statistics=TRUE  收集作業系統的計時資訊,這些資訊可被用來優化資料庫和 SQL 語句

  user_dump_dest=/opt/oracle/admin/cicro/udump    使用者程式跟蹤檔案目錄

  ###########################################

  # File Configuration

  control_files=("/opt/oracle/oradata/cicro/control01.ctl", "/opt/oracle/oradata/cicro/control02.ctl",

  "/opt/oracle/oradata/cicro/control03.ctl")    指定控制檔案的路徑及檔名

  ###########################################

  ###########################################

  # Instance Identification   網路註冊

  ###########################################

  instance_name=test   例程名稱為test

  ###########################################

  # Job Queues

  ###########################################

  job_queue_processes=10

  ###########################################

  # MTS  多執行緒伺服器配置標識,在Oracle 9i裡稱為共享伺服器配置

  ###########################################

  dispatchers="(PROTOCOL=TCP) (SERVICE=testXDB)"   多執行緒伺服器配置

  ###########################################

  # Miscellaneous   其他

  ###########################################

  aq_tm_processes=1

  compatible=9.2.0.0.0   相容版本9.2.0

  ###########################################

  # Optimizer

  ###########################################

  hash_join_enabled=TRUE

  query_rewrite_enabled=FALSE

  star_transformation_enabled=FALSE

  db_name=cicro

  ###########################################

  ###########################################

  # Pools  池

  ###########################################

  java_pool_size=83886080    指定Java儲存池的大小為32MB,用於儲存 Java 的方法、類定義和Java物件。

  large_pool_size=16777216   指定大型池的大小為1MB, 用於共享伺服器的會話記憶體、並行執行的訊息緩衝區以及RMAN備份和恢復的磁碟 I/O 緩衝區。

  shared_pool_size=83886080  指定共享池的大小為32MB,用於儲存共享遊標、儲存的過程、控制結構和並行執行訊息緩衝區等物件。較大的值能改善多使用者系統的效能.

  ###########################################

  # Processes and Sessions  程式和會話

  ###########################################

  processes=150  指定可同時連線到一個Oracle Server上的作業系統使用者程式的最大數量為150

  ###########################################

  # Redo Log and Recovery   重做日誌和恢復

  ###########################################

  fast_start_mttr_target=300   指定從單個資料庫例程崩潰中恢復所需的時間為300秒

  ###########################################

  # Security and Auditing  安全與驗證

  ###########################################

  remote_login_passwordfile=EXCLUSIVE   指定作業系統或口令檔案是否具有檢查使用者口令的許可權。設定為EXCLUSIVE, 將使用資料庫的口令檔案對每個具有許可權的使用者進.

  ###########################################

  # Sort, Hash Joins, Bitmap Indexes   排序, 雜湊聯接, 點陣圖索引

  ###########################################

  pga_aggregate_target=25165824

  sort_area_size=524288   指定排序區使用的最大記憶體量為512KB。排序完成後, 各行將返回, 並且記憶體將釋放。增大該值可以提高大型排序的效率。

  ###########################################

  # System Managed Undo and Rollback Segments   系統管理的撤消和回退段

  ###########################################

  undo_management=AUTO   指定系統使用的撤消空間管理方式為SMU 方式,在SMU方式下, 撤消空間會像撤消表空間一樣在外部分配.

  undo_retention=10800

  undo_tablespace=UNDOTBS1   指定回滾表空間為UNDOTBS

  sPfile檔案

  SPfile(Server Parameter File,伺服器引數檔案)是基於二進位制格式的引數檔案,含有資料庫及例程的引數和數值,但不能用文字編輯工具開啟。

  下面對兩種初始化引數檔案進行比較如表6.2所示。


表6.2 Spfile和Pfile檔案的比較

比較內容  SPfile  Pfile
格式  二進位制格式  文字格式
編輯方式  (1)利用企業管理器對Pfile進行修改,然後轉換為Spfile (2)在SQL Plus裡使用ALTER SYSTEM語句進行修改  (1)利用文字工具直接進行修改 (2)在企業管理器裡修改配置後匯出形成
預設名稱  SPfile+例程名.ora  Init+例程名.ora  實際引數檔案Init.ora
預設路徑  /opt/oracle/product/9.2.0/dbs  Oracle\ora90\database\    Init.ora位於/opt/oracle/product/9.2.0/dbs
啟動次序  SPfile優先於Pfile  Pfile低於Spfile

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

相關文章