视窗
loading...
您现在的位置:首页 > IT认证 > oracle认证 >

OracleORA-4031错误原因解


OracleORA-4031错误原因解

Oracle  ORA-4031错误产生的原因

    首先这个错误发生时的表现如下:

    ORA-04031: unable to allocate XXXX bytes of shared memory

    (“shared pool,“unknown object”,”sga heap(1,0)”,”obj stat memor“)

    就是最基本的查询简单的动态性能视图都无法完成:

    下面来细细的分析一下原因:

    这就需要从shared pool 的内存结构来分析了, 首先shared pool 有许多的内存块组成,这些内存块通常叫做chunk

    chunk是 shared pool这是内存分配的最小单位,其中的内存都是连续的。

    chunk 分为四个类型,可以从 X$ksmsp中的 ksmchcls列看到 ,X$ksmsp视图中的每条记录都表示在当前shared pool 中的一个chunk

    1) free 这种类型的chunk不包含有有效的对象,可以被分配。

    2)  recr 表示recreatable,这种类型的chunk 里面包含的对象可以在需要的时候被临时移走,并且在需要的时重新创建。

    比如对于很多的共享SQL的chunk就是recreatable的。

    3) freeabl 这种类型的chunk 包含的对象是曾经被session 使用过的。并且随后会被完全或者部分释放。这种chunk

    不能被临时从内存中移走,因为他们是在处理过程中产生的,如果移走就不能被重建。

    4) perm 意味着永久性,这种类型的chunk包含永久的对象,大型的permanent类型的chunk也可能包含有用的空间,

    这部分可用空间可以在需要的时候释放。

    在shared pool 中可用的chunk(也就是free类型的)会被连接起来成为 free list 或者叫bucket(一个free list就是一个bucket)

    每个backet中的chunk的大小是不同的。

    当某个进程需要shared pool 里面的一个chunk,该进程首先倒伏后所需空间大小的backet上去扫描,以找到最合适的chunk,扫描持续到backet

    的最末端,值到找到尺寸符合的chunk为止,如果找到的chunk尺寸必须要的要大,则这个被找到的chunk就会被拆分一个用来存储数据

    另一个成为free类型的chunk 并成为当前的bucket。

    当某个bucket不包含有任何尺寸的chunk,那么就从下一个非空的backet上获得一个最小的chunk,如果在剩下的所有的backet中都找不到可用的chunk

    则需要扫描已经使用的recreatable类型的chunk。从该链表上释放出部分chunk,因为只有recreatable类型的chunk才是可以被临时一处内存的。

    但某个chunk正在被使用时该chunk是不能被移除内存的。比如某个SQL语句正在执行,那么该语句所使用的chunk就不能被移除内存。该SQL所引用的表,索引

    等对象占用的chunk也不能够被移除内存,当shared pool中无法找到满足大小的所需内存时就会出现ORA-4031的错误。

    当出现ORA-4031的错误的时候,我们查询V$SGSTAT中的可用shared pool空间时,可能发现可用的内存足够大了,为什么还是出现ORA-4031错误呢?

    事实上,在oracle发出错误之前已经释放出大量的recreatable类型的chunk了因此会产生不少的可用内存。但是这些可用的chunk中没有一个是连续的从而

    才发出ORA-4031的错误。

 

 

【免责声明和版权说明】
本站部分信息来源于互联网,对转载的信息我们力求标明信息的出处,我们尊重作者的版权著作权,对我们转载的信息如有异议或有侵权或违法信息请及时联系我们,本站会立即删除,对原创内容我们愿意支付适当的稿酬,联系方式:邮件:webmaster@jscj.com 电话:4008816886

相关文章

