好的,阿杰,我们来系统梳理一下 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 / COMPLETEDSOFAR
→ 已处理的对象数量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;
- 输出示例:
SID | SERIAL# | OPNAME | SOFAR | TOTALWORK | PCT_COMPLETE |
---|---|---|---|---|---|
123 | 456 | RMAN BACKUP DATAFILE | 500MB | 2GB | 25.00 |
124 | 457 | RMAN RESTORE TABLESPACE | 1GB | 4GB | 25.00 |
可以实时估算剩余时间和进度。
三、总结方法对比
工具 | 查看方式 | 优点 | 注意事项 |
---|---|---|---|
expdp / impdp | STATUS 参数、DBA_DATAPUMP_JOB_STATS | 实时进度显示,可估算处理对象数 | 需要在启动时加 STATUS 参数,或查询 master table |
RMAN | V$SESSION_LONGOPS | 精确显示备份/恢复进度、百分比 | 某些小对象进度可能不显示,需筛选 RMAN 任务 |
🔹 小技巧
- Data Pump + parallel 任务 → 进度可能跳动,不必过度焦虑
- RMAN 备份大文件 →
SOFAR/TOTALWORK
结合估算时间 - 使用脚本定期查询,自动输出百分比,便于监控和报警
发表回复