阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

记录一则expdp任务异常处理案例

397次阅读
没有评论

共计 7367 个字符,预计需要花费 19 分钟才能阅读完成。

环境:AIX 6.1 + Oracle 10.2.0.4
现象:在 XTTS 迁移测试阶段,遇到执行几个 expdp 的导出任务,迟迟没有返回任何信息,对应日志无任何输出,查看任务状态:
SQL>
set lines 300
col OWNER_NAME for a10
col OPERATION for a15
col JOB_MODE for a20
col STATE for a15
select * from dba_datapump_jobs;

OWNER_NAME JOB_NAME                      OPERATION      JOB_MODE            STATE              DEGREE ATTACHED_SESSIONS DATAPUMP_SESSIONS
———- —————————— ————— ——————– ————— ———- —————– —————–
SYS        SYS_EXPORT_TRANSPORTABLE_01    EXPORT          TRANSPORTABLE        DEFINING                1                0                1
SYS        SYS_EXPORT_TRANSPORTABLE_02    EXPORT          TRANSPORTABLE        DEFINING                1                1                2
SYS        SYS_EXPORT_TRANSPORTABLE_03    EXPORT          TRANSPORTABLE        DEFINING                1                1                2
SYS        SYS_EXPORT_SCHEMA_01          EXPORT          SCHEMA              DEFINING                1                1                2
SYS        SYS_EXPORT_TRANSPORTABLE_04    EXPORT          TRANSPORTABLE        DEFINING                1                1                2
SYS        SYS_EXPORT_SCHEMA_02          EXPORT          SCHEMA              DEFINING                1                1                2

6 rows selected.

可以看到所有的 expdp 导出任务的 STATE 都停留在 DEFINING 状态。
•1. 牛刀小试清异常
•2. 追本溯源查 MOS

1. 牛刀小试清异常

先强制杀掉后台执行的所有 expdp 任务:
ps -ef|grep expdp|grep -v grep|awk ‘{print $2}’|xargs kill -9

然后尝试删除这些表(其实应该在 not running 状态下删除)
select ‘drop table ‘||OWNER_NAME||’.’||JOB_NAME||’ purge;’ from dba_datapump_jobs where STATE=’NOT RUNNING’;

drop table sys.SYS_EXPORT_TRANSPORTABLE_01 purge;
..

可这样是没有作用的,查询结果不变。
 甚至尝试正常 shutdown immediate 停止数据库,也无法成功,告警日志看到有活动调用:
Thu Nov  1 15:14:24 2018
Active call for process 4522064 user ‘oracle’ program ‘oracle@localhost (DM00)’
Active call for process 4456536 user ‘oracle’ program ‘oracle@localhost (DM01)’
Active call for process 10027180 user ‘oracle’ program ‘oracle@localhost (DM02)’
Active call for process 7340140 user ‘oracle’ program ‘oracle@localhost (DM03)’
Active call for process 6291888 user ‘oracle’ program ‘oracle@localhost (DM04)’
Active call for process 8126596 user ‘oracle’ program ‘oracle@localhost (DM05)’
SHUTDOWN: waiting for active calls to complete.

发现这些进程的 id 都对应了 ora_dm 的进程:
$ ps -ef|grep ora_dm
  oracle  4456536        1  0 17:00:09      –  0:00 ora_dm01_xxxxdb
  oracle  4522064        1  0 16:50:57      –  0:00 ora_dm00_xxxxdb
  oracle  7340140        1  0 14:06:07      –  0:00 ora_dm03_xxxxdb
  oracle  8126596        1  0 14:35:03      –  0:00 ora_dm05_xxxxdb
  oracle 10027180        1  0 13:55:08      –  0:00 ora_dm02_xxxxdb
  oracle  6291888        1  0 14:31:17      –  0:00 ora_dm04_xxxxdb
  oracle  7340432  8388786  0 15:22:59  pts/4  0:00 grep ora_dm

实际上,这就是 expdp 任务的相关进程,强制杀掉这些进程:
ps -ef|grep ora_dm|grep -v grep|awk ‘{print $2}’|xargs kill -9

之后数据库关闭成功:
Thu Nov  1 15:24:37 2018
All dispatchers and shared servers shutdown
Thu Nov  1 15:24:37 2018
ALTER DATABASE CLOSE NORMAL

