您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Oracle-expdp ora-1555

bubuko 2022/1/25 20:04:21 其他 字数 4368 阅读 707 来源 http://www.bubuko.com/infolist-5-1.html

expdp job with error of ORA-2354 ORA-1555 ORA-22924 ...

1. 问题现象

QQ截图20200319182901

2. 分析处理

2.1 确认导出异常表是否包含lob column坏块 -- 787004.1

-- 1. 创建临时表存储坏块的lob对象
create table corrupt_lobs (corrupt_rowid rowid, err_num number);

-- 2. 查看表大对象字段名称
set lines 168 pages 99
col COLUMN_NAME for a32
col SEGMENT_NAME for a48
select COLUMN_NAME,SEGMENT_NAME from DBA_LOBS
where owner=upper(‘&&tab_owner‘) and TABLE_NAME=upper(‘&&tab_name‘);

-- 3. 查找corrupted LOBs 并插入临时表
set verify off;

declare
  error_1578 exception;
  error_1555 exception;
  error_22922 exception;
  pragma exception_init(error_1578,-1578);
  pragma exception_init(error_1555,-1555);
  pragma exception_init(error_22922,-22922);
  n number;
begin
  for cursor_lob in (select rowid r, COLUMN_NAME from DBA_LOBS where owner=upper(‘&&tab_owner‘) and TABLE_NAME=upper(‘&&tab_name‘)) loop
  begin
    n:=dbms_lob.instr(cursor_lob.COLUMN_NAME,hextoraw(‘889911‘));
  exception
    when error_1578 then
      insert into corrupt_lobs values (cursor_lob.r, 1578);
      commit;
    when error_1555 then
      insert into corrupt_lobs values (cursor_lob.r, 1555);
      commit;
    when error_22922 then
      insert into corrupt_lobs values (cursor_lob.r, 22922);
      commit;
    end;
  end loop;
end;
/

-- 4. 将 大字段列设置为空或是排除导出
SQL> update &&tab_owner.&&tab_name set &&lob_column = empty_blob()
     where rowid in (select corrupt_rowid from corrupt_lobs);
SQL> commit;

or

expdp <USER>/<PASSWORD> DIRECTORY=data_pump_dir DUMPFILE=<DUMP_NAME>.dmp LOGFILE=<LOG_NAME>.dmp.log TABLES=<SCHEMA_NAME>.<TABLE_NAME> QUERY=\"where rowid not in \(\‘AAEWBsAAGAAACewAAC\‘, \‘AAEWBsAAGAAACewAAF\‘, \‘AAEWBsAAGAAACewAAG\‘\)\" 


2.2 检查undo表空间信息和使用情况

show parameter undo_retention
select /*+ rule */ tablespace_name,round(sum(bytes)/1024/1024/1024) size_gb
from dba_data_files
where tablespace_name like ‘%UNDO%‘ group by tablespace_name;
select column_name, pctversion, retention
       from dba_lobs
      where table_name = ‘&&tab_name‘
        and owner = ‘&&tab_owner‘;
select segment_name,
       tablespace_name,
       r.status,
       (initial_extent / 1024) InitialExtent,
       (next_extent / 1024) NextExtent,
       max_extents,
       v.curext CurExtent
  From dba_rollback_segs r, v$rollstat v
 Where r.segment_id = v.usn(+)
   and segment_name = ‘&&lob_column‘;

-- 若需要调整undo retention
alter system set undo_retention=3600 scope=both;
ALTER TABLE &&tab_owner.&&tab_name MODIFY LOB(&&lob_column)(retention);

Oracle-expdp ora-1555

原文:https://www.cnblogs.com/binliubiao/p/12526490.html


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