在Oracle中,如何彻底停止expdp或impdp进程?

0    2707    6

Tags:

👉 本文共约3786个字,系统预计阅读时间或需15分钟。

许多同事在使用expdp或impdp命令时,不小心按了CTRL+C组合键,然后又输入exit命令(或者网络中断等异常现象),导致expdp或impdp进程不存在,但Oracle数据库的会话仍存在,所以dmp文件也一直在增长(或数据一直在导入到数据库中)。

处理过程

在这种情况下的处理办法如下所示:

1、检查expdp进程是否还在

若存在,则可用kill -9 process命令杀掉expdp或impdp的进程。

2、杀会话、删表

检查会话是否仍存在,若存在则把相关的会话杀掉(注意:先使用命令“ALTER SYSTEM KILL SESSION '22,33' immediate;”在数据库级别杀掉会话,然后在OS级别使用kill -9杀掉进程),如无杀会话的权限则可以将相关的表DROP掉,表名可以使用如下的SQL来查询:

例如:

使用相同的办法也删除从视图DBA_DATAPUMP_JOBS中查询出来的表,直到2个视图无记录。

3、删除导出的dmp文件。

如不删除,则重新执行expdp命令时,会报dmp文件已存在。

使用kill_job停止

如果没有退出expdp或impdp会话,则可以输入kill_job来直接停止导出导入进程也是可以的。

若是已经退出会话,则也可以通过如下方式重新进入会话:

这里的SYS_EXPORT_FULL_01就是DBA_DATAPUMP_JOBS查询出来的JOB名称。

总SQL语句

这里,麦老师给出自己常用的一个SQL语句,可以查询expdp和impdp的相关会话的详细信息,如下所示:

示例:

总结

总之,一句话,杀进程,杀会话,drop表。

如何清除 DBA_DATAPUMP_JOBS 视图中的异常数据泵作业? (Doc ID 1626201.1)

适用于:

Oracle Database Cloud Schema Service - 版本 N/A 和更高版本
Oracle Cloud Infrastructure - Database Service - 版本 N/A 和更高版本
Oracle Database Exadata Express Cloud Service - 版本 N/A 和更高版本
Gen 1 Exadata Cloud at Customer (Oracle Exadata Database Cloud Machine) - 版本 N/A 和更高版本
Oracle Database Backup Service - 版本 N/A 和更高版本
本文档所含信息适用于所有平台

目标

如何清除 DBA_DATAPUMP_JOBS 视图中的异常数据泵作业?

解决方案

用于这个例子中的作业:
- 导出作业 .EXPDP_20051121 是一个正在运行的 schema 级别的导出作业
- 导出作业 .SYS_EXPORT_TABLE_01 是一个表级别的异常导出作业
- 导出作业 .SYS_EXPORT_TABLE_02 是一个表级别的停止导出作业
- 导出作业 .SYS_EXPORT_FULL_01 是一个被暂停的全库导出作业

第1步. 用 SQL*PLUS 判断在数据库中有哪些数据泵作业

%sqlplus /nolog

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复