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

首頁 > 開發 > 綜合 > 正文

Replace函數操作CLOB導致臨時表空間泄露

2024-07-21 02:43:30
字體:
來源:轉載
供稿:網友
工作中發現生產系統拋出ORA-01652錯誤,經過查找跑錯的程序,發現是這段代碼(只是演示代碼,并不是原代碼)拋出的錯誤:

package_body ppp

aaa clob;

...

PRocedure change_content()

begin

...

aaa := replace(aaa, 'b', ';;');

...

end;

procedure call_f()

begin

aaa := empty_clob();

aaa := 'aaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaa’

for i in 1..10000 loop

change_content();

end loop;

end;

從邏輯上看,這段代碼可以使用下面的代碼進行模擬,

declare

aaa clob;

begin

aaa := empty_clob();

aaa := 'aaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaa’

for i in 1..10000 loop

aaa := replace(aaa, 'b', ';;');

end loop;

end;

許多人都知道,在PLSQL中的LOB類型變量是占用臨時表空間的。但是,從以上代碼看,CLOB變量aaa的初始值并沒有占用太大空間。我們在測試環境上運行該語句,用以下語句觀察其臨時表空間占用情況。

SELECT b.tablespace,

ROUND(((b.blocks*p.value)/1024/1024),2)||'M' "SIZE",

b.CONTENTS,

s.sql_text,

a.sid||','||a.serial# SID_SERIAL,

a.username,

a.program,

sysdate as log_date

FROM sys.v_$session a,

sys.v_$sort_usage b,

sys.v_$parameter p,

v$sqlarea s

WHERE p.name = 'db_block_size'

AND a.saddr = b.session_addr

AND a.sql_address = s.address and a.sql_hash_value = s.hash_value

ORDER BY b.tablespace, b.blocks;

TABLESPACE SIZE CONTENTS SQL_TEXT SID_SERIAL USERNAME PROGRAM LOG_DATE

---------------------------------------------------------------------------------

TEMP 37M TEMPORARY declare aaa clob; begin aaa := empty_clob(); aaa := 'aaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaa';

for i in 1..1000000000 loop aaa := replace(aaa, 'a', ';;'); end loop; end; 137,28675 DEMO plsqldev.exe 8/15/2007 11:42:11 AM

發現臨時表空間在不停增長。問題就在于aaa := replace(aaa, 'b', ';;').Replace()函數會先將傳入的CLOB參數變量在temp空間上保存一份,然后再轉換為varchar2類型進行操作。這樣,每次進行了replace操作后,就多占據了一份temp空間。

大家可以通過包dbms_lob中提供的copy、instr和write函數來自己編寫一個clob的字符替換函數,來避免temp空間的泄露。以下存儲過程實現了CLOB中的字符串替換。

create or replace procedure lob_replace( p_lob in out clob,

p_what in varchar2,

p_with in varchar2 )

as

n number;

len number;

begin

n := dbms_lob.instr( p_lob, p_what );

while ( nvl(n,0) > 0 ) loop

len := dbms_lob.getlength(p_lob);

if (n+length(p_with)-1 > len)

then

dbms_lob.writeappend( p_lob, n+length(p_with)-1 - len, p_with );

end if;

if (len-n-length(p_what)+1 > 0)

then

dbms_lob.copy( p_lob,

p_lob,

len-n-length(p_what)+1,

n+length(p_with),

n+length(p_what) );

end if;

dbms_lob.write( p_lob, length(p_with), n, p_with );

if ( length(p_what) > length(p_with) )

then

dbms_lob.trim( p_lob,

dbms_lob.getlength(p_lob)-(length(p_what)-length(p_with)) );

end if;

n := dbms_lob.instr( p_lob, p_what );

end loop;

end;

結論:

