Data Pump falsely reports the number of imported rows as 1 (one)
Yesterday i did a large import using data pump and the network mode feature. I noticed a table containing a large number of rows were reported by data pump as imported but with only one (1) row.
First i checked my import options, checked for errors in source and target database and even cleaned up everything and restarted the import. Surprise surprise: Same error again.
The environment was:
- Oracle Enterprise Edition 10.2.0.4.0
- Solaris (SPARC) 10
- Data Pump Import with NETWORK_MODE
- excluding STATISTICS, GRANTS and ROLE_GRANTS
Extract from the data pump log file:
Processing object type SCHEMA_EXPORT/CLUSTER/CLUSTER Processing object type SCHEMA_EXPORT/CLUSTER/INDEX Processing object type SCHEMA_EXPORT/TABLE/TABLE . . imported "USER"."TABLE_A" 55082451 rows . . imported "USER"."SOME_LARGE_TABLE" 307126916 rows . . imported "USER"."ANOTHER_TABLE" 176936257 rows . . imported "USER"."JUST_ANOTHER_TABLE" 215682029 rows . . imported "USER"."HUGE_TABLE" 1 rows <==== . . imported "USER"."AND_SO_ON" 133356302 rows
So i started to dig a little bit deeper and noticed the source table has approx 62 million rows with a size of 28 GB. To my surprise the target database also reported the table with 28 gb in DBA_SEGMENTS.
So i did a simple:
SQL> select count(1) from user.huge_table;
COUNT(1) ---------- 62485290
Guess what? The table was imported correctly with all rows while data pump reported only one imported row.
I check metalink for related errors but found nothing.
I can only guess if this is a bug or there is some time limit when querying the rows of the just imported tables.
Update: I did some reseach and created a really large table with 1 billion rows the data pump showed:
. . imported "USER"."TABLE_WITH_1_BILLION_ROWS" -1416726547 rows
There might be some kind of counter overflow…. i will investiage this further.