无相关信息
更新时间2022-03-13 11:11:03【至顶部↑】
联系我们 | 邮件: webmaster@jscj.com | 客服热线电话:4008816886(QQ同号) |  濠电姷鏁告慨鐑藉极閸涘﹥鍙忛柣鎴f閺嬩線鏌涘☉姗堟敾闁告瑥绻橀弻锝夊箣閿濆棭妫勯梺鍝勵儎缁舵岸寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閻愵剙鍔ゆ繛纭风節瀵鎮㈢悰鈥充壕闁汇垻娅ラ悷鐗堟瘎缂傚倸鍊风拋鏌ュ磻閹炬枼鏀介柣妯哄级婢跺嫰鏌i幘鍐叉殶闁硅尙枪楗即宕煎┑鍫Ф婵犳鍠楁灙婵炲绋掗、濠囨⒒娴e憡鍟炴繛璇х畵瀹曡瀵奸弶鎴狀攨闂佽鍎兼慨銈夋偂閺囥垺鐓冮柍杞扮閺嬨倖绻涢崼鐔糕拹闁靛洤瀚粻娑㈡晲閸曨垰浠愰梻浣告惈閺堫剛绮欓幋锕€鐓濋幖娣€楅悿鈧梺鍝勬川婵參宕€n喗鈷掑ù锝呮啞閹牓鏌i鐑嗘Ш缂佽京鍋炵粭鐔煎焵椤掑嫭鍋樻い鏇楀亾鐎规洖鐖奸、妤佸緞鐎n偅鐝ㄩ梻鍌欑閹测剝绗熷Δ鍛獥婵°倕鎳忛崕濠冪節婵犲倻澧涢柍閿嬪笒闇夐柨婵嗘噺閸ゅ牏鎲搁悧鍫濅刊闁轰礁瀚伴弻娑㈠焺閸愵亖妲堢紓浣哄У閻擄繝寮诲☉銏犖ㄦい鏃傚帶椤亪姊虹粙娆惧剱閽冮亶鏌曢崶褍顏€殿喗娼欒灃闁逞屽墯缁傚秵銈i崘鈺佲偓鐢告偡濞嗗繐顏紒鈧埀顒傜磽閸屾氨孝闁挎洦浜俊瀛樻媴缁洘鐎婚梺瑙勫劤绾绢參鎮¢幋锔解拺闂傚牊鍐荤槐锟犳煕閺囩偛顣崇痪顓涘亾婵犵數濮烽弫鍛婃叏閻戣棄鏋侀柛娑橈攻閸欏繘鏌i幋锝嗩棄闁哄绶氶弻娑樷槈濮楀牊鏁鹃梺鍛婄懃缁绘垿濡甸崟顖氱闁告鍋熸禒鑲╃磼閻愵剙鍔ゆい顓犲厴瀵鎮㈤悡搴n槶閻熸粌绻掗弫顔尖槈閵忥紕鍘介梺瑙勫劤閻°劎绮堢€n喗鐓涢悘鐐靛亾缁€鍐偓鍨緲鐎氼噣鍩€椤掑﹦绉靛ù婊呭仦缁傛帡骞橀瑙f嫼闂佺ǹ绻愰崥瀣Φ閻斿吋鐓曢柕濞垮€曞畵鍡涙煕閳瑰灝鐏叉鐐疵叅缂備焦蓱濞呭洭姊绘笟鈧ḿ褏鎹㈤崱娑樼柧婵犲﹤鎳夐崑鎾绘濞戞氨鍔┑顔硷攻濡炶棄螞閸愩劉妲堟慨姗嗗墻閺嗩偅绻濈喊妯活潑闁稿鎳橀幃鐑藉煛閸曨剨绱撻梻鍌欒兌绾爼宕滃┑濠傜稑濠电偛鐡ㄧ划宥囧垝閹捐钃熼柨鐔哄Т绾惧吋鎱ㄥ鍡楀婵炲牆缍婂娲川婵犲啠鎷婚梺鍝ュУ閻楃姴顕f繝姘亜闁兼祴鏅涚粊锕傛⒑閸撹尙鍘涢柛鐘崇鐎靛ジ宕奸妷锔规嫼闁哄鍋炴竟鍡涘礉瀹ュ鐓欓柣鐔哄閸犳ḿ鈧鍣崑濠囩嵁濡偐纾兼俊顖滅帛椤忕喖姊绘担鑺ョ《闁革綇绠撻獮蹇涙晸閿燂拷

付款方式留言簿投诉中心网站纠错二维码手机版

客服电话: