Professional Documents
Culture Documents
Export Receives The Errors ORA-1555 ORA-22924 ORA-1578 ORA-22922 (Doc ID 787004.1)
Pgina 1 de 1
To Bottom
In this Document
Symptoms
Cause
Solution
References
APPLIES TO:
Oracle Database - Enterprise Edition - Version 9.2.0.1 to 11.2.0.3 [Release 9.2 to 11.2]
Information in this document applies to any platform.
***Checked for relevance on 7-FEB-2011***
SYMPTOMS
When exporting tables having LOB columns, using data pump or conventional export the following errors might occur:
expdp:
Processing
ORA-31693:
ORA-29913:
ORA-01555:
ORA-22924:
exp:
. . exporting table LOBDATA
EXP-00056: ORACLE error 1555 encountered
ORA-01555: snapshot too old: rollback segment number with name "" too small
ORA-22924: snapshot too old
or:
EXP-00056: ORACLE error 22922 found
ORA-22922: nonexistent LOB value
. . Export der Tabelle LOBDATA 2 rows exported
CAUSE
The ORA-1555 does not always confirm a corruption in LOB segment. This can also occur due to the fact that LOB PCTVERSION or RETENTION are low. The
proposed solution below should not be used on ORA-1555, if:
1. You can't confirm that no updates were made to that LOB while you ran the script
and:
2. You don't have confirmation that exactly the identical ROWIDs are reported by 2 independent script executions.
Otherwise, all the above errors are produced when exporting, because the LOBs stored in the table to be exported might be corrupted.
To have this checked a PLSQL block should be run against the table.
As there is already a PLSQL procedure indicated in various notes such as: Note 452341.1 or Note 253131.1, the reason for this article is to propose a PLSQL block
which will run faster and consumes much less memory.
The PLSQL indicated in the previous articles cannot be run against large tables due to the fact that they can fail with memory errors like an ORA-04031 error.
SOLUTION
For this reason I propose a simple PLSQL block in this new note, which runs faster and does not consume much of the system resources.
LOBDATA was used as the table which should be checked for any potential corrupted LOBs:
-- 1. Create a new temporary table for storing all rowids of the corrupted LOBs. Let's call it "corrupt_lobs"
SQL> create table corrupt_lobs (corrupt_rowid rowid, err_num number);
-- 2. Make a desc on the table containing the LOB column:
DESC LOBDATA
Name
Null?
---------- --------ID
NOT NULL
DOCUMENT
Type
-----------NUMBER
BLOB
https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=4175192789852... 26/09/2015