Oracle中断中止exp/imp和expdp/impdp数据库导入导出

一、中断、中止imp/exp导入导出

imp、exp导入导出数据库是系统中的进程,我们只需要找到并将其kill掉即可。但需要注意的是要先kill掉主进程,否则主进程还是会生成子进程,导入导出的动作还是会在后台进行。
eg.
	ps -ef | grep exp
#找到主进程pid使用kill命令关掉进程
kill -9 pid 
kill -9 ppid

二、中断、中止expdp/impdp数据泵导入导出

数据泵的导出就不像exp/imp那么简单了因为用数据泵导出是oracle的一个job,如果中断,中止那么就需要将这个job停止掉才可以。

2.1 查看job_name和状态

select * from dba_datapump_jobs
Oracle中断中止exp/imp和expdp/impdp数据库导入导出
可以看到JOB_NAMESYS_IMPORT_FULL_01状态是EXECUTING(正在执行的),并且正在执行的是IMPDP的导入操作。

2.2 连接当前存在的job

使用ATTCH参数连接到2.1中查到的JOB作业上。
Oracle中断中止exp/imp和expdp/impdp数据库导入导出
下面是完整的输出内容
C:\Users\Administrator>impdp 用户名/密码g@实例名 attach=SYS_IMPORT_FULL_01

Import: Release 11.2.0.1.0 - Production on 星期五 9月 3 09:47:46 2021

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Produc
tion
With the Partitioning, OLAP, Data Mining and Real Application Testing options

作业: SYS_IMPORT_FULL_01
  所有者: SLCJ2021
  操作: IMPORT
  创建者权限: TRUE
  GUID: 93037C51864F4B7D82BF4FC46C527F7C
  开始时间: 星期五, 03 9月, 2021 9:16:33
  模式: FULL
  实例: orcl2
  最大并行度: 1
  EXPORT 个作业参数:
  参数名      参数值:
     CLIENT_COMMAND        slcj/********@orclgbk DIRECTORY=expdp_dir dumpfile=ex
pdp_slcj_48_20210902.dmp logfile=expdp_slcj_48_20210902.log schemas=slcj
  IMPORT 个作业参数:
     CLIENT_COMMAND        slcj2021/********@orcl2 directory=expdp_dir dumpfile=
EXPDP_SLCJ_48_20210902.DMP logfile=impdp_slcj-slcj2021.log REMAP_SCHEMA=slcj:slc
j2021 remap_tablespace=SLCJ:SLCJ2021,SLCJ_TEMP:SLCJ2021_TEMP
  状态: EXECUTING
  处理的字节: 7,835,243,664
  完成的百分比: 20
  当前并行度: 1
  作业错误计数: 0
  转储文件: D:\expdp_dir\EXPDP_SLCJ_48_20210902.DMP

Worker 1 状态:
  进程名: DW00
  状态: EXECUTING
  对象方案: SLCJ2021
  对象名: CO_MONTH_REPORT_INFO
  对象类型: SCHEMA_EXPORT/TABLE/TABLE_DATA
  完成的对象数: 3
  总的对象数: 378
  完成的行数: 70,083,827
  完成的字节: 7,600,427,616
  完成的百分比: 100
  Worker 并行度: 1

Import> stop_job
是否确实要停止此作业 ([Y]/N): y
是否确实要停止此作业 ([Y]/N): y
是否确实要停止此作业 ([Y]/N): y
是否确实要停止此作业 ([Y]/N): y
是否确实要停止此作业 ([Y]/N): y
是否确实要停止此作业 ([Y]/N): Y
是否确实要停止此作业 ([Y]/N): YES

上面stop_job的时候有个坑,可以看到我Y了很多次依然还是要求确认,最后搞明白了是需要输入YES!

2.3 再次查看job状态

Oracle中断中止exp/imp和expdp/impdp数据库导入导出
可以看到JOB的状态已经发生了变化,现在是正在关闭

2.4  立即关闭JOB

连接JOB参考2.2
#立即将JOB关闭
STOP_JOB=IMMEDIATE

#分离和删除
kill_job
Oracle中断中止exp/imp和expdp/impdp数据库导入导出
Oracle中断中止exp/imp和expdp/impdp数据库导入导出
可以再次查看一下job,此时job应该已经不存在了。

三、附录一些交互命令

3.1 常用的交互命令

CONTINUE_CLIENT返回到记录模式。假如处于空闲状态, 将重新启动作业。

START_JOB 启动恢复当前作业。

STATUS在默认值 (0) 将显示可用时的新状态的情况下,要监视的频率 (以秒计) 作业状态。

STATUS=[interval]

STOP_JOB顺序关闭执行的作业并退出客户机。

STOP_JOB=IMMEDIATE 将立即关闭数据泵作业。

3.2 其他命令

ADD_FILE向转储文件集中添加转储文件。

ADD_FILE=dirobjdumpfile-name

CONTINUE_CLIENT 返回到记录模式。假如处于空闲状态, 将重新启动作业。

EXIT_CLIENT 退出客户机会话并使作业处于运行状态。

HELP总结交互命令。

KILL_JOB分离和删除作业。

PARALLEL更改当前作业的活动 worker 的数目。

PARALLEL=worker 的数目。

START_JOB 启动恢复当前作业。

STATUS在默认值 (0) 将显示可用时的新状态的情况下,

要监视的频率 (以秒计) 作业状态。

STATUS=[interval]

STOP_JOB顺序关闭执行的作业并退出客户机。

STOP_JOB=IMMEDIATE 将立即关闭

Oracle中断中止exp/imp和expdp/impdp数据库导入导出

上一篇:【WP开发】如何处理溢出的文本


下一篇:NET Core HTTP 管道