错误,如题所示,具体报错如下:

看看上面出问题的数据表的详情:

对于该报错,Oracle Support,也有说明:
ORA-01555 And Other Errors while Exporting Table With LOBs, How To Detect Lob Corruption. (文档 ID 452341.1)

确认到底是那些BLOB有问题:

Code:
————————————
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;
/
————————————
创建一个表存放出错的对象的ROWID信息:

根据上面的ROWID,去看看能不能导出:

换一种方式试试:

很显然是不行的。

修复BLOB带来的问题:

再次查看:

问题已经得到修正。

另外,上面为了查找某个USER下有哪些BLOB,我写了一个SQL:
set pagesize 45;
col table_name for a24
col column_name for a24
col owner for a12
select owner|| ‘.’ ||table_name|| ‘.’ ||column_name from dba_tab_columns where owner in (‘VPX’,’VCLOUD’) and DATA_TYPE=’BLOB’;
————————————
Done。

Subscribe
提醒
guest

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

6 评论
Inline Feedbacks
View all comments
隐藏
变装
6
0
Would love your thoughts, please comment.x
()
x