Friday 2 December 2011

Expdp completed with warnings

ISSUE: EXPDP FAILED WITH WARNINGS
Problem Description: Getting error while taking full backup using expdp,
ORA-31693: Table data object "APPLSYS"."FND_LOBS" failed to load/unload and is being skipped due to error:
ORA-02354: error in exporting/importing data
ORA-01555: snapshot too old: rollback segment number with name "" too small
ORA-22924: snapshot too old

FINDINGS:
SQL> select owner, table_name, column_name, tablespace_name, pctversion, retention
2 from dba_lobs
3 where table_name='FND_LOBS' and owner='APPLSYS';

OWNER TABLE_NAME
------------------------------ ------------------------------
COLUMN_NAME
----------------------------------------------------------------------------------------------------
TABLESPACE_NAME PCTVERSION RETENTION
------------------------------ ---------- ----------
APPLSYS FND_LOBS
FILE_DATA
APPS_TS_MEDIA 10

SQL> show parameter undo;

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_management string AUTO
undo_retention integer 900
undo_tablespace string APPS_UNDOTS1

SQL> select object_name, object_type, table_name, decode(bitand(flags,32),32,
2 'RETENTION','PCTVERSION') from sys.lob$, dba_objects, dba_lobs
3 where lobj#=object_id and object_type='LOB' and object_name=segment_name and
4 table_name='FND_LOBS';

OBJECT_NAME
----------------------------------------------------------------------------------------------------
OBJECT_TYPE TABLE_NAME DECODE(BIT
------------------- ------------------------------ ----------
SYS_LOB0000048967C00004$$
LOB FND_LOBS PCTVERSION

SQL> select owner, table_name, column_name, tablespace_name, pctversion, retention from dba_lobs  where table_name='FND_LOBS' and owner='APPLSYS';

OWNER      TABLE_NAME COLUMN_NAME          TABLESPACE_NAME                PCTVERSION  RETENTION
---------- ---------- -------------------- ------------------------------ ---------- ----------
APPLSYS    FND_LOBS   FILE_DATA            APPS_TS_MEDIA                          10

SQL> conn apps/apps
Connected.
SQL> create table corrupt_lobs (corrupt_rowid rowid);

Table created.

SQL> set serverout on
exec dbms_output.enable(100000);
declare
pag    number;
len    number;
c      varchar2(10);
charpp number := 8132/2;

begin
for r in (select rowid rid, dbms_lob.getlength (FILE_DATA) len
SQL>             from   FND_LOBS) loop
if r.len is not null then
for page in 0..r.len/charpp loop
begin

PL/SQL procedure successfully completed.

SQL>   2            select dbms_lob.substr (FILE_DATA, 1, 1+ (page * charpp))
3    4            into   c
5    6    7    8    9            from   FND_LOBS
10   11   12   13            where  rowid = r.rid;
14   15   16   17
exception
18   19            when others then
20              dbms_output.put_line ('Error on rowid ' ||R.rid||' page '||page
dbms_output.put_line (sqlerrm);
21          end;
22   23        end loop;
end if;
24   25    end loop;
end;
26   27  /

Error on rowid AAAL9HAAPAAAezUAAE page 0
ORA-01555: snapshot too old: rollback segment number  with name "" too small
ORA-22924: snapshot too old
ORA-06512: at "SYS.DBMS_LOB", line 996
ORA-06512: at line 1
Error on rowid AAAL9HAAPAAAezUAAE page 1
ORA-01555: snapshot too old: rollback segment number  with name "" too small
ORA-22924: snapshot too old
ORA-06512: at "SYS.DBMS_LOB", line 996
ORA-06512: at line 1
Error on rowid AAAL9HAAPAAAezUAAE page 2
ORA-01555: snapshot too old: rollback segment number  with name "" too small
ORA-22924: snapshot too old
ORA-06512: at "SYS.DBMS_LOB", line 996
ORA-06512: at line 1
Error on rowid AAAL9HAAPAAAezUAAE page 3
ORA-01555: snapshot too old: rollback segment number  with name "" too small
ORA-22924: snapshot too old
ORA-06512: at "SYS.DBMS_LOB", line 996
ORA-06512: at line 1

PL/SQL procedure successfully completed.

conn apps/apps
SQL> create table corrupt_lobs (corrupt_rowid rowid);

SQL> 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, FILE_DATA from APPLSYS.FND_LOBS) loop
begin
n:=dbms_lob.instr(cursor_lob.FILE_DATA,hextoraw('889911'));
exception
when error_1578 then
insert into corrupt_lobs values (cursor_lob.r);
commit;
when error_1555 then
insert into corrupt_lobs values (cursor_lob.r);
commit;
when error_22922 then
insert into corrupt_lobs values (cursor_lob.r);
commit;
end;
end loop;
end;
/

PL/SQL procedure successfully completed.
SQL > select * from corrupt_lobs;

CORRUPT_ROWID
------------------
AAAL9HAAPAAAezUAAE

To confirm the corrupted LOB, run the expdp for this rowid
$ expdp directory=DATAPUMP_EBSDBPRD dumpfile=test.dmp logfile=test.log tables=APPLSYS.FND_LOBS query=\"where rowid = \'AAAL9HAAPAAAezUAAE\'\"

Export: Release 11.2.0.1.0 - Production on Tue Oct 18 13:46:58 2011

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

Username: system
Password:

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options
Starting "SYSTEM"."SYS_EXPORT_TABLE_01":  system/******** directory=DATAPUMP_EBSDBPRD dumpfile=test.dmp logfile=test.log tables=APPLSYS.FND_LOBS query="where rowid = 'AAAL9HAAPAAAezUAAE'"
Estimate in progress using BLOCKS method...
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 4.958 GB
Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type TABLE_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT
Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX
Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type TABLE_EXPORT/TABLE/INDEX/DOMAIN_INDEX/INDEX
Processing object type TABLE_EXPORT/TABLE/POST_INSTANCE/PROCACT_INSTANCE
Processing object type TABLE_EXPORT/TABLE/POST_INSTANCE/PROCDEPOBJ
Processing object type TABLE_EXPORT/TABLE/POST_INSTANCE/GRANT/PROCDEPOBJ_GRANT
ORA-31693: Table data object "APPLSYS"."FND_LOBS" failed to load/unload and is being skipped due to error:
ORA-29913: error in executing ODCIEXTTABLEPOPULATE callout
ORA-01555: snapshot too old: rollback segment number  with name "" too small
ORA-22924: snapshot too old
Master table "SYSTEM"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded
******************************************************************************
Dump file set for SYSTEM.SYS_EXPORT_TABLE_01 is:
/orabackup/IFEBPRD1_EXPDP/test.dmp
Job "SYSTEM"."SYS_EXPORT_TABLE_01" completed with 1 error(s) at 13:50:28

SQL> select count(*) from fnd_lobs;

COUNT(*)
----------
89089

Solution:

SQL> update LOBDATA set document = empty_blob()
where rowid in (select corrupt_rowid from corrupt_lobs);

Export Receives The Erroros ORA-1555 ORA-22924 ORA-1578 ORA-22922 [ID 787004.1]

No comments:

Post a Comment