启动数据库后,再次查询发现已经成功清理:
SQL>
set lines 300
col OWNER_NAME for a10
col OPERATION for a15
col JOB_MODE for a20
col STATE for a15
select * from dba_datapump_jobs;

no rows selected

小结:数据泵任务与 ora_dm 进程相关;如果数据泵任务发生异常,但任务并没有退出的情况,需要同时杀掉这类进程(杀掉后状态就会变为 NOT RUNNING)。关库不是必须的,只是演示此时正常关闭被阻塞的场景。这也能说明为什么要保证在 NOT RUNNING 状态下才可以清理。

2. 追本溯源查 MOS

上面的步骤只是清理了异常的数据泵任务,但没有解决问题,再次后台执行备份任务依然会重现故障:
nohup sh expdp_xtts.sh &
$ ps -ef|grep expdp
  oracle  6684914  8061208  0 15:30:07  pts/2  0:00 grep expdp
  oracle  7143482  8061208  0 15:30:03  pts/2  0:00 sh expdp_xtts.sh
  oracle  6685096  7143482  0 15:30:03  pts/2  0:00 expdp ‘/ as sysdba’ parfile=expdp_xtts.par
$ ps -ef|grep ora_dm
  oracle  7602308  8061208  0 15:30:10  pts/2  0:00 grep ora_dm
  oracle  3997964        1  1 15:30:05      –  0:00 ora_dm00_xxxxdb
$

此时查询 dba_datapump_jobs,state 依然一直是 defining 状态:
OWNER_NAME JOB_NAME                      OPERATION      JOB_MODE                      STATE                              DEGREE ATTACHED_SESSIONS DATAPUMP_SESSIONS
———- —————————— ————— —————————— —————————— ———- —————– —————–
SYS        SYS_EXPORT_TRANSPORTABLE_01    EXPORT          TRANSPORTABLE                  DEFINING                                1                1                2

其他的导出任务都一样,不再赘述。
 为了方便测试,写一个简单的单表 expdp 导出,现象也一样。
expdp \’/ as sysdba\’ directory=XTTS tables=query.test dumpfile=query_test.dmp logfile=query_test.log

根据故障现象,用如下关键字在 MOS 中搜索: expdp state DEFINING,匹配到文档:
•DataPump Export/Import Hangs With “DEFINING” Status When Using A Directory On NFS Filesystem (文档 ID 2262196.1)

正好这次测试是在 NFS 文件系统上,MOS 建议移动到本地文件系统导出。

这次再将 expdp 进程全部杀掉:
ps -ef|grep ora_dm|grep -v grep|awk ‘{print $2}’|xargs kill -9
ps -ef|grep expdp|grep -v grep|awk ‘{print $2}’|xargs kill -9

此时查询 dba_datapump_jobs:
OWNER_NAME JOB_NAME                      OPERATION      JOB_MODE                      STATE              DEGREE ATTACHED_SESSIONS DATAPUMP_SESSIONS
———- —————————— ————— —————————— ————— ———- —————– —————–
SYS        SYS_EXPORT_TABLE_04            EXPORT          TABLE                          NOT RUNNING              0                0                0
SYS        SYS_EXPORT_SCHEMA_01          EXPORT          SCHEMA                        NOT RUNNING              0                0                0
SYS        SYS_EXPORT_TABLE_02            EXPORT          TABLE                          NOT RUNNING              0                0                0
SYS        SYS_EXPORT_TABLE_05            EXPORT          TABLE                          NOT RUNNING              0                0                0
SYS        SYS_EXPORT_TABLE_03            EXPORT          TABLE                          NOT RUNNING              0                0                0
SYS        SYS_EXPORT_TABLE_01            EXPORT          TABLE                          NOT RUNNING              0                0                0
SYS        SYS_EXPORT_TRANSPORTABLE_01    EXPORT          TRANSPORTABLE                  NOT RUNNING              0                0                0

7 rows selected.

清理 NOT RUNNING 的 master 表:
select ‘drop table ‘||OWNER_NAME||’.’||JOB_NAME||’ purge;’ from dba_datapump_jobs where STATE=’NOT RUNNING’;
– 执行结果用来执行,再次查看结果为空:
SQL> select * from dba_datapump_jobs;
no rows selected

按 MOS 建议,将导出任务移动到本地文件系统:
AIX 源端导出 XTTS 源数据至源端 /hxbak/xtts_exp 目录中,而后 copy 至 nfs 共享存储 /xtts/dmp 中:
mkdir /hxbak/xtts_exp
chown oracle:dba /hxbak/xtts_exp
ls -ld /hxbak/xtts_exp

