国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

有關ORA-04031的分析過程

IT那活兒 / 871人閱讀
有關ORA-04031的分析過程


一. ORA-04031的問題表現


當Oracle需要分配一個大對象到共享池中卻無法找到一段連續可用的內存空間時候,通常會報:
04031, 00000, "unable to allocate %s bytes of shared memory ("%s","%s", "%s","%s")"


二. 涉及的參數


與共享池有關陳參數:

  1. SHARED_POOL_SIZE

    這個參數指定共享池的大小,以字節為單位。

  2. SHARED_POOL_RESERVED_SIZE

    指定為大的連續的共享池內存請求預留的共享池的大小。

  3. _SHARED_POOL_RESERVED_MIN_ALLOC

    這個參數是隱含參數,用于控制預留內存的分配。大于這個參數的內存分配可以使用預留內存的列表。這個參數的默認值適合 絕大多數的系統。

    可以通過執行如下SQL查到:
select nam.ksppinm NAME,
val.KSPPSTVL VALUE   
from x$ksppi nam,x$ksppsv val
where nam.indx = val.indx
and nam.ksppinm like %shared% order by 1;



三. 可能的原因及處理措施


1. 共享池大小設置不合理

共享池大小是否合理,可首先確定library cache中是否缺乏連續的內存空間;

可以通過查詢視圖v$SHARED_POOL_RESERVED,滿足如下的條件:
  • REQUEST_FAILURES>0
    AST_FAILURE_SIZE < SHARED_POOL_RESERVED_MIN_ALLOC
  • REQUEST_FAILURES=0
    LAST_FAILURE_SIZE < SHARED_POOL_RESERVED_MIN_ALLOC
如滿足則說明SHARED_POOL_RESERVED_MIN_ALLOC設置過小
解決:增大到滿足為止

2. 共享池碎片太多

如果是由于共享池碎片引起的ORA-04031錯誤,那么需要判斷是由于library cache的碎片導致的還是共享池保留空間中的碎片太多導致的,判定規則:
  • REQUEST_FAILURES > 0

  • LAST_FAILURE_SIZE > SHARED_POOL_RESERVED_MIN_ALLOC

解決 :

  • 增大SHARED_POOL_RESERVED_MIN_ALLOC來減少對象被緩存到共享池保留空間中的數量

  • 增大SHARED_POOL_RESERVED_SIZE 和SHARED_POOL_SIZE來提高共享池保留空間中有更多可用的內存。


3. 大內存分配導致,報錯信息如下:

ORA-04031: unable to allocate XXXX bytes of shared memory ("large pool","unknown object","session heap","frame")


當出現上述錯誤的時候,可以查看如下幾個方面:

  • 檢查V$SGASTAT看看多少的內存被使用和空閑:
SELECT pool,name,bytes FROM v$sgastat where pool = large pool;
  •  使用heapdump level 32來dump出大池heap,確定自由的塊大小。

    從大池中分配的內存如果是LARGE_POOL_MIN_ALLOC 的塊數倍可以避免產生碎片,任何請求要求分配的塊大小如果小于LARGE_POOL_MIN_ALLOC,那么將分配 LARGE_POOL_MIN_ALLOC大小的內存。

解決:增大LARGE_POOL_SIZE的大小都有助于消除這個錯誤


4. Oracle bug

Oracle強烈建議安裝最新的數據庫補丁,大部分的ORA-04031錯誤都和BUGs相關,安裝最新的補丁可以避免這些錯誤。報錯有:
ORA-04031: unable to allocate bytes of shared memory ("shared pool","unknown object","joxlod: init h", "JOX: ioc_allocate_pal")


解決:關閉數據庫,設置更大的JAVA_POOL_SIZE大小,錯誤中提及的共享池很容易誤導認為是SGA內存消耗完全,此時不能去增大共享池大小,而應該是增大JAVA池的大小,然后重啟數據庫繼續嘗試。


5. 共享池碎片原因及視圖

  1. 沒有共享的SQL
  2. 執行了沒有必要的軟分析調用
  3. 沒有使用綁定變量
根據造成共享池碎片的以上三個方面,對應用SQL進行有針對性的優化改造;為了捕獲有問題的SQL,可通過以下視圖進行分析:
  • V$SQLAREA視圖,該視圖保存了每個SQL和PL/SQL執行的塊,具體查詢腳本如下:
SELECT substr(sql_text,1,40) "SQL",
count(*) ,
sum(executions) "TotExecs"   
FROM v$sqlarea
WHERE executions < 5   
GROUP BY substr(sql_text,1,40)
HAVING count(*) > 10   
ORDER BY 2;


  • X$KSMLRU視

    這個視圖記錄所有在共享池中由于分配自由空間而導致其他對象被刷新出共享池的信息。通常用來判定什么導致了大的自由空間分配。如果很多對象周期性的被刷新出共享池,那么會導致響應時間問題,例如libaray cache latch的競爭問題。

    尤其需要注意的是當存儲了最大的自由空間分配之后,任何時候查詢這個視圖都會刪除這個視圖中的內容,即使下一個分配的大的自由空間沒有以前的大,這些被查詢的值都會被重置,因此,查詢這個表的結果應該被小心的保存下來。

監控這個視圖只需要運行下面的SQL:(SYS用戶)

SELECT * FROM X$KSMLRU WHERE ksmlrsiz > 0;



END


更多精彩干貨分享

點擊下方名片關注

IT那活兒

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/129935.html

相關文章

  • Oracle數據庫4031故障分析

    Oracle數據庫4031故障分析 img{ display:block; margin:0 auto !important; width:100%; } body{ width:75%; m...

    不知名網友 評論0 收藏2316
  • 選型云ERP中五個不能忽視問題

    摘要:企業在選擇云系統時,尤其如此。云系統中的每個因素都與公司成長模式有關。成本蠕變成本蠕變或許是最普遍也是最容易被負責人忽略的,對云系統的產生的影響也是更為負面的。如果你選擇的云服務組合是正確的,云系統的擴張就應該是順其自然的。 一、在選擇過程中忽略重要的云屬性企業在購買整合系統時要面對一系列的挑戰性,除了要理解公司行為方式和原因以外,還需要有考慮到其他因素。如果忽略了某個流程或要求,那么在這個...

    venmos 評論0 收藏0
  • CrackMe005-下篇 | 逆向破解分析 | 160個CrackMe(視頻+圖文)深度解析系列

    摘要:作者逆向驛站微信公眾號逆向驛站知乎逆向驛站上篇說了具體方法,下篇來發逆向分析過程,看看老夫是如何得到上篇的具體方法的準備環境和工具虛擬機環境專用脫殼器學習層次爆破,但是這個作者聲明了,爆破他是不認可的解密流程,寫注冊機積累程序逆向特點經驗詳 作者:逆向驛站微信公眾號:逆向驛站知乎:逆向驛站showImg(https://segmentfault.com/img/bVbnHJT?w=11...

    jeyhan 評論0 收藏0

發表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<