Wednesday, March 27, 2019

Data Pump job encountered unexpected error 1427

Error Details :

ORA-39097: Data Pump job encountered unexpected error -1427


ORA-39065: unexpected master process exception in DISPATCH
ORA-01427: single-row subquery returns more than one row

Job "SYSTEM"."TESTIMPRT" stopped due to fatal error at Wed Mar 27 04:13:18 2019 elapsed 0 00:33:58


Root Cause Analysis(RCA):


1.Some DataPump Metadata stored in the METANAMETRANS$ table was missing. You can verify this by selecting from the table which will likely return no rows.


SQL> connect / as sysdba


SQL> select count(*) from metanametrans$;


COUNT(*)


----------


         0

2.While on a database where this table is correctly populated, should return many rows similar to the following run against:
SQL> select count(*) from metanametrans$;
COUNT(*)

----------


     689


Solution:


Run the following scripts connected as SYSDBA to correctly populate this table required by DataPump, then re-run the export. The database does not need to be in restricted mode to run the scripts.


sqlplus / as sysdba

@$ORACLE_HOME/rdbms/admin/catmet2.sql
@$ORACLE_HOME/rdbms/admin/utlrp.sql

Output:

SQL> @$ORACLE_HOME/rdbms/admin/catmet2.sql

PL/SQL procedure successfully completed.



PL/SQL procedure successfully completed.



PL/SQL procedure successfully completed.



PL/SQL procedure successfully completed.



PL/SQL procedure successfully completed.



PL/SQL procedure successfully completed.



PL/SQL procedure successfully completed.


SQL> @$ORACLE_HOME/rdbms/admin/utlrp.sql


TIMESTAMP

--------------------------------------------------------------------------------
COMP_TIMESTAMP UTLRP_BGN  2019-03-27 04:27:58

DOC>   The following PL/SQL block invokes UTL_RECOMP to recompile invalid

DOC>   objects in the database. Recompilation time is proportional to the
DOC>   number of invalid objects in the database, so this command may take
DOC>   a long time to execute on a database with a large number of invalid
DOC>   objects.
DOC>
DOC>   Use the following queries to track recompilation progress:
DOC>
DOC>   1. Query returning the number of invalid objects remaining. This
DOC>      number should decrease with time.
DOC>         SELECT COUNT(*) FROM obj$ WHERE status IN (4, 5, 6);
DOC>
DOC>   2. Query returning the number of objects compiled so far. This number
DOC>      should increase with time.
DOC>         SELECT COUNT(*) FROM UTL_RECOMP_COMPILED;
DOC>
DOC>   This script automatically chooses serial or parallel recompilation
DOC>   based on the number of CPUs available (parameter cpu_count) multiplied
DOC>   by the number of threads per CPU (parameter parallel_threads_per_cpu).
DOC>   On RAC, this number is added across all RAC nodes.
DOC>
DOC>   UTL_RECOMP uses DBMS_SCHEDULER to create jobs for parallel
DOC>   recompilation. Jobs are created without instance affinity so that they
DOC>   can migrate across RAC nodes. Use the following queries to verify
DOC>   whether UTL_RECOMP jobs are being created and run correctly:
DOC>
DOC>   1. Query showing jobs created by UTL_RECOMP
DOC>         SELECT job_name FROM dba_scheduler_jobs
DOC>            WHERE job_name like 'UTL_RECOMP_SLAVE_%';
DOC>
DOC>   2. Query showing UTL_RECOMP jobs that are running
DOC>         SELECT job_name FROM dba_scheduler_running_jobs
DOC>            WHERE job_name like 'UTL_RECOMP_SLAVE_%';
DOC>#

PL/SQL procedure successfully completed.

.
.
.

No comments:

Post a Comment

How can I restore Cassandra snapshots?