select * from dba_directories;
create or replace directory XTTS as ‘/hxbak/xtts_exp’;

此时测试 expdp 任务可正常运行:
$ expdp \’/ as sysdba\’ directory=XTTS tables=query.test dumpfile=query_test.dmp logfile=query_test.log
Export: Release 10.2.0.4.0 – 64bit Production on Thursday, 01 November, 2018 16:03:21

Copyright (c) 2003, 2007, Oracle.  All rights reserved.

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 – 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Starting “SYS”.”SYS_EXPORT_TABLE_01″:  ‘/******** AS SYSDBA’ directory=XTTS tables=query.test dumpfile=query_test.dmp logfile=query_test.log
Estimate in progress using BLOCKS method…
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 8 MB
Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
. . exported “QUERY”.”TEST”                              6.743 MB  72593 rows
Master table “SYS”.”SYS_EXPORT_TABLE_01″ successfully loaded/unloaded
******************************************************************************
Dump file set for SYS.SYS_EXPORT_TABLE_01 is:
  /hxbak/xtts_exp/query_test.dmp
Job “SYS”.”SYS_EXPORT_TABLE_01″ successfully completed at 16:03:57

SQL> select * from dba_datapump_jobs;

OWNER_NAME JOB_NAME                      OPERATION      JOB_MODE                      STATE              DEGREE ATTACHED_SESSIONS DATAPUMP_SESSIONS
———- —————————— ————— —————————— ————— ———- —————– —————–
SYS        SYS_EXPORT_TABLE_01            EXPORT          TABLE                          EXECUTING                1                1                3

再次导出其他元数据:
#expdp_xtts.sh (about 5min)
nohup sh expdp_xtts.sh &
#expdp_xtts_other.sh(about 5min)
nohup sh expdp_xtts_other.sh &
#expdp_tmp_table
nohup sh expdp_tmp_table01.sh &
nohup sh expdp_tmp_table02.sh &
nohup sh expdp_tmp_table03.sh &
nohup sh expdp_tmp_table04.sh &

最后将这些导出文件再移动到 /xtts/dmp/ 下,供后续 xtts 测试目标端导入使用:
$ pwd
/hxbak/xtts_exp
$ cp -rp * /xtts/dmp/

目标端导入时只需要有读这些文件的权限,即可,实际测试恢复 OK。

小结:在自己的 linux 环境测试过是可以直接 expdp 到 nfs 文件系统的,AIX 看来有区别,MOS 的建议也只是一个 workaround,但也能满足需求,毕竟元数据导出文件没多大。

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计7367字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
8003831
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

  星哥带你玩飞牛 NAS-16:不再错过公众号更新,飞牛 NAS 搭建 RSS 对于经常关注多个微...
每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站 - 手机博物馆 -CHAZ 3D Experience 一句话介绍:一个用 3D 方式重温...
星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛 NAS 硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话? 前言 在选择 NAS 用预...
【1024程序员】我劝你赶紧去免费领一个AWS、华为云等的主机

【1024程序员】我劝你赶紧去免费领一个AWS、华为云等的主机

【1024 程序员】我劝你赶紧去免费领一个 AWS、华为云等的主机 每年 10 月 24 日,程序员们都会迎来...
星哥带你玩飞牛NAS-4:飞牛NAS安装istore旁路由,家庭网络升级的最佳实践

星哥带你玩飞牛NAS-4:飞牛NAS安装istore旁路由,家庭网络升级的最佳实践

星哥带你玩飞牛 NAS-4:飞牛 NAS 安装 istore 旁路由,家庭网络升级的最佳实践 开始 大家好我是...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比 星哥玩云,带你从小白到上云高手。今天咱们就来聊聊——什...
自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个 AI 智能体 — 跟创业大佬对话 前言 智能体(Agent)已经成为创业者和技术人绕...
星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

  星哥带你玩飞牛 NAS-16:飞牛云 NAS 换桌面,fndesk 图标管理神器上线! 引言 哈...
星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛 NAS 硬件 02:某鱼 6 张左右就可拿下 5 盘位的飞牛圣体 NAS 前言 大家好,我是星...
每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年 0.99 刀,拿下你的第一个顶级域名,详细注册使用 前言 作为长期折腾云服务、域名建站的老玩家,星哥一直...