好的,阿杰,我们来系统梳理一下 Oracle 数据库下 expdp/impdp(Data Pump)和 RMAN 的会话进度查看方法。这些方法非常适合在大数据量导入导出或备份恢复时监控进度。


🧩 Oracle 会话进度查看指南(expdp/impdp & RMAN)


一、Data Pump(expdp/impdp)进度查看

1️⃣ 通过 STATUS 参数查看

  • 在命令行直接启动 Data Pump 时,可使用 STATUS 参数显示进度:
expdp scott/tiger@orcl \
    DIRECTORY=dpump_dir \
    DUMPFILE=scott.dmp \
    LOGFILE=scott.log \
    TABLES=emp \
    PARALLEL=4 \
    STATUS=10

说明:

  • STATUS=10 → 每 10 秒刷新一次作业进度
  • 输出内容示例:
Master table "SCOTT"."SYS_IMPORT_SCHEMA_01" successfully loaded/unloaded
Worker 1 is processing table "EMP"
Tables processed: 50  100  150


2️⃣ 查询 Data Pump 作业视图

Oracle 提供了专门的视图来监控 Data Pump 任务:

DBA_DATAPUMP_JOBS / USER_DATAPUMP_JOBS

  • 查看当前 Data Pump 作业列表
SELECT job_name, state, operation, job_mode, degree
FROM dba_datapump_jobs;

DBA_DATAPUMP_SESSIONS

  • 查看作业会话信息
SELECT owner_name, job_name, session_id, serial#
FROM dba_datapump_sessions;

DBA_DATAPUMP_JOB_STATS / USER_DATAPUMP_JOB_STATS

  • 监控每个任务进度
SELECT job_name, operation, job_mode, degree, attached_sessions, status
FROM dba_datapump_job_stats;


3️⃣ 通过 SQL*Plus 动态查看进度

SELECT * FROM dba_datapump_job_stats WHERE job_name='SYS_IMPORT_SCHEMA_01';

  • 主要关注:
    • JOB_STATE → RUNNING / COMPLETED
    • SOFAR → 已处理的对象数量
    • TOTALWORK → 总工作量
    • SOFAR/TOTALWORK → 估算进度

注意:Data Pump 会自动维护一个 master table,记录详细进度。


二、RMAN 会话进度查看

1️⃣ 查看当前 RMAN 任务

① 使用 V$SESSION_LONGOPS

  • Oracle 提供 V$SESSION_LONGOPS 视图,用于监控长时间运行操作:
SELECT sid, serial#, opname, target, sofar, totalwork,
       ROUND(sofar/totalwork*100,2) AS pct_complete
FROM v$session_longops
WHERE totalwork > 0
  AND opname LIKE 'RMAN%'
ORDER BY start_time;

字段说明:

  • SOFAR → 已完成工作量
  • TOTALWORK → 总工作量
  • PCT_COMPLETE → 进度百分比
  • OPNAME → 操作名称(BACKUP DATAFILE, RESTORE TABLESPACE 等)

② 使用 RMAN SHOW ALL

在 RMAN 控制台:

RMAN> SHOW ALL;

  • 查看当前备份策略、备份集、备份进度信息
  • 对于正在运行的任务,可以结合 V$SESSION_LONGOPS 动态监控

2️⃣ RMAN 动态监控示例

SELECT sid, serial#, opname, target, sofar, totalwork,
       ROUND(sofar/totalwork*100,2) AS pct_complete
FROM v$session_longops
WHERE opname LIKE 'RMAN%'
  AND sofar <> totalwork;

  • 输出示例:
SIDSERIAL#OPNAMESOFARTOTALWORKPCT_COMPLETE
123456RMAN BACKUP DATAFILE500MB2GB25.00
124457RMAN RESTORE TABLESPACE1GB4GB25.00

可以实时估算剩余时间和进度。


三、总结方法对比

工具查看方式优点注意事项
expdp / impdpSTATUS 参数、DBA_DATAPUMP_JOB_STATS实时进度显示,可估算处理对象数需要在启动时加 STATUS 参数,或查询 master table
RMANV$SESSION_LONGOPS精确显示备份/恢复进度、百分比某些小对象进度可能不显示,需筛选 RMAN 任务

🔹 小技巧

  1. Data Pump + parallel 任务 → 进度可能跳动,不必过度焦虑
  2. RMAN 备份大文件 → SOFAR/TOTALWORK 结合估算时间
  3. 使用脚本定期查询,自动输出百分比,便于监控和报警