溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

ora-01000的處理思路

發(fā)布時(shí)間:2020-08-09 16:33:15 來源:ITPUB博客 閱讀:160 作者:kakaxi9521 欄目:關(guān)系型數(shù)據(jù)庫
今天有開發(fā)的同學(xué)發(fā)過來一個(gè)問題,在執(zhí)行程序的時(shí)候報(bào)ora-01000錯(cuò),所以研究了下。
從網(wǎng)上找了些帖子看了下,鏈接:
http://blog.csdn.net/msdnchina/article/details/49755025

從某種程度上說,ora-01000 是會(huì)阻塞業(yè)務(wù)的,應(yīng)該是某個(gè)session 打開的cursor數(shù)量超過了open_cursors之后,該session 就無法對(duì)外提供服務(wù)了。

摘自:
IF: How to Find SQLs Causing ORA-1000 (文檔 ID 2014381.1)

1.使用如下sql檢查當(dāng)前各個(gè)session的open cursor情況:

SELECT s.sid, s.serial#, s.username, a.value "OPEN CURSOR COUNT"   
FROM v$sesstat a, v$statname b, v$session s   
WHERE a.statistic# = b.statistic#   
AND s.sid=a.sid AND b.name = 'opened cursors current'   
AND s.username IS NOT NULL  
ORDER BY a.value desc;

2. 檢查可疑session的open cursor情況,從上一步獲得 open cursor高的sid,帶入下面的sql。
SELECT sid ,sql_text, user_name, count(*) as "OPEN CURSORS"   
FROM v$open_cursor   
WHERE sid IN ($SID)   
GROUP BY sid ,sql_text, user_name;

注意,如上腳本只能看current的數(shù)據(jù)庫的情況,不能分析已經(jīng)過去的時(shí)間段(比如昨天早上)的數(shù)據(jù)庫的情況。因?yàn)関$open_cursor沒有對(duì)應(yīng)的dba_hist視圖


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI