亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

DBA:臨時表游標未釋放導致回滾段空間不足

2024-07-21 02:43:30
字體:
來源:轉載
供稿:網友
這篇論壇文章(賽迪網技術社區)根據筆者在工作中遇到的臨時表游標未釋放導致回滾段空間不足的錯誤現象及解決方法進行詳盡的介紹,更多內容請參考下文:

一大早,突然收到生產系統報出多個ORA-01650錯誤,報回滾段空間不足。

先分析一下相關背景。產生報錯的程序是一個數據處理模塊,每天會將其他系統傳過來的平面文件中的內容處理后放入數據庫中,事務量很大。我們的系統是9i,劃分了16個回滾段,其中兩個大的batch回滾段,每個batch回滾段有6G的足夠空間。而數據處理模塊會在事務中指定使用BATCH1。

再分析報錯的模塊。檢查相關的數據事務處理部分,由于業務需要保持數據的一致性,需要處理完1個文件后才能提交,中間如果出錯就要全部回滾。經過確認,這部分代碼有很長時間沒有做改動了。然后再確認數據量,可以確認,今天(周五)是一周之內文件內容最少的一天。也就是說,如果由于數據量引起錯誤,其他時間的概率應該更大。

但是,有一點需要注意。指定回滾段是針對事務的,不是針對回滾段。也就是說,我們可以指定某個事務只使用某個回滾段,但是不能保證這個回滾段只被這個事務事務。當一個事務申請使用回滾段時,如果沒有自己指定,Oracle就會根據當時的各個回滾段的使用情況,分配一個最合適的回滾段給這個事務使用。因此,報回滾段空間不足的事務可能不一定就是導致回滾段空間不足的事務。還有一種可能就是,事務所指定的回滾段被其他事務所占用了。

于是我們就檢查是否還有其他事務占用了該回滾段。

SELECT s.sid, s.username, s.osuser, s.machine, s.PRogram,

t.xidusn,t.ubafil,t.ubablk,t.used_ublk, t.log_io, t.phy_io, t.cr_get, t.cr_change,

r.name, q.sql_text

FROM v$session s,v$transaction t, v$RollName r, v$sqlarea q

WHERE s.saddr=t.ses_addr

and t.xidusn = r.usn

and s.sql_address = q.address(+)

and s.sql_hash_value = q.hash_value(+)

And r,name = 'RBS_BATCH1';

果然發現有5個事務在占用BATCH1。但是發現會話狀態為INACTIVE。這說明它們當時并沒有運行INSERT/UPDATE/DELETE語句(曾經運行過,事務沒有結束),而是將回滾段資源hung住了。

再查下那些對象被hung在BATCH1中,

select l.session_id, l.os_user_name, l.oracle_username, o.owner, o.object_name, t.xidusn,t.ubafil,t.ubablk,t.used_ublk, t.used_urec,

t.log_io, t.phy_io, t.cr_get, t.cr_change, r.name

from v$locked_object l, dba_objects o, v$transaction t, v$RollName r

where l.object_id = o.object_id

and l.xidusn = t.xidusn

and l.xidslot = t.xidslot

and l.xidsqn = t.xidsqn

and t.xidusn = r.usn;

嗯,都是同一個對象:“TMP_CNT_GRP”。通過SID確認,確實上面的事務都是將這個對象hung在RBS中的。

經過檢查,原來這個對象是一個臨時表。我們知道,臨時表對象平時是不存在數據的。只有當一個會話使用臨時表,并向表中插入數據后,oracle才會在臨時表空間上創建它的數據對象。臨時表數據之所以只被所調用會話看到,是實際上是在每個會話中創建了一個單獨的數據對象,有各自的數據對象標號。因此盡管是同一個臨時表,每個會話只是copy一個表結構,而創建了不同的數據對象,這樣,會話之間就不會有數據干擾。而在一個會話中,對臨時表數據對象的處理跟普通數據對象處理基本相同,其中就包括臨時表對象在事務中的數據改動也會有回滾信息的產生。

回到我們的問題中。通過V$SESSION和V$SQL_AREA查到,這些會話都是調用了一個PLSQL函數,而且都是通過java調用的。

Review代碼,終于發現潛在問題了:這個函數的結果是返回一個游標,而游標恰恰關聯了這張臨時表。

INSERT INTO TMP_CNT_GRP ...

SELECT...

... ...

open v_cursor FOR

select TMP.CDE,

CAR.ID,

CAR.NME,

COUNT(DISTINCT TMP.NUM) TOTAL_CNT

from TMP_CNT_GRP TMP,

CSS_CAR CAR

WHERE TMP.ID = CAR.ID

GROUP BY TMP.CDE, CAR.ID, CAR.NME;

RETURN v_cursor;

DELETE TMP_CNT_GRP;

(這段代碼其實還存在一個問題,也就是最后的DELETE語句根本不會被調用)

從這段代碼中可以看到,實際上在整個函數當中,臨時表的數據根本不會被釋放;而且也沒有提交和回滾事務(盡管這是一個會話級的臨時表)。占用的回滾段也不會被釋放。這就存在這樣的潛在問題,如果調用者不關閉會話或提交/回滾事務的話,它所占用的回滾段就不會被釋放。事實上,經過讓java開發人員檢查代碼,果然發現客戶端在打開會話后,就沒有關閉,知道客戶端本身結束。

最后的解決辦法:

1、因為這是一個會話級的臨時表,數據在事務提交后繼續保留,因此在PLSQL函數中的insert語句后加上commit;

2、Java代碼在使用完游標后關閉會話。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品网站在线播放gif| 日本久久久久久久| 亚洲综合日韩中文字幕v在线| 国产精品色悠悠| 日韩欧美国产中文字幕| 亚洲一区美女视频在线观看免费| 亚洲色图在线观看| 亚洲韩国欧洲国产日产av| 欧美成人激情视频| 久久av在线播放| 国产欧美精品一区二区三区-老狼| 成人激情视频在线观看| 九色成人免费视频| 超碰97人人做人人爱少妇| 欧美成人四级hd版| 51精品在线观看| 国产精品一久久香蕉国产线看观看| 色噜噜狠狠狠综合曰曰曰| 亚洲国产天堂久久综合网| 欧美性高跟鞋xxxxhd| 国产精品久久久久久搜索| 亚洲精品一区av在线播放| 久久中文字幕视频| 久久黄色av网站| 色综合天天狠天天透天天伊人| www.久久色.com| 亚洲欧美精品一区| 欧美日韩加勒比精品一区| 九九精品视频在线| 久久成人综合视频| 这里只有精品丝袜| 97视频免费在线看| 欧美另类在线观看| 国产视频在线一区二区| 深夜成人在线观看| 91精品国产综合久久香蕉的用户体验| 国内精品久久久| 国产精品久久久久久久久久免费| 91在线观看免费高清完整版在线观看| 欧美精品videos| 狠狠躁18三区二区一区| 日韩av第一页| 欧美日韩加勒比精品一区| 亚洲第五色综合网| 精品国产福利视频| 91精品国产网站| 亚洲视频777| 国产精品一区二区三| 91网站在线免费观看| 精品久久久久久国产91| 国产精品视频999| 亚洲老板91色精品久久| 国产视频久久久久久久| 92国产精品久久久久首页| 国产精品自产拍在线观看| 亚洲欧洲成视频免费观看| 法国裸体一区二区| 色樱桃影院亚洲精品影院| 久久免费视频在线观看| 色香阁99久久精品久久久| 国内外成人免费激情在线视频网站| 中文字幕无线精品亚洲乱码一区| 色噜噜国产精品视频一区二区| 久久久视频免费观看| 国产精品久久久久久久久久久不卡| 一本一本久久a久久精品综合小说| 8x海外华人永久免费日韩内陆视频| 日韩美女视频在线观看| 色哟哟入口国产精品| 狠狠躁夜夜躁人人躁婷婷91| 国产91精品高潮白浆喷水| 精品国产依人香蕉在线精品| 欧美三级免费观看| 热99精品里视频精品| 久久视频精品在线| 7777kkkk成人观看| 欧美日本在线视频中文字字幕| 亚洲自拍偷拍第一页| 欧美激情喷水视频| 亚洲精品美女久久| 亚洲国产欧美日韩精品| 亚洲欧美另类人妖| 欧美性xxxx极品高清hd直播| 国产成人精品在线观看| 欧美激情二区三区| 久久久精品一区| 日韩精品免费综合视频在线播放| 亚洲色图激情小说| 久久久成人av| 欧美最猛性xxxxx(亚洲精品)| 欧美成人小视频| 国产在线观看精品一区二区三区| 国产精品私拍pans大尺度在线| 亚洲综合精品伊人久久| 欧美激情亚洲视频| 综合136福利视频在线| 亚洲欧美日韩一区二区在线| 欧美俄罗斯性视频| 成人久久久久久| 国产一区二区三区在线视频| 精品亚洲精品福利线在观看| 亚洲伊人久久大香线蕉av| 欧美一区二区三区免费观看| 91爱视频在线| 68精品久久久久久欧美| 国产精品嫩草影院久久久| 亚洲日本成人女熟在线观看| 亚洲成色www8888| 国产午夜精品麻豆| 38少妇精品导航| 亚洲人成啪啪网站| 欧美成人剧情片在线观看| 久久亚洲精品中文字幕冲田杏梨| 国产免费亚洲高清| 国产精品免费一区二区三区都可以| 欧美激情2020午夜免费观看| 国产精品成人一区二区| 51ⅴ精品国产91久久久久久| 亚洲欧美激情在线视频| 亚洲天堂av网| 久久久久久久91| 日本精品性网站在线观看| 69av视频在线播放| 精品久久久久久久大神国产| 91人人爽人人爽人人精88v| 久久久久久久一| 日本亚洲精品在线观看| 日韩精品免费在线视频| 亚洲第一区在线| 日韩影视在线观看| 97视频国产在线| 中文字幕日韩精品在线观看| 亚洲欧美国内爽妇网| 亚洲精品综合久久中文字幕| 欧美巨大黑人极品精男| 亚洲黄一区二区| 日韩中文综合网| 久久视频在线直播| 国产色视频一区| 97精品一区二区视频在线观看| 亚洲精品成人久久电影| 久久成人这里只有精品| 久久精品国产电影| 欧美另类69精品久久久久9999| 主播福利视频一区| 国产一区二区三区直播精品电影| 91系列在线观看| 久久久精品国产一区二区| 九色成人免费视频| 色诱女教师一区二区三区| 中文字幕精品在线| 日韩专区在线播放| 国产精品一区二区性色av| 91网站免费看| 日韩中文有码在线视频| 成人福利视频在线观看| 久久久精品久久久| 欧美高清视频在线| 日韩视频中文字幕| 亚洲国产精品小视频| 热99在线视频| 亚洲男子天堂网| 欧美大荫蒂xxx| 日韩毛片在线观看|