0
点赞
收藏
分享

微信扫一扫

Oracle操作系列:利用Job_name管理expdp/impdp

在实际工作过程中,很多时候我们会使用逻辑导出(expdp)很逻辑导入(impdp)的方式对数据库进行操作,但是无论是导出还是导入进行到了哪一步,具体百分比是多少,或者说还没有导出完成到了业务高峰,我们想对导出任务进行暂停操作(发现ctrl+c好像并没有真正打断导出任务),在业务低峰期我们还想继续进行导出操作等,这个时候我们会用到为导入或者导出附加一个任务名。

此文中将会涉及到使用expdp导出的方式对Job_name做演示,impdp的操作大同小异,具体过程记录如下。

1、在使用impdp或者expdp的时候,需要首先在数据库里面创建目录

1.1、查看现有目录

select * from dba_directories;

Oracle操作系列:利用Job_name管理expdp/impdp_oracle datapump job

1.2、创建目录

Oracle操作系列:利用Job_name管理expdp/impdp_expdp_02

1.3、给目录授权,让数据库用户对其有读写权限

Oracle操作系列:利用Job_name管理expdp/impdp_oracle datapump job_03

2、利用Job_nam对datapunp任务进行管理

2.1、查询现有数据库datapump任务,发现默认存在一个未运行的任务

Oracle操作系列:利用Job_name管理expdp/impdp_oracle datapump job_04

2.2、执行一个带任务名为xiaozc_job的全库导出任务

expdp xiaozc/xiaozc directory=xiaozc dumpfile=xiaozc_%U.dmp parallel=4 job_name=xiaozc_job full=y

Oracle操作系列:利用Job_name管理expdp/impdp_expdp_05

执行完成后对dba_datapump_jobs尽心查询,发现已经有了xiaozc_job的任务,状态为正在执行

Oracle操作系列:利用Job_name管理expdp/impdp_oracle datapump job_06

2.3、通过expdp附加任务名查看导出任务作业的具体情况

C:\Users\Administrator>expdp xiaozc/xiaozc attach=xiaozc_job

Export: Release 11.2.0.4.0 - Production on 星期日 6月 12 18:57:13 2022

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

连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

作业: XIAOZC_JOB --可以查看到作业名

 所有者: XIAOZC   --可以看到执行任务的所有者

 操作: EXPORT     --可以看到执行的操作为export

 创建者权限: TRUE

 GUID: 20C5E51B87E44EB9BC1D26C66C16BFAF

 开始时间: 星期日, 12 6月, 2022 18:55:10

 模式: FULL

 实例:xiaozc

 最大并行度: 4

 EXPORT 个作业参数:

 参数名      参数值:

CLIENT_COMMAND   xiaozc/******** directory=xiaozc dumpfile=xiaozc_%U.dmp parallel=4 job_name=xiaozc_job full=y

 状态: EXECUTING

 处理的字节: 2,804,862,104

 完成的百分比: 9  --可以看到整体任务完成的百分比

 当前并行度: 4

 作业错误计数: 0

 转储文件: F:\databak\xiaozc_%u.dmp

 转储文件: F:\DATABAK\XIAOZC_01.DMP

   写入的字节: 2,804,871,168

 转储文件: F:\DATABAK\XIAOZC_02.DMP

   写入的字节: 4,096

 转储文件: F:\DATABAK\XIAOZC_03.DMP

   写入的字节: 4,096

 转储文件: F:\DATABAK\XIAOZC_04.DMP

   写入的字节: 4,096

Worker 1 状态: --可以看到某个进程的具体状态

 进程名: DW00

 状态: EXECUTING

 对象类型: DATABASE_EXPORT/SCHEMA/TABLE/INDEX/STATISTICS/INDEX_STATISTICS

 完成的对象数: 2,389

 总的对象数: 2,389

 Worker 并行度: 1

Worker 2 状态:

 进程名: DW01

 状态: EXECUTING

 对象方案: ERIS

 对象名: ERIS_EXAM_BG

 对象类型: DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA

 完成的对象数: 1

 总的对象数: 1,430

 完成的行数: 1,377,729

 Worker 并行度: 1

Worker 3 状态:

 进程名: DW02

 状态: EXECUTING

 对象方案: ERIS

 对象名: ERIS_UIS_EXAM_BG

 对象类型: DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA

 完成的对象数: 1

 总的对象数: 1,430

 完成的行数: 302,392

 Worker 并行度: 1

Worker 4 状态:

 进程名: DW03

 状态: EXECUTING

 对象方案: ERIS

 对象名: N_ERIS_UIS_EXAM_BG

 对象类型: DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA

 完成的对象数: 4

 总的对象数: 1,430

 完成的行数: 61,560

 Worker 并行度: 1

Export>

2.4、通过任务名暂停expdp导出任务

2.4.1、Export>stop_job,用此命令,首先需要在导出界面使用ctrl+c,若没有ctrl+c,直接使用stop_job,会在stop pending状态下停留一段时间。

停留在stop pending下的原因是:To perform an orderly shutdown, use STOP_JOB (without any associated value). A warning requiring confirmation will be issued. An orderly shutdown stops the job after worker processes have finished their current tasks.

Export>stop_job,选择Y停止任务,如图:

Oracle操作系列:利用Job_name管理expdp/impdp_impdp_07

但是此种方式停止任务后发现导出进程的状态如下,处于stop pending状态,进程处于waiting,如下:

Oracle操作系列:利用Job_name管理expdp/impdp_oracle datapump job_08

只用当所有进程任务停止后,xiaozc_job任务的状态才成了idling,进程才变成未定义状态,如下:

Oracle操作系列:利用Job_name管理expdp/impdp_parallel_09

在切换为导出数据库界面,发现已经停止了任务,如下:

Oracle操作系列:利用Job_name管理expdp/impdp_expdp_10

在数据库里面查询数据泵任务,查询结果为xiaozc_job为idling,如下:

Oracle操作系列:利用Job_name管理expdp/impdp_impdp_11

2.4.2、 STOP_JOB=IMMEDIATE停止任务

Oracle操作系列:利用Job_name管理expdp/impdp_expdp_12

查看导出作业状态,如下:

Oracle操作系列:利用Job_name管理expdp/impdp_oracle_13

查看datapump视图作业状态,如下:

Oracle操作系列:利用Job_name管理expdp/impdp_oracle datapump job_14

查看导出文件大小,刷新发现已经不在改变大小,如图:

Oracle操作系列:利用Job_name管理expdp/impdp_impdp_15

重启导出任务,使导出继续运行,重启命令如下:

Oracle操作系列:利用Job_name管理expdp/impdp_impdp_16

在数据库里面查看作业任务的状态,发现为执行状态,如下所示:

Oracle操作系列:利用Job_name管理expdp/impdp_impdp_17

经过一段时间,数据库导出完成,如下所示:

Oracle操作系列:利用Job_name管理expdp/impdp_impdp_18

查看数据文件导出大小,比停止时有所增大,如下图:

Oracle操作系列:利用Job_name管理expdp/impdp_impdp_19

3、总结

发现在停止作业的过程中STOP_JOB=IMMEDIATE命令比较好用,不加参数不会立即停止各进程的导出任务,没有任务的进程需要等待有任务的进程完成当前任务。







举报

相关推荐

0 条评论