ORACLE 25個需要深思熟慮重要的初始化引數
此內容摘自 ORACLE 11gR2效能調整與優化一書,做為一個自己的筆記
1 MEMORY_TARGET : 這個初始化引數設定分配給PGA和SGA 的所有記憶體(11g 新引數)。設定了MEMORY_TARGET 就啟用了自動記憶體管理(Automatic Memory Management,AMM),所以oracle 根據系統的需求分配記憶體,但你也可以設定關鍵的最小值。MEMORY_TARGET 可以完成SGA_TARGET 能完成的所有工作,此外還包括PG(MEMORY_TARGET 由於包含了重要的PGA_AGGREGATE_TARGET才變的十分重要)。
在設定了 MEMORY_TARGET 後,其他重要的引數,比如DB_CACHE_SIZE,SHARED_POOL_SIZE,PGA_AGGREGATE_TARGET,LARGE_POOL,JAVA_POOL_SIZE都會自動設定,為系統中重要的的初始化引數設定最小值是一個非常不錯的想法。
2 MEMORY_MAX_TARGET: 這個引數設定可以分配給oracle的最大記憶體,也是MEMORY_TARGET 可以設定的最大值,注意修改此引數是要重啟資料庫的;
3 DB_CACHE_SIZE: 為資料快取或者為存放資料而初始分配的記憶體量。如果你設定了MEMORY_TARGET 或者SGA_TARGET ,這個引數就不需要設定了,但是給這個引數設定了一個最小的值是我們建議的。
4 SHARED_POOL_SIZE: 分配給資料字典、SQL和plsql語句的記憶體。查詢本身放在這塊記憶體裡,如果設定了MEMORY_TARGET,這個引數就需要設定了,但是給這個引數設定最小值是我們推薦的。注意在SAP裡推薦設定為400M,另外注意,結果集快取(Result Cache)的記憶體來自共享池,通過設定引數
RESULT_CACHE_SIZE和RESULT_CACHE_MODE(這個引數有三個值:FORCE、AUTO、MANUAL完成。最後,在11g中將這個引數包括了一些再SGA裡的額外開銷
(共12M),在這以前10g中是沒有的,所以在11g中將這個引數設定的比10G 高至少12M.
5 SAG_TARGET: 如果使用ORACLE 的自動共享記憶體管理,就使用該引數自動確定資料快取、共享池、大型池和java池大小。將該引數設定為0可以禁用這個功能。如果設定了
MEMORY_TARGET這個引數的話就不需要設定此引數了,但是如果您希望和以前的版本做對比的話,可以給這個引數設定一個最小的值。SHARED_POOL_SIZE、LARGE_POOL_SIZE、JAVA_POOL_SIZE和DB_CACHE_SIZE會根據這個值自動設定(或者使用MEMORY_TARGET).
6 PGA_AGGREGATE_TARGET:所有使用者的PGA記憶體的最高上限。如果您設定了MEMORY_TARGET,這個引數就不需要設定了,但是給這個引數設定一個最小值是個不錯的想法,注意SAP指定對於OLTP系統設定為可用記憶體的20%,對於OLAP系統為40%。
7 SGA_MAX_SIZE: SGA_TARGET 可以設定的最大記憶體。如果設定了MEMORY_TARGET,這個引數就不需要設定了,但是如果需要使用SGAZ_TARGET,就需要給設定一個值。
8 OPTIMIZER_MODE: CHOOSE、RULE、FIRST_ROWS、FIRST_ROWS_n或ALL_ROWS。儘管RULE明確的不被支援並且已經過時,人們一提起它通常怨聲載道,但是我曾經在11gR2裡設定過該模式
9 SEC_CASE_SENSITIVE_LOGON : 預設值為TURE,意味著密碼大小寫敏感(11g新引數),將其設定false可以禁用這個功能;
10 SEC_MAX_FAILED_LOGIN_ATTEMPTS: 如果使用者經過多次嘗試還是不能輸入正確的密碼,系統會鎖定賬戶,這個引數就是設定了密碼密碼嘗試次數。這個引數預設設定為10.當使用者被鎖定之後DBA必須用alter user usernmae account unlock語句來解鎖。
11 CURSOR_SHARING: 把具體的的sql 轉換成帶有變數的SQL。這樣可以減小解析的開銷。預設值是EXACT。調研後可以考慮設定長FORCE.
12 OPTIMIZER_USE_INVISIBLE_INDEXES :預設是false。可確保不可視索引在預設的情況下不被使用(11g新引數)。做一個有益的實驗,將此引數設定true。可使用所有索引和檢查那些錯誤的被設定為不可視索引(該實驗可能會引起系統down機,所以只能在開發環境中)
13 OPTIMIZER_USE_PENDING_STATISTICS:預設為false。可確保不使用待定統計資訊,而設定true後就可以使用所有待定統計資訊(11g新引數)
14 OPTIMIZER_INDEX_COST_ADJ: 粗略調整索引掃描成本和全表掃描成本。設定為1到10之間會加強索引的使用。設定為1到10之間的值基本上可以保證使用索引,即使有時這樣設定並不適合,因為需要謹慎設定該引數,因為它的很大程度上取決於索引的設計和實現是否正確。如果正在使用 Application 11i,請注意不可以將
OPTIMIZER_USE_PENDING_STATISTICS 設定為除了預設值100以外的其他值(檢視MOS文獻 169935.1)。我在一次測試中見到這個引數設定為200,同時也可以檢視bug 4483286.SAP 建議對於OLAP系統不要設定,對於OLTP 設定為20。
15 DB_FILE_MULTIBLOCK_READ_COUNT: 為了在全表掃描時更有效的執行I/0操作設定該引數為在一次I/0中讀的塊數。再11gR2中預設為128.通常不要改變這個預設值
16 LOG_BUFFER: 為記憶體中沒有提交的事物分配的緩衝區。如果需要改變它,就必須在pfile中完成。SAP建議使用預設值。Oracle Application 將其設定為10MB.我見過有的測試設
置為100
17 DB_KEEP_CACHE_SIZE: 分配給keep池(位於緩衝區快取之外的額外資料快取)的記憶體,這些記憶體用於存放不希望從快取中擠出的重要資料。
18 DB_RECYCLE_CACHE_SIZE: 分配給recycle池(位於緩衝區快取之外的額外的資料快取)的記憶體。也是第17條keep快取之外的記憶體。通常情況下,DBA 為編寫較差的即時使用者查詢的資料設定該引數。
19 OPTIMIZER_USE_SQL_PLAN_BASELINES: 預設值為ture。 意思是如果存在基線(baseline)oracle 就會使用。主要在11g中stored outline 已經不建議使用(不建議使用,但是
仍可以工作),因為它已經被SQL計劃基線取代。
20 OPTIMIZER_CAPTURE_SQL_PLAN_BASELINES: 預設值是false,意思是oracle預設情況下不捕捉sql計劃基線。但是如果建立了基線,oracle會像前面的一條敘述的那也使用 (11g中的新引數)。
21 LARGE_POOL_SIZE: 分配給大型的PL/SQL 以及其他的一些不經常使用的oracle選件的大型池中的總位元組數。
22 SATAISTICS_LEVEL: 用於啟用顧問資訊的收集,並且可以選擇提供更多的O/S 統計資訊來改進優化器決策。該引數的預設值是typical。
23 JAVA_POOL_SIZE: 為JVM中執行的JAVA 儲存過程分配的記憶體
24 JAVA_MAX_SESSIONSPACE_SIZE: 用於跟蹤使用者會話中java類狀態而是用的記憶體上線
25 OPEN_CURSORS: 指定使用者與保持(開啟)使用者語句的專用區域的大小,如果見到 “ORA-01000:maximum open cursors exceeded” 錯誤,那麼可能需要增大該引數,但是需 要確保關閉不在需要的遊標。在9.2.0.5版本之前,這些開啟的遊標也會被快取。如果將open_cursors 設定的過高,有時也會造成問題(ORA-4031)在 9.2.0.5版本中,SESSION_CACHED_CURSORS引數用來控制PL/SQL 中游標快取的設定。不要將SESSION_CACHED_CURSORS設定的和 OPEN_CURSORS 一 樣大,否則就可能產生ORA-4031 或者ORA-7445錯誤。SAP 推薦設定為2000; oracle application 把 open_cursors 設定成60將 SESSION_CACHED_CURSORS 設定成500。
注意 正確的設定好某些初始化引數可能會產生兩秒鐘到兩個小時的差異。在對生產環境進行更改時,一定要徹底的在測試系統裡除錯這些改動。
1 MEMORY_TARGET : 這個初始化引數設定分配給PGA和SGA 的所有記憶體(11g 新引數)。設定了MEMORY_TARGET 就啟用了自動記憶體管理(Automatic Memory Management,AMM),所以oracle 根據系統的需求分配記憶體,但你也可以設定關鍵的最小值。MEMORY_TARGET 可以完成SGA_TARGET 能完成的所有工作,此外還包括PG(MEMORY_TARGET 由於包含了重要的PGA_AGGREGATE_TARGET才變的十分重要)。
在設定了 MEMORY_TARGET 後,其他重要的引數,比如DB_CACHE_SIZE,SHARED_POOL_SIZE,PGA_AGGREGATE_TARGET,LARGE_POOL,JAVA_POOL_SIZE都會自動設定,為系統中重要的的初始化引數設定最小值是一個非常不錯的想法。
2 MEMORY_MAX_TARGET: 這個引數設定可以分配給oracle的最大記憶體,也是MEMORY_TARGET 可以設定的最大值,注意修改此引數是要重啟資料庫的;
3 DB_CACHE_SIZE: 為資料快取或者為存放資料而初始分配的記憶體量。如果你設定了MEMORY_TARGET 或者SGA_TARGET ,這個引數就不需要設定了,但是給這個引數設定了一個最小的值是我們建議的。
4 SHARED_POOL_SIZE: 分配給資料字典、SQL和plsql語句的記憶體。查詢本身放在這塊記憶體裡,如果設定了MEMORY_TARGET,這個引數就需要設定了,但是給這個引數設定最小值是我們推薦的。注意在SAP裡推薦設定為400M,另外注意,結果集快取(Result Cache)的記憶體來自共享池,通過設定引數
RESULT_CACHE_SIZE和RESULT_CACHE_MODE(這個引數有三個值:FORCE、AUTO、MANUAL完成。最後,在11g中將這個引數包括了一些再SGA裡的額外開銷
(共12M),在這以前10g中是沒有的,所以在11g中將這個引數設定的比10G 高至少12M.
5 SAG_TARGET: 如果使用ORACLE 的自動共享記憶體管理,就使用該引數自動確定資料快取、共享池、大型池和java池大小。將該引數設定為0可以禁用這個功能。如果設定了
MEMORY_TARGET這個引數的話就不需要設定此引數了,但是如果您希望和以前的版本做對比的話,可以給這個引數設定一個最小的值。SHARED_POOL_SIZE、LARGE_POOL_SIZE、JAVA_POOL_SIZE和DB_CACHE_SIZE會根據這個值自動設定(或者使用MEMORY_TARGET).
6 PGA_AGGREGATE_TARGET:所有使用者的PGA記憶體的最高上限。如果您設定了MEMORY_TARGET,這個引數就不需要設定了,但是給這個引數設定一個最小值是個不錯的想法,注意SAP指定對於OLTP系統設定為可用記憶體的20%,對於OLAP系統為40%。
7 SGA_MAX_SIZE: SGA_TARGET 可以設定的最大記憶體。如果設定了MEMORY_TARGET,這個引數就不需要設定了,但是如果需要使用SGAZ_TARGET,就需要給設定一個值。
8 OPTIMIZER_MODE: CHOOSE、RULE、FIRST_ROWS、FIRST_ROWS_n或ALL_ROWS。儘管RULE明確的不被支援並且已經過時,人們一提起它通常怨聲載道,但是我曾經在11gR2裡設定過該模式
9 SEC_CASE_SENSITIVE_LOGON : 預設值為TURE,意味著密碼大小寫敏感(11g新引數),將其設定false可以禁用這個功能;
10 SEC_MAX_FAILED_LOGIN_ATTEMPTS: 如果使用者經過多次嘗試還是不能輸入正確的密碼,系統會鎖定賬戶,這個引數就是設定了密碼密碼嘗試次數。這個引數預設設定為10.當使用者被鎖定之後DBA必須用alter user usernmae account unlock語句來解鎖。
11 CURSOR_SHARING: 把具體的的sql 轉換成帶有變數的SQL。這樣可以減小解析的開銷。預設值是EXACT。調研後可以考慮設定長FORCE.
12 OPTIMIZER_USE_INVISIBLE_INDEXES :預設是false。可確保不可視索引在預設的情況下不被使用(11g新引數)。做一個有益的實驗,將此引數設定true。可使用所有索引和檢查那些錯誤的被設定為不可視索引(該實驗可能會引起系統down機,所以只能在開發環境中)
13 OPTIMIZER_USE_PENDING_STATISTICS:預設為false。可確保不使用待定統計資訊,而設定true後就可以使用所有待定統計資訊(11g新引數)
14 OPTIMIZER_INDEX_COST_ADJ: 粗略調整索引掃描成本和全表掃描成本。設定為1到10之間會加強索引的使用。設定為1到10之間的值基本上可以保證使用索引,即使有時這樣設定並不適合,因為需要謹慎設定該引數,因為它的很大程度上取決於索引的設計和實現是否正確。如果正在使用 Application 11i,請注意不可以將
OPTIMIZER_USE_PENDING_STATISTICS 設定為除了預設值100以外的其他值(檢視MOS文獻 169935.1)。我在一次測試中見到這個引數設定為200,同時也可以檢視bug 4483286.SAP 建議對於OLAP系統不要設定,對於OLTP 設定為20。
15 DB_FILE_MULTIBLOCK_READ_COUNT: 為了在全表掃描時更有效的執行I/0操作設定該引數為在一次I/0中讀的塊數。再11gR2中預設為128.通常不要改變這個預設值
16 LOG_BUFFER: 為記憶體中沒有提交的事物分配的緩衝區。如果需要改變它,就必須在pfile中完成。SAP建議使用預設值。Oracle Application 將其設定為10MB.我見過有的測試設
置為100
17 DB_KEEP_CACHE_SIZE: 分配給keep池(位於緩衝區快取之外的額外資料快取)的記憶體,這些記憶體用於存放不希望從快取中擠出的重要資料。
18 DB_RECYCLE_CACHE_SIZE: 分配給recycle池(位於緩衝區快取之外的額外的資料快取)的記憶體。也是第17條keep快取之外的記憶體。通常情況下,DBA 為編寫較差的即時使用者查詢的資料設定該引數。
19 OPTIMIZER_USE_SQL_PLAN_BASELINES: 預設值為ture。 意思是如果存在基線(baseline)oracle 就會使用。主要在11g中stored outline 已經不建議使用(不建議使用,但是
仍可以工作),因為它已經被SQL計劃基線取代。
20 OPTIMIZER_CAPTURE_SQL_PLAN_BASELINES: 預設值是false,意思是oracle預設情況下不捕捉sql計劃基線。但是如果建立了基線,oracle會像前面的一條敘述的那也使用 (11g中的新引數)。
21 LARGE_POOL_SIZE: 分配給大型的PL/SQL 以及其他的一些不經常使用的oracle選件的大型池中的總位元組數。
22 SATAISTICS_LEVEL: 用於啟用顧問資訊的收集,並且可以選擇提供更多的O/S 統計資訊來改進優化器決策。該引數的預設值是typical。
23 JAVA_POOL_SIZE: 為JVM中執行的JAVA 儲存過程分配的記憶體
24 JAVA_MAX_SESSIONSPACE_SIZE: 用於跟蹤使用者會話中java類狀態而是用的記憶體上線
25 OPEN_CURSORS: 指定使用者與保持(開啟)使用者語句的專用區域的大小,如果見到 “ORA-01000:maximum open cursors exceeded” 錯誤,那麼可能需要增大該引數,但是需 要確保關閉不在需要的遊標。在9.2.0.5版本之前,這些開啟的遊標也會被快取。如果將open_cursors 設定的過高,有時也會造成問題(ORA-4031)在 9.2.0.5版本中,SESSION_CACHED_CURSORS引數用來控制PL/SQL 中游標快取的設定。不要將SESSION_CACHED_CURSORS設定的和 OPEN_CURSORS 一 樣大,否則就可能產生ORA-4031 或者ORA-7445錯誤。SAP 推薦設定為2000; oracle application 把 open_cursors 設定成60將 SESSION_CACHED_CURSORS 設定成500。
注意 正確的設定好某些初始化引數可能會產生兩秒鐘到兩個小時的差異。在對生產環境進行更改時,一定要徹底的在測試系統裡除錯這些改動。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26175573/viewspace-1325606/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle幾個初始化引數Oracle
- 搭建Oracle DataGurad需要的常用初始化引數Oracle
- oracle重要初始引數Oracle
- Oracle 11G 資料庫重要的初始化引數設定Oracle資料庫
- oracle初始化引數Oracle
- ORACLE初始化引數的配置Oracle
- ORACLE最重要的引數資訊 (轉)Oracle
- Oracle初始化引數的來源Oracle
- Oracle RAC初始化引數管理Oracle
- oracle 常見初始化引數Oracle
- Oracle 並行相關的初始化引數Oracle並行
- goldengate 中使用batchsql引數需要額外考慮的地方GoBATSQL
- ORACLE初始化引數:AUDIT_TRAILOracleAI
- Oracle FILESYSTEMIO_OPTIONS初始化引數Oracle
- 伺服器中的幾個重要引數伺服器
- 幾個重要的 ASM Disk Groups 引數ASM
- oracle11g中的幾個記憶體初始化引數Oracle記憶體
- 2、遇到多個構造引數的時候需要考慮使用構建器(effective java)Java
- ORACLE初始化引數檔案介紹Oracle
- Oracle USE_LARGE_PAGES初始化引數Oracle
- Oracle SQL92_SECURITY初始化引數OracleSQL
- Oracle初始化引數設定new(轉)Oracle
- Oracle建庫必備的核心初始化引數Oracle
- 10g升級至11g需要考慮的引數優化優化
- 系統整合銀行卡識別API需要考慮哪些引數?API
- Oracle修改初始化引數(initialization parameter)scope的選項Oracle
- Oracle 9i初始化引數檔案Oracle
- oracle10g初始化引數說明Oracle
- 【原創】Oracle 初始化引數&效能檢視Oracle
- Mysql重要配置引數的整理MySql
- 【RAC】在RAC環境下需要惟一設定的重要引數列表
- 最影響Oracle系統效能的初始化引數(zt)Oracle
- oracle的一個隱含引數Oracle
- Oracle 9i初始化引數檔案(轉)Oracle
- oracle兩個 retention 引數Oracle
- ORACLE RAC資料庫中的初始化引數的設定Oracle資料庫
- Redis重要引數回顧Redis
- Oracle Database 11gR2初始化引數知多少OracleDatabase