11g中的"_memory_imm_mode_without_autosga"引數
在oracle 11g之前的版本中,當SGA_TARGET引數被設定為0時,則意味著自動記憶體調整特性被關閉了.但在11g資料庫中,我們可能還是會看到最初設定的shared_pool_size,db_cache_size等引數的大小發生了變化,即便是oracle的自動記憶體特性已經被關閉了. 調查該現象的原因可發現這是由11g中新增的隱含引數”_memory_imm_mode_without_autosga”來控制的.
這實際上是11g的一個new feature,是用來規避ORA-4031錯誤的,當資料庫系統由於shared pool(large pool..)中的記憶體被耗盡而將產生ORA-4031錯誤時,即使沒有使用自動記憶體管理的特性, 資料庫也會透過縮小buffer cache的記憶體,然後擴充套件shared pool記憶體的大小,從而避免發生ORA-4031錯誤. 當將引數”_memory_imm_mode_without_autosga”設定為FALSE時,可以關閉該特性,但資料庫仍然會像以前一樣受到ORA-4031錯誤的威脅. 注意,從實際使用中的觀察結果看來,這種記憶體調整是不可逆的,就是說當shared pool存在大量空閒記憶體時並不會釋放上次從buffer cache'借用'的記憶體.
個人經驗: 這種方式雖然可以規避ora-04031錯誤,但這種解決方案是治標不治本的,解決ora-04031錯誤的根本手段還是找出引起這種記憶體消耗的根本原因,從而有針對性的解決. 此外,放任這種自動記憶體調整特性,可能會帶來一些意想不到的結果,比如某些池被擴充套件得過大。所以個人還是比較傾向於關閉該新特性。
以下語句可用於幫助診斷是否發生了自動記憶體調整:
select COMPONENT,CURRENT_SIZE/1024/1024,MIN_SIZE/1024/1024,MAX_SIZE/1024/1024,LAST_OPER_TYPE from v$memory_dynamic_components where LAST_OPER_TYPE in ('GROW','SHRINK');
COMPONENT CURRENT_SIZE/1024/1024 MIN_SIZE/1024/1024 MAX_SIZE/1024/1024 LAST_OPER_TYP
------------------------------ ---------------------- ------------------ ------------------ -------------
shared pool 6528 6144 6528 GROW
DEFAULT buffer cache 13952 13952 14336 SHRINK
而以下語句可以顯示歷次resize操作更詳細的細節,如時間,大小等:
SELECT component,oper_type,initial_size/1024/1024 init_MB,target_size/1024/1024 target_MB,final_size/1024/1024 final_MB,status, start_time, end_time
FROM V$SGA_RESIZE_OPS
where PARAMETER in ('db_cache_size','shared_pool_size') and OPER_TYPE in ('GROW','SHRINK')
order by PARAMETER,START_TIME;
COMPONENT OPER_TYPE INIT_MB TARGET_MB FINAL_MB STATUS START_TIME END_TIME
------------------------------ ------------- ---------- ---------- ---------- --------- ----------------- -----------------
DEFAULT buffer cache SHRINK 14336 14272 14272 COMPLETE 20140331 04:44:39 20140331 04:44:39
DEFAULT buffer cache SHRINK 14272 14208 14208 COMPLETE 20140403 13:27:31 20140403 13:27:31
DEFAULT buffer cache SHRINK 14208 14144 14144 COMPLETE 20140409 06:35:29 20140409 06:35:29
DEFAULT buffer cache SHRINK 14144 14080 14080 COMPLETE 20140409 06:43:43 20140409 06:43:43
DEFAULT buffer cache SHRINK 14080 14016 14016 COMPLETE 20140409 06:51:44 20140409 06:51:44
DEFAULT buffer cache SHRINK 14016 13952 13952 COMPLETE 20140409 06:53:34 20140409 06:53:34
shared pool GROW 6144 6208 6208 COMPLETE 20140331 04:44:39 20140331 04:44:39
shared pool GROW 6208 6272 6272 COMPLETE 20140403 13:27:31 20140403 13:27:31
shared pool GROW 6272 6336 6336 COMPLETE 20140409 06:35:29 20140409 06:35:29
shared pool GROW 6336 6400 6400 COMPLETE 20140409 06:43:43 20140409 06:43:43
shared pool GROW 6400 6464 6464 COMPLETE 20140409 06:51:44 20140409 06:51:44
shared pool GROW 6464 6528 6528 COMPLETE 20140409 06:53:34 20140409 06:53:34
12 rows selected.
其實這裡的時間點是重要的資訊,可幫助我們找到什麼時間發生了記憶體緊張的狀況,從而找出惹禍的應用或語句。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27243841/viewspace-1147107/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 11G中FAST_START_MTTR_TARGET引數AST
- Oracle 11g中的_optimizer_null_aware_antijoin隱含引數OracleNull
- C#中的值引數,引用引數及輸出引數C#
- oracle 11g常用隱含引數Oracle
- Oracle 11g 關於 AWR 的引數設定Oracle
- Oracle 11g RAC修改靜態引數Oracle
- 【函式引數】Oracle 11g中使用“=>”顯式指明函式引數名與引數值的對應關係函式Oracle
- Python中的引數遮蔽Python
- JavaScript 中的引數處理JavaScript
- angular cli中的--flat引數Angular
- pl/sql中的引數模式SQL模式
- java 中引數的傳遞Java
- 程式中的函式引數函式
- C#中命名引數和可選引數C#
- Laravel同時接收路由引數和查詢字串中的引數Laravel路由字串
- 10G、11G expdp的compression引數的區別
- oracle中的processes,session,transaction引數OracleSession
- Python中的預設引數Python
- OpenCV中的SVM引數優化OpenCV優化
- OFBiz中的引數傳遞
- kill命令中的processid引數
- Oracle 11g 在solaris 10 上核心引數的設定Oracle
- 11g從記憶體建立引數檔案記憶體
- python中類中 引數的靈活使用Python
- oracle10g,11g中的exp,expdp引數compress, compression完全不同的定義Oracle
- 11g MEMORY_TARGET 引數對SGA 和PGA的影響
- 11g MEMORY_TARGET 引數對SGA 和PGA的影響
- bash 引數替換中的模式匹配模式
- 面試之jquery中的ajax方法引數面試jQuery
- C# 中的 in 引數和效能分析C#
- 方法中引數的型別詳細型別
- 獲取request中的查詢引數
- Python中的預設引數值Python
- js獲取url地址中的引數JS
- python中的argparse模組(引數解析)Python
- 查詢oracle中的隱形引數Oracle
- Oracle升級中的引數補充Oracle
- Linux 中 grep -P引數的作用Linux