一、伺服器初始化參數檔案概述
oracle的初始化參數檔案儲存了資料庫執行個體建立和啟動時所必須的初始化參數配置資訊。
初始化參數檔案損壞,資料庫無法啟動。
11g中,初始化參數有341個,分顯式和隱式兩種。
9i之前的版本,將顯式參數及其儲存在一個文字檔中,稱之為文本初始化參數檔案。預設名稱為INIT<SID>.ORA。預設位置為%ORACLE_HOME%/database目錄。
11g資料庫在建立的時候,自動在%ORACLE_DATABASE%/admin/<SID>/pfile目錄。
文本初始化參數檔案時本地的一個初始化參數檔案,無論啟動本機資料庫還是遠端資料庫,都需要讀取本地的一個文本初始化參數檔案,並使用其中的參數設定來設定資料庫執行個體。因此要遠程啟動資料庫,必須在遠程主機中儲存一份初始化參數檔案的副本。此外,文本初始化參數檔案的修改必須通過管理手動進行。
由於以上原因,9i之後的資料庫中引入了伺服器初始化參數檔案。伺服器初始化參數檔案是一個儲存在資料庫伺服器端的二進位檔案。執行個體會自動從伺服器中讀取伺服器初始化參數檔案。此外,在資料中執行alter system語句對初始化參數進行了修改,在預設情況下(socope=both),都會永久的記錄在伺服器初始化參數檔案中。
伺服器初始化參數檔案是使用create spfile 語句基於已有的文本初始化參數檔案建立的。在使用dbca建立資料庫時自動建立伺服器初始化參數檔案。伺服器初始化參數檔案預設名稱為SPFILE<SID>.ORA。預設位置存放於%ORACLE_HOME%/dbs目錄。 可以使用記事本或者寫字板等方式開啟伺服器初始化參數檔案,並查看其中內容。但是不可以修改其中內容。否則導致檔案損壞。
在執行startup語啟動資料庫時,系統按照下列順序尋找初始化參數檔案:
1、檢查是否用pfile參數指定了文本初始化參數檔案
2、如果沒有使用pfile參數,則在預設位置尋找預設名稱伺服器初始化參數檔案
3、沒有找到預設的伺服器初始化參數檔案,則在預設的位置尋找預設名稱的文本初始化參數檔案
可以用show parameter spfile 命令或者查詢動態效能檢視v$parameter查看當前資料庫所使用的伺服器初始化參數檔案 二、建立伺服器初始化參數檔案
1、建立一個文本初始化參數檔案,檔案中包含顯式初始化參數,並將該檔案存放在資料庫伺服器上。
文本初始化參數檔案建立時需要注意以下事項:
*初始化參數檔案中只對需要設定的初始化參數進行設定,其他採用系統預設
*初始化參數檔案只能包括指派陳述式和備註陳述式,備註陳述式以#開頭,單行
*初始化參數檔案的參數部分前後次序,參數名稱與值不區分大小寫
*如果一行設定多個參數,需要用空格隔開
*如果參數具有多個值,將這些值用括弧括起來,用逗號隔開
*對於具有字串類型值的參數,如果字元創中包含空格或者定位字元,必須使用單引號或雙引號字串引起來
2、以sysoper或者sysdba身份串連到oracle資料庫
3、利用文本初始化參數檔案建立伺服器初始化參數檔案
create spfile=[='spfile name'] from pfile[='spfile name']|memory;
三、常用初始化參數: processes = 150 說明: 指定可同時串連到一個 Oracle Server上的作業系統使用者進程的最大數量。該值應允許執行所有後台進程, 如: 作業隊列 (SNP) 進程和並存執行 (Pnnn) 進程。 值範圍:6 到根據作業系統而定的一個值。 預設值: 由 PARALLEL_MAX_SERVERS 確定 timed_statistics= TRUE 說明: 收集作業系統的計時資訊, 這些資訊可被用來最佳化資料庫和 SQL 陳述式。要防止因從作業系統請求時間而引起的開銷, 請將該值設定為零。將該值設定為 TRUE 對於查看長時間操作的進度也很有用。 值範圍: TRUE | FALSE 預設值:FALSE shared_pool_size = 50331648 說明: 以位元組為單位, 指定共用池的大小。共用池包含如: 共用遊標,儲存的過程, 控制結構和並存執行訊息緩衝區等對象。較大的值能改善多使用者系統的效能。 值範圍:300 KB - 根據作業系統而定。預設值: 如果是 64 位元作業系統, 值為 64MB; 其他情況下, 值為 16MB。 large_pool_size = 8388608 說明 : 指定大型池的分配堆的大小, 它可被共用伺服器用作會話記憶體,用作並存執行的訊息緩衝區以及用作 RMAN備份和恢複的磁碟 I/O 緩衝區。 值範圍: 600K (最小值); >= 20000M (最大值是根據作業系統而定的)。 預設值 : 0, 除非配置了並存執行或 DBWR_IO_SLAVES java_pool_size = 33554432 說明: 以位元組為單位, 指定 Java 儲存池的大小, 它用於儲存 Java的方法和類定義在共用記憶體中的標記法, 以及在調用結束時移植到 Java 會話空間的 Java 對象。 值範圍: 根據作業系統而定。
預設值: 根據作業系統而定 control_files = d:\oracle\oradata\mydb\CONTROL01.CTL,d:\oracle\oradata\mydb\CONTROL02.CTL,d:\oracle\oradata\mydb\CONTROL03.CTL 說明: 指定一個或多個控制檔案名稱。Oracle建議對於不同裝置或 OS 檔案鏡象使用多個檔案。 值範圍: 1 - 8 檔案名稱 (帶路徑名)。 預設值: 根據作業系統而定 db_block_size = 8192 說明: 一個 Oracle 資料庫塊的大小 (位元組)。該值在建立資料庫時設定,而且此後無法更改。 值範圍: 1024 - 65536 (根據作業系統而定)。 預設值: 2048 (根據作業系統而定) db_cache_size = 25165824 說明: 為快取指定標準塊大小的緩衝區。 值範圍: 至少 16M。 預設值: 48M compatible = 9.2.0.0.0 說明: 允許您使用一個新的發行版, 同時保證與先前版本的向後相容性。 值範圍:預設為當前發行版。 預設值: 由發行版確定 db_file_multiblock_read_count= 16 說明: 在涉及一個完全連續掃描的一次 I/O操作過程中讀取的塊的最大數量。 值範圍: 根據作業系統而定。 預設值: 8 fast_start_mttr_target = 300 說明: 指定從單個資料庫常式崩潰中恢複所需的時間 (估計秒數)。 FAST_START_MTTR_TARGET 將在內部被轉換為一組參數, 用於修改資料庫的操作, 從而將它的恢復控制在總 “恢複平均時間 (MTTR)” 中的一定範圍之內。只有具有 “快速啟動故障恢複” 功能的版本才支援此參數。 值範圍: [0,3600]。它將計算資料緩衝區快取條目數之上, 且大於最大日誌中的塊數的限值。 預設值: 0 undo_management = AUTO 說明: 指定系統應使用哪種撤消空間管理員模式。如果設定為 AUTO, 常式將以 SMU模式啟動。否則將以 RBU 模式啟動。在RBU 模式下, 撤消空間會象回退段一樣在外部分配。在 SMU 模式下,撤消空間會象撤消資料表空間一樣在外部分配。 值範圍: AUTO 或 MANUAL 預設值: 如果啟動第一個常式時忽略了UNDO_MANAGEMENT 參數, 則將使用預設值 MANUAL, 並且常式將以 RBU模式啟動。如果這不是第一個常式, 則將按其他現有常式啟動時使用的撤消模式來啟動該常式。
undo_tablespace = UNDOTBS1 說明: 撤消資料表空間僅用於儲存撤消資訊。UNDO_TABLESPACE僅允許在系統管理撤消 (SMU)模式下使用。常式將使用指定的撤消資料表空間,<undoname>。如果該資料表空間不存在,或不是撤消資料表空間, 或正在由另一常式使用, 則常式 STARTUP 將失敗。 預設值: 每個資料庫都包含 0 個或更多的撤消資料表空間。在SMU 模式下, 將為每個 ORACLE 常式分配一個 (且僅限一個) 撤消資料表空間。
undo_retention = 10800 說明: UNDO_RETENTION
參數用來指定要在資料庫中保留的已提交的撤消資訊總量。可在常式啟動時設定該參數值。可以計算滿足撤消保留要求所需的撤消空間量:UndoSpace = RD * UPS, 其中 UndoSpace 以撤消塊數來表示, RD 用以秒為單位的UNDO_RETENTION 來表示, UPS 以每秒撤消塊數來表示。 值範圍: 所允許的最大值為 (2 ** 32) 秒。預設值: 30 秒。
remote_login_passwordfile= EXCLUSIVE 說明:指定作業系統或一個檔案是否檢查具有許可權的使用者的口令。如果設定為 NONE, Oracle將忽略口令檔案。如果設定為EXCLUSIVE, 將使用資料庫的口令檔案對每個具有許可權的使用者進行驗證。如果設定為 SHARED,多個資料庫將共用 SYS 和 INTERNAL 口令檔案使用者。 值範圍:NONE | SHARED | EXCLUSIVE預設值: NONE
db_domain = 說明: 指定資料庫名的副檔名 (例如:US.ORACLE.COM) 為使一個域中建立的資料庫名唯一,建議指定該值。 值範圍: 由句點分隔的任何字串, 最長可以有 128 個字元。 預設值: WORLD
instance_name = mydb 說明: 在多個常式使用相同服務名的情況下,用來唯一地標識一個資料庫常式。INSTANCE_NAME 不應與 SID 混淆,它實際上是對在一台主機上共用記憶體的各個常式的唯一標識。 值範圍: 任何字母數字字元。 預設值: 資料庫 SID
dispatchers = (PROTOCOL=TCP) (SERVICE=mydbXDB) 說明 :為設定使用共用伺服器的共用環境而設定發送器的數量和類型。可以為該參數指定幾個選項。有關詳細資料, 請參閱“Oracle8i管理員指南”和“Oracle Net Administrator's Guide”。這是字串值的一個樣本:’(PROTOCOL=TCP)(DISPATCHERS=3)‘。 值範圍: 參數的有效指定值。 預設值 : NULL
job_queue_processes = 10 說明: 只用於複製環境。它指定每個常式的 SNP 作業隊列進程的數量 (SNP0, ... SNP9, SNPA, ... SNPZ)。要自動更新錶快照或執行由 DBMS_JOB 建立的請求,請將該參數設定為 1 或更大的值。 值範圍: 0 到 36 預設值: 0
hash_join_enabled = TRUE 說明: 如果設定為 TRUE,最佳化程式將在計算最有效聯結方法時考慮散列聯結。Oracle 建議資料倉儲應用程式應使用 TRUE值。 值範圍: TRUE |FALSE 預設值: TRUE
background_dump_dest = d:\oracle\admin\mydb\bdump 說明: 指定在Oracle操作過程中為後台進程 (LGWR, DBW n 等等)寫入追蹤檔案的路徑名(目錄或磁碟)。它還定義記錄著重要事件和訊息的資料庫預警檔案的位置。 值範圍: 任何有效目錄名。 預設值: ORACLE_HOME/rdbms/log(根據作業系統而定)
user_dump_dest =d:\oracle\admin\mydb\udump 說明:為伺服器將以一個使用者進程身份在其中寫入調試追蹤檔案的目錄指定路徑名。例如, 該目錄可這樣設定: NT 作業系統上的
C:/ORACLE/UTRC; UNIX 作業系統上的 /oracle/utrc; 或 VMS作業系統上的DISK$UR3:[ORACLE.UTRC]。 值範圍: 一個有效本地路徑名, 目錄或磁碟。 預設值: 根據作業系統而定
core_dump_dest = d:\oracle\admin\mydb\cdump 說明: 指定核心轉儲位置的目錄名(用於UNIX)。 值範圍: 任何有效目錄名。 預設值: ORACLE_HOME/dbs
sort_area_size = 524288說明: SORT_AREA_SIZE 以位元組為單位,指定排序所使用的最大記憶體量。排序完成後, 各行將返回,並且記憶體將釋放。增大該值可以提高大型排序的效率。如果超過了該記憶體量,將使用臨時磁碟段。 值範圍: 相當於 6 個資料庫塊的值(最小值) 到作業系統確定的值 (最大值)。 預設值: 根據作業系統而定
db_name = mydb 說明: 一個資料庫標識符, 應與CREATE DATABASE 語句中指定的名稱相對應。 值範圍:任何有效名稱最多可有 8 個字元。 預設值: 無 (但應指定)
open_cursors = 300 說明: 指定一個會話一次可以開啟的遊標 (環境地區) 的最大數量, 並且限制 PL/SQL使用的 PL/SQL遊標快取的大小, 以避免使用者再次執行語句時重新進行文法分析。請將該值設定得足夠高,這樣才能防止應用程式耗盡開啟的遊標。 值範圍: 1 - 作業系統限制值。 預設值: 64
star_transformation_enabled= FALSE 說明: 確定基於成本的查詢轉換是否將被應用到星型查詢中。如果設定為TRUE, 最佳化程式將考慮將基於成本的轉換應用於星型查詢中; 如果設定為FALSE, 將不使用任何轉換; 如果設定為TEMP_DISABLE, 將考慮查詢轉換, 但不使用暫存資料表。 值範圍: TRUE |FALSE | TEMP_DISABLE 預設值: FALSE
query_rewrite_enabled = FALSE 說明:啟用或禁用對實體化視圖的查詢重寫。一個特定實體化視圖只在如下條件下啟用: 會話參數和單獨實體化視圖均已啟用,並且基於成本的最佳化已啟用。 值範圍: TRUE | FALSE 預設值: FALSE
pga_aggregate_target = 25165824 說明: 指定串連到常式的所有伺服器處理序的目標 PGA總記憶體。請在啟用自動化佈建工作區之前將此參數設定為一個正數。這部分記憶體不駐留在SGA 中。資料庫將此參數值用作它所使用的目標 PGA記憶體量。設定此參數時, 要將 SGA 從可用於 Oracle常式的系統記憶體總量中減去。然後可將剩餘記憶體量分配給pga_aggregate_target。 值範圍: 整數加字母 K, M 或 G, 以將此限值指定為KB,MB或千MB。最小值為 10M, 最大值為 4000G 預設值: “未指定”, 表示完全禁用對工作區的自動最佳化。
aq_tm_processes = 1 說明: 如果大於零, 就會啟用對隊列訊息的時間監視。該時間值可用於指定訊息的延遲和失效屬性(用於應用程式的開發)。 值範圍: 0 - 10 預設值: 0 四、修改初始化參數:
1、alter session set····· 回話級修改
2、alter system set·····
動態初始化參數:修改後立即生效,作用於當前資料庫執行個體
靜態初始化參數:初始化參數修改後在當前執行個體中不會生效,參數被儲存到伺服器初始化參數檔案中,下次重新啟動資料庫生效
scope=spfile。只能修改伺服器初始化參數檔案的參數值,對於當前資料庫執行個體沒有影響。適用於動態參數和靜態參數的修改scope=memory。只能修改記憶體中的初始化參數值。只適合於動態參數的修改,當前執行個體立即生效
scope=both。 修改記憶體中的和初始化參數檔案中的。是適合動態參數檔案修改
3、可用alter system resetparameter_name=parameter_value;清除某個顯式參數。清除後恢複系統預設 五、匯出伺服器初始設定檔案參數
可以使用create pfile語句將伺服器初始化參數檔案匯出為一個文本初始化參數檔案。下列情況下可以考慮匯出:
1、建立伺服器初始化參數檔案的備份
2、為了便於診斷資料庫故障原因,需要擷取當前資料庫執行個體使用的所有初始化參數的設定資訊。其效果等同於執行show parameter
命令或查詢動態效能檢視v$parameter
3、為了修改伺服器初始化參數檔案中的參數值,先將伺服器初始化參數檔案匯出文本初始化參數檔案,然後對於文本初始化參數檔案中的參數進行手動修改,根據修改後的文本化參數檔案,建立新的伺服器初始化參數檔案。 六、恢複丟失或損壞的伺服器初始化參數檔案
1、如果資料庫處於運行狀態,可以執行create spfile from memory 語句,根據當前記憶體中的初始化參數重建伺服器初始化參數
2、如果有有效文本初始化參數,可以用文本參數進行建立:create spfile from pfile 重建伺服器初始化參數
3、利用伺服器初始化參數檔案的備份恢複丟失或損壞的伺服器化參數檔案
4、上述方法都不可用時,可以首先利用警示檔案中顯示的初始化參數值(資料庫啟動時會使用初始化參數檔案寫入警示檔案)重建文本的初始化參數檔案,然後利用create spfile from pfile的方式。