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