Oracle Resumable Import Parameters: Monitor and Manage DBA_RESUMABLE

Oracle Resumable Import Parameters: Monitor and Manage DBA_RESUMABLE

When you run a large Oracle Data Pump import (impdp), the job can fail mid-way if a tablespace runs out of space. Oracle's resumable import feature prevents this by suspending the job instead of failing it, giving you time to fix the problem and then letting the job continue automatically.

What Is a Resumable Import?

A resumable operation is a database operation that can be paused when it hits a correctable error β€” such as a full tablespace β€” and then automatically resumed once the problem is fixed. Instead of losing all progress and restarting from zero, you simply add space and the import picks up where it left off.

Resumable Import Parameters

To enable this feature on your impdp command, you use three parameters together:

1resumable=y
2resumable_name=<name to appear in dba_resumable>
3resumable_timeout=<timeout in seconds>
ParameterPurpose
resumable=yEnables resumable mode for the import session
resumable_nameA label you choose β€” this name appears in DBA_RESUMABLE so you can identify the job
resumable_timeoutHow many seconds Oracle waits in a suspended state before giving up and failing the job

The resumable_timeout value controls how long Oracle holds the job in a suspended state before it finally times out and aborts. If you set this to a high value (for example, 7200 for two hours), you have more time to fix a full tablespace before the job fails.


Grant the RESUMABLE Privilege

If you are running the import as a user other than SYS or SYSTEM, that user must be granted the RESUMABLE system privilege.

1grant resumable to <user>;

Without this privilege, the user's session cannot control its own resumable state. The RESUMABLE system privilege specifically enables resumable space allocation for the grantee.


Monitoring with DBA_RESUMABLE

Oracle does not always print a visible message on your screen when an import job becomes suspended. You must actively monitor either the alert log or the DBA_RESUMABLE view to know if the job is waiting.

Query 1 β€” Check Job Status

This query shows all active resumable statements and their current state:

1set lines 100 pages 999
2col name format a20
3
4select name
5      ,start_time
6      ,suspend_time
7      ,status
8from   dba_resumable
9/

Column breakdown:

ColumnDescription
NAMEThe label you set with resumable_name
START_TIMEWhen the import session started
SUSPEND_TIMEWhen the job was last suspended (null if still running)
STATUSEither RUNNING, SUSPENDED, or TIMED OUT

The DBA_RESUMABLE view displays all resumable statements currently executing or suspended in the system. When STATUS is SUSPENDED, the job is waiting for you to fix a resource problem before it can continue.

Query 2 β€” Find the Reason for Suspension

If a job is suspended, this query tells you exactly what went wrong:

1set lines 100 pages 999
2
3select error_msg
4from   dba_resumable
5where  name like '&resumable_name'
6/

The ERROR_MSG column in DBA_RESUMABLE holds the full error message that caused the suspension. A common cause is ORA-39171: Job is experiencing a resumable wait, which typically means a tablespace is full.


Key Points to Remember

  • Always monitor actively. Oracle may not display a suspension message on screen β€” check DBA_RESUMABLE or the alert log regularly.
  • Non-SYS/SYSTEM users need the privilege. Run grant resumable to <user> before starting the import.
  • resumable_name is your tracking label. Choose a clear, unique name so you can find your job easily in DBA_RESUMABLE.
  • resumable_timeout has a default of 7200 seconds (2 hours) in Data Pump, even if you do not set it explicitly β€” impdp enables resumable mode by default.
  • After fixing the problem (for example, adding space to a tablespace), the suspended job resumes automatically β€” no manual restart needed.
  • USER_RESUMABLE is the same view scoped to the current user β€” useful for non-DBA users checking their own jobs.

Practical Example

Suppose your import is named PROD_IMPORT_2026. You would start the import like this:

1impdp system/password \
2  directory=DATA_PUMP_DIR \
3  dumpfile=export.dmp \
4  logfile=import.log \
5  resumable=y \
6  resumable_name=PROD_IMPORT_2026 \
7  resumable_timeout=14400

Then you watch the status with:

1select name, status, suspend_time
2from   dba_resumable
3where  name = 'PROD_IMPORT_2026';

If you see STATUS = SUSPENDED, run the error query:

1select error_msg
2from   dba_resumable
3where  name like 'PROD_IMPORT_2026';

Fix the reported issue (such as extending a tablespace), and the import continues on its own.


References

Posts in this series