日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

django oracle clob,记一次clob字段损坏导致的01555错误

發(fā)布時(shí)間:2025/4/5 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 django oracle clob,记一次clob字段损坏导致的01555错误 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

這個(gè)專(zhuān)題講一些日常運(yùn)維的異常處理

1. 現(xiàn)象

開(kāi)發(fā)人員找說(shuō)應(yīng)用連接不上,報(bào)ORA-01555錯(cuò)誤

2. 原因查找

2.1 查看undo使用率等情況

第一反應(yīng)當(dāng)然是查詢是否undo表空間不足

通過(guò)如下命令查詢

SELECT round(((SELECT (NVL(SUM(bytes), 0))FROM dba_undo_extents

WHERE tablespace_name =

(select value from v$parameter

where lower(name) = 'undo_tablespace')

AND status IN ('ACTIVE', 'UNEXPIRED')) * 100) /

(SELECT SUM(bytes) FROM dba_data_files

WHERE tablespace_name =

(select value from v$parameter

where lower(name) = 'undo_tablespace')), 2) PCT_INUSE

FROM dual

使用率很低,而且數(shù)據(jù)庫(kù)重啟過(guò),我們暫時(shí)排除

2.2 檢查表的情況

我們首先執(zhí)行手動(dòng)執(zhí)行該語(yǔ)句,在sqlplus中運(yùn)行也是報(bào)錯(cuò)

在plsql中執(zhí)行顯示value error

字段是clob字段,看來(lái)這就是原因了,是由于clob字段損壞導(dǎo)致

因?yàn)镃LOB字段的undo信息是存儲(chǔ)在clob塊中的,其保留策略通過(guò)PCTVERSION(百分比)?和RETENTION(時(shí)間)字段控制

2.3 檢查clob損壞情況

我們通過(guò)如下語(yǔ)句查詢?cè)揷lob字段是否有損壞

將替換成value error的字段名

將替換成該字段所在的表名

set serverout on

exec dbms_output.enable(100000);

declare

page number;

len number;

c varchar2(10);

charpp number := 8132/2;

begin

for r in (select rowid rid, dbms_lob.getlength () len

from ) loop

if r.len is not null then

for page in 0..r.len/charpp loop

begin

select dbms_lob.substr (, 1, 1+ (page * charpp))

into c

from

where rowid = r.rid;

exception

when others then

dbms_output.put_line ('Error on rowid ' ||R.rid||' page '||page);

dbms_output.put_line (sqlerrm);

end;

end loop;

end if;

end loop;

end;

/

這時(shí)我們查出來(lái)有三行,我們記住其rowid

2.4 跟蹤01555錯(cuò)誤

我們可以利用如下語(yǔ)句對(duì)該錯(cuò)誤進(jìn)行跟蹤,當(dāng)發(fā)生錯(cuò)誤時(shí)alert日志會(huì)有記錄并生成trace文件

alter system set events '1555 trace name errorstack level 3';

2.5 expdp排查clob損壞的行

如果在導(dǎo)出的話,clob字段損壞會(huì)導(dǎo)致失敗,這時(shí)我們可以使用如下參數(shù)跳過(guò)指定的行

expdp \"/ as sysdba\" tables="ISUGDP"."TEXT_FOR_ECP" directory=DROPZONE dumpfile=table.dmp logfile=table.log QUERY=\"WHERE rowid NOT IN \(SELECT CORRUPTED_ROWID FROM CORRUPTED_ROWS\)\"

3. 解決方法

知道了原因后,如果這幾行數(shù)據(jù)很重要,則需要?jiǎng)e的恢復(fù)手段將其恢復(fù)(RMAN)

如果不需要這幾行數(shù)據(jù)我們可以將其刪除

delete from table where rowid='AAAV1RAAEAAD5dGAAC';

之后問(wèn)題解決

4. 參考連接

總結(jié)

以上是生活随笔為你收集整理的django oracle clob,记一次clob字段损坏导致的01555错误的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。