Data Pump is hanging!
If you ever think the above, the answer is probably:
No, it’s not, it’s working…
It might be working in a suboptimal way, but nevertheless, it’s working. Here’s how you can tell what’s going on.
My Ultimate Tracing Guide
I use this approach every time I work with Oracle Data Pump and need to see what happens underneath the hood.
Before Data Pump
-
I always ensure dictionary and fixed objects statistics are current before starting Data Pump:
begin dbms_stats.gather_schema_stats('SYS'); dbms_stats.gather_schema_stats('SYSTEM'); dbms_stats.gather_fixed_objects_stats; end; /
- I usually don’t use
gather_dictionary_stats
. I prefer gathering schema stats instead. I’ve seen a few edge cases withgather_dictionary_stats
over the years, but mostly it works fine. But you know, old dog and new tricks… - You should always follow this advice even if you are not tracing a specific problem.
- I usually don’t use
-
I change the AWR snapshot interval to 15 minutes to get better granularity and manually create an AWR snapshot:
begin dbms_workload_repository.modify_snapshot_settings(null, 15); dbms_workload_repository.create_snapshot; end; /
-
Optionally, if I need to diagnose a performance problem, I enable SQL trace for Data Pump processes:
alter system set events 'sql_trace {process: pname = dw | process: pname = dm} level=8';
- Or a specific SQL ID:
alter system set events 'sql_trace[SQL: ]';
Starting Data Pump
- I add diagnostic information (
metrics
andlogtime
) to the log file and turn on tracing:expdp ... metrics=yes logtime=all trace=1FF0300 impdp ... metrics=yes logtime=all trace=1FF0300
1FF0300
turns on tracing for more or less everything in Data Pump, but there are other trace levels.
After Data Pump
- I create a new AWR snapshot:
begin dbms_workload_repository.create_snapshot; end; /
- You might also want to reset the AWR snap interval to the previous setting.
- Plus, an AWR report spanning the entire period.
@?/rdbms/admin/awrrpt
- Data Pump writes the tracing into the process trace files. You can find them in the database trace directory:
- Control process trace files named
*dm*.trc
. - Worker process trace files named
*dw*.trc
.
- Control process trace files named
Happy Debugging
Normally, the above information is enough to figure out the underlying problem. If you supply the above to Oracle Support when you open the next case, they’ll be super excited.