The other day I was doing an import using impdp in 12.1.0.2 , and got the following error ORA-30926: unable to get a stable set of rows in the source tables.
[bash]
Starting "SYS_PYTHIAN"."SYS_IMPORT_TABLE_03": sys_pythian/******** parfile=table_import.par
Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type TABLE_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT
Processing object type TABLE_EXPORT/TABLE/COMMENT
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/CONSTRAINT/REF_CONSTRAINT
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type TABLE_EXPORT/TABLE/STATISTICS/MARKER
ORA-39126: Worker unexpected fatal error in KUPW$WORKER.STATS_LOAD [MARKER]
MARKER
ORA-30926: unable to get a stable set of rows in the source tables
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 105
ORA-06512: at "SYS.KUPW$WORKER", line 11265
—– PL/SQL Call Stack —–
object line object
handle number name
0x12f199188 27116 package body SYS.KUPW$WORKER
0x12f199188 11286 package body SYS.KUPW$WORKER
0x12f199188 24286 package body SYS.KUPW$WORKER
0x12f199188 24415 package body SYS.KUPW$WORKER
0x12f199188 20692 package body SYS.KUPW$WORKER
0x12f199188 10206 package body SYS.KUPW$WORKER
0x12f199188 13381 package body SYS.KUPW$WORKER
0x12f199188 3173 package body SYS.KUPW$WORKER
0x12f199188 12035 package body SYS.KUPW$WORKER
0x12f199188 2081 package body SYS.KUPW$WORKER
0x12ffe7908 2 anonymous block
In STATS_UNLOAD
DBMS_STATS.EXPORT_STATS_FOR_DP
DBMS_STATS.EXPORT_STATS_FOR_DP
In STATS_LOAD with process_order 39
Fixing up the name in the impdp stat table
ORA-39126: Worker unexpected fatal error in KUPW$WORKER.STATS_LOAD [MARKER]
ORA-30926: unable to get a stable set of rows in the source tables
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 95
ORA-06512: at "SYS.KUPW$WORKER", line 11259
—– PL/SQL Call Stack —–
object line object
handle number name
0x6fc030c8 27116 package body SYS.KUPW$WORKER
0x6fc030c8 11286 package body SYS.KUPW$WORKER
0x6fc030c8 24286 package body SYS.KUPW$WORKER
0x6fc030c8 24415 package body SYS.KUPW$WORKER
0x6fc030c8 10105 package body SYS.KUPW$WORKER
0x6fc030c8 13381 package body SYS.KUPW$WORKER
0x6fc030c8 3173 package body SYS.KUPW$WORKER
0x6fc030c8 12035 package body SYS.KUPW$WORKER
0x6fc030c8 2081 package body SYS.KUPW$WORKER
0x134b42cf8 2 anonymous block
In STATS_UNLOAD
DBMS_STATS.EXPORT_STATS_FOR_DP
DBMS_STATS.EXPORT_STATS_FOR_DP
In STATS_LOAD with process_order 39
Fixing up the name in the impdp stat table
Job "SYS_PYTHIAN"."SYS_IMPORT_TABLE_03" stopped due to fatal error at Thu Jan 19 13:47:30 2017 elapsed 0 00:01:58
[/bash]
While investigating, I found that the source database had OLAP option removed and found a document 1353491.1 that I thought it could help that states that if the package DBMS_CUBE_EXP is present in SYS.EXPPKGACT$ and it does not exist it should be deleted, so I did that :
[bash]
SQL> SELECT comp_id, status, SUBSTR(version,1,10) version, comp_name
FROM dba_registry ORDER BY 1;
COMP_ID STATUS VERSION COMP_NAME
—————————— ———– ———- ——————————————–
CATALOG VALID 12.1.0.2.0 Oracle Database Catalog Views
CATPROC VALID 12.1.0.2.0 Oracle Database Packages and Types
XDB VALID 12.1.0.2.0 Oracle XML Database
SQL> select *
FROM SYS.EXPPKGACT$
WHERE PACKAGE = ‘DBMS_CUBE_EXP’ AND SCHEMA= ‘SYS’;
PACKAGE SCHEMA CLASS LEVEL#
—————– ———- ———- ———-
DBMS_CUBE_EXP SYS 4 1050
SQL> select PACKAGE, SCHEMA, class from exppkgact$ where (schema, package)
not in
(select owner, object_name
from dba_objects
where object_type=’PACKAGE’);
PACKAGE SCHEMA CLASS
————————– ———- ———-
DBMS_CUBE_EXP SYS 4
SQL> create table exppkgact$_bck as select * from exppkgact$;
Table created.
SQL> delete from exppkgact$ where package = ‘DBMS_CUBE_EXP’ and schema = ‘SYS’;
1 row deleted.
SQL> commit;
Commit complete.
[/bash]
But still got the same error,  so after doing more research, I found a workaround , to run the import without stats , once I did that, I was able to run the import successfully and as this was a development database I just ran stats on the table, but if you need to, you can then do a
[bash]
[oracle@ ~ ]$ cat table_import.par
tables=TEST.TEST_TABLE
directory=export_dir_pythian
logfile=impdp.log
network_link=PYTHIAN
TABLE_EXISTS_ACTION=replace
EXCLUDE=STATISTICS
STATUS=120
[oracle@ ~ ]$ cat impdp.log
;;;
Import: Release 12.1.0.2.0 – Production on Thu Jan 19 13:49:57 2017
Copyright (c) 1982, 2014, Oracle and/or its affiliates. All rights reserved.
;;;
Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 – 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Advanced Analytics and Real Application Testing options
Starting "SYS_PYTHIAN"."SYS_IMPORT_TABLE_04": sys_pythian/******** parfile=table_import.par
Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type TABLE_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT
Processing object type TABLE_EXPORT/TABLE/COMMENT
Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX
Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
. . imported "TEST"."TEST_TABLE" 222224 rows
Job "SYS_PYTHIAN"."SYS_IMPORT_TABLE_04" successfully completed at Thu Jan 19 13:50:07 2017 elapsed 0 00:00:07
[/bash]
Conclusion
Hope this workaround helps you if you ever face this error while doing an impdp over a database link