Background:
Recently, we are engaged in data migration. We have migrated data from U1 users in database A to U2 users in database B. We have used open-source kettle to work with the Data Pump. It's Okay during the test, but it's actually going online, they got stuck there in the early morning. The next day, we found that impdp was stuck there, but we didn't see any errors in the log. Then I did a test with a small number and finally saw the error. The error details are as follows:
ORA-39125: WORKER in KUPW $ Worker. PUT_DDLS has an unexpected fatal error (when DBMS_METADATA.CONVERT [] is called)
ORA-06502: PL/SQL: Number or value error
LPX-00225: end-element tag "HIST_GRAM_LIST_ITEM" does not match start-element tag "EPVALUE"
ORA-06512: In "SYS. DBMS_SYS_ERROR", line 95
ORA-06512: In "SYS. KUPW $ WORKER", line 6228
Job "NM01". "SYS_IMPORT_SCHEMA_01" stopped at 09:48:10 due to a fatal error
If there is an error, you can find the relevant explanation on the Internet:
This problem was found to be a BUG in Oracle, with the BUG number 5071931.
There are two ways to solve this problem:
1. Add a parameter to IMPDP, EXCLUDE = STATISTICS. This method requires you to manually import statistics after the import.
2. Deploy patch 5071931 or Upgrade Oracle to 10.2.0.4
Solution:
1. I did query whether my database version is
SQL> select version from v $ instance;
VERSION
-----------------
10.2.0.1.0
2. Instead of patching, I used the first method. The following command is added to each parfile:
EXCLUDE = STATISTICS
Solve this problem
Postscript:
Note that EXCLUDE = STATISTICS is added to the parfile file. Sometimes the following message is reported during import:
ORA-39002: invalid operation.
ORA-39168: Object path STATISTICS was not found.
Solution:
EXCLUDE = STATISTICS: "in ('')"
I have not figured out why I want to change it like this.