使用上面的過程代替replace函數,再次運行程序,用以上語句進行觀察,不再存在臨時空間泄露的情況。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩欧美主播在线| 中文字幕欧美日韩精品| 91网站在线免费观看| 亚洲aⅴ男人的天堂在线观看| 亚洲人成自拍网站| 久久色免费在线视频| 51精品国产黑色丝袜高跟鞋| 久久综合免费视频影院| 国产视频亚洲精品| 欧美日韩第一视频| 欧美国产精品日韩| 91丨九色丨国产在线| 中文字幕自拍vr一区二区三区| 中文字幕久热精品视频在线| 一本色道久久综合狠狠躁篇怎么玩| 欧美理论电影在线播放| 亚洲欧美一区二区三区久久| 久久人体大胆视频| 亚洲a成v人在线观看| 欧美精品videos| 久久久久久久影院| 亚洲欧美成人在线| 亚洲高清在线观看| 亚洲国产精品99| 国产亚洲aⅴaaaaaa毛片| 中文字幕九色91在线| 欧美日韩高清区| 综合久久五月天| 国产精彩精品视频| 国产精品入口免费视| 另类美女黄大片| 国产欧美中文字幕| 久久久精品美女| 亚洲国产精品人久久电影| xvideos成人免费中文版| 日韩av男人的天堂| 久久成人免费视频| 2019亚洲日韩新视频| 在线观看国产精品淫| 欧美成人精品在线播放| 国产精品久久在线观看| 欧美视频一区二区三区…| 国产精品久久久久9999| 欧美俄罗斯乱妇| 久久天天躁日日躁| 久久精品视频网站| 欧美日韩国产中文字幕| 国产在线观看不卡| 日韩av网址在线观看| 一区二区欧美日韩视频| 91精品国产自产在线老师啪| 日韩**中文字幕毛片| 欧美另类99xxxxx| 久久99精品久久久久久青青91| 欧美亚洲日本黄色| 日韩av三级在线观看| 色偷偷偷综合中文字幕;dd| 俺也去精品视频在线观看| 欧美成人精品不卡视频在线观看| 91av视频在线观看| 亚洲乱亚洲乱妇无码| 中文字幕欧美精品在线| 69久久夜色精品国产69乱青草| 国产精品久久久久av| 久久久亚洲国产天美传媒修理工| 国产成人在线视频| 亚洲精品久久久久国产| 国色天香2019中文字幕在线观看| 亚洲欧洲第一视频| 隔壁老王国产在线精品| 91久久嫩草影院一区二区| 亚洲最大的成人网| 国色天香2019中文字幕在线观看| 亚洲男人天堂网| 欧美激情中文字幕在线| 久久精品99久久香蕉国产色戒| 精品国产网站地址| 久热精品在线视频| 日韩有码片在线观看| 国产成人啪精品视频免费网| 亚洲美女av在线播放| 91地址最新发布| 91精品国产乱码久久久久久久久| 亚洲免费视频观看| 亚洲国产欧美在线成人app| www.精品av.com| 欧美日韩第一视频| 国产美女91呻吟求| 色噜噜久久综合伊人一本| 久久精品国产99国产精品澳门| 亚洲精品www久久久| 欧美日韩中文在线观看| 日韩精品中文字| 欧美在线免费看| 国产成人91久久精品| 国产精品激情av在线播放| 91极品女神在线| 日韩av在线免费观看一区| 欧美性猛交xxxx免费看久久久| 福利微拍一区二区| 精品国产一区二区三区久久久狼| 日韩视频永久免费观看| 欧美极度另类性三渗透| 91精品视频观看| 久久99国产精品自在自在app| 久久久久久网址| 国产精品福利无圣光在线一区| 亚洲aaa激情| 在线日韩第一页| 日韩免费看的电影电视剧大全| 欧美午夜女人视频在线| 欧美高清在线视频观看不卡| 欧美剧在线观看| 亚洲国产精彩中文乱码av| 2021国产精品视频| 中文字幕日韩av| 成人久久精品视频| 欧美中文字幕视频| 亚洲成人在线视频播放| 国产美女精品视频免费观看| 精品亚洲aⅴ在线观看| 91sa在线看| 国语自产精品视频在线看一大j8| 久久久久久久久久久久久久久久久久av| 亚洲欧美中文在线视频| 欧美日韩裸体免费视频| 欧美日韩在线视频一区二区| 中文字幕精品国产| 26uuu亚洲伊人春色| 中文字幕精品一区久久久久| 国产综合福利在线| 国产精品白嫩初高中害羞小美女| 成人精品在线观看| 国产在线a不卡| 中文字幕日韩精品有码视频| 亚洲精品videossex少妇| 亚洲人a成www在线影院| 欧美一区二区视频97| 亚洲免费视频在线观看| 亚洲人成人99网站| 久久久这里只有精品视频| 成人中文字幕在线观看| 亚洲欧美日本精品| 亚洲欧美中文另类| 欧美激情精品久久久久久黑人| 国产精品99导航| 久久久av免费| 亚洲男人天堂古典| 国产色视频一区| 欧美黑人极品猛少妇色xxxxx| 91久久精品久久国产性色也91| 亚洲开心激情网| 欧美国产日韩免费| 亚洲国产天堂久久综合网| 日本精品久久久久久久| 欧美午夜美女看片| 伊人久久久久久久久久| 亚洲国产美女精品久久久久∴| 久久久久久亚洲精品中文字幕| 国产日韩欧美电影在线观看| 91伊人影院在线播放| 欧美一级视频免费在线观看| 久久久97精品| 欧美专区第一页|