暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

expdp每天定时导出任务执行失败排查

原创 心在梦在 2023-04-04
1612

[TOC]

一、问题描述

​ 客户反馈,每天定时导出任务执行失败。

二、排查思路

1. 检查crontab导出任务

00 05 * * * bash /server/scripts/mes_table_backup.sh 00 20 * * * /bin/find /home/oracle/dmp/ -mtime +6|xargs rm -fr
复制

每天导出,定时删除dmp文件,保留6天。

2. 查看expdp备份脚本

[oracle@oracledb ~]# cat /server/scripts/mes_table_backup.sh #! /bin/bash if [ -f ~/.bash_profile ]; then . ~/.bash_profile fi ##backup table /u01/app/oracle/oracle/product/11.2.0/db_1/bin/expdp backup_dba/backup_dba directory=DUMP_DIR dumpfile=expdp_all_$(date +%Y%m%d%H%M).dmp logfile=expdp_all_$(date +%Y%m%d%H%M).log SCHEMAS='xx','xx','xx','xx','xx' content=METADATA_ONLY cluster=n
复制

3. 查看dump_dir directory对应路径

图片.png

[root@oracledb ~]# ll /home/oracle/dmp ls: cannot access /home/oracle/dmp: No such file or directory
复制

dmp路径居然不存在,难道被人为删除了? 经询问,无人删除,先不管,手动创建dmp目录。

[root@oracledb ~]# su - oracle [oracle@oracledb ~]# mkdir dmp [oracle@oracledb ~]# ll /home/oracle/dmp total 0
复制

4. 手动执行脚本,报错

ORA-31634: job already exists ORA-31664: unable to construct unique job name when defaulted
复制

5. 解决办法

-- 清理not running的job [oracle@oracledb ~]# sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Fri Mar 31 01:32:20 2023 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options -- 执行以下输出结果(生成清理dba_datapump_jobs的sql语句) SQL> select 'drop table '||owner_name||'.'||job_name||';' from dba_datapump_jobs where state='NOT RUNNING'; 'DROPTABLE'||OWNER_NAME||'.'||JOB_NAME||';' -------------------------------------------------------------------------------- drop table BACKUP_DBA.SYS_EXPORT_SCHEMA_01; drop table BACKUP_DBA.SYS_EXPORT_SCHEMA_02; drop table BACKUP_DBA.SYS_EXPORT_SCHEMA_03; .... SQL> drop table BACKUP_DBA.SYS_EXPORT_FULL_01; Table dropped. SQL> drop table BACKUP_DBA.SYS_EXPORT_FULL_02; Table dropped. SQL> drop table BACKUP_DBA.SYS_EXPORT_FULL_03; Table dropped. SQL> drop table BACKUP_DBA.SYS_EXPORT_FULL_04; Table dropped. SQL> drop table BACKUP_DBA.SYS_EXPORT_FULL_05; Table dropped. .......
复制

6. 再次执行脚本

[oracle@oracledb ~]# sh /server/scripts/mes_table_backup.sh Export: Release 11.2.0.4.0 - Production on Fri Mar 31 03:37:58 2023 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options FLASHBACK automatically enabled to preserve database integrity. Starting "BACKUP_DBA"."SYS_EXPORT_SCHEMA_01": backup_dba/******** directory=DUMP_DIR dumpfile=expdp_all_202303310337.dmp logfile=expdp_all_202303310337.log SCHEMAS=xx,xx,xx,xx,xx content=METADATA_ONLY cluster=n Processing object type SCHEMA_EXPORT/USER Processing object type SCHEMA_EXPORT/SYSTEM_GRANT Processing object type SCHEMA_EXPORT/ROLE_GRANT Processing object type SCHEMA_EXPORT/DEFAULT_ROLE Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA Processing object type SCHEMA_EXPORT/TABLE/TABLE Processing object type SCHEMA_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS Processing object type SCHEMA_EXPORT/JOB .... Dump file set for BACKUP_DBA.SYS_EXPORT_SCHEMA_01 is: /home/oracle/dmp/expdp_all_202303271123.dmp Job "BACKUP_DBA"."SYS_EXPORT_SCHEMA_01" successfully completed at Fri Mar 27 03:40:48 2023 elapsed 0 00:00:05
复制

结论:导出正常,且后续观察,crontab导出任务执行正常。 

[oracle@oracledb dmp]$ ll total 755768 -rw-r----- 1 oracle asmadmin 192888832 Mar 27 11:31 expdp_all_202303271123.dmp -rw-r--r-- 1 oracle asmadmin 4528 Mar 27 11:31 expdp_all_202303271123.log -rw-r----- 1 oracle asmadmin 192933888 Mar 28 05:11 expdp_all_202303280503.dmp -rw-r--r-- 1 oracle asmadmin 4528 Mar 28 05:11 expdp_all_202303280503.log -rw-r----- 1 oracle asmadmin 193032192 Mar 29 05:11 expdp_all_202303290503.dmp -rw-r--r-- 1 oracle asmadmin 4528 Mar 29 05:11 expdp_all_202303290503.log -rw-r----- 1 oracle asmadmin 193085440 Mar 30 05:11 expdp_all_202303300503.dmp -rw-r--r-- 1 oracle asmadmin 4528 Mar 30 05:11 expdp_all_202303300503.log
复制

三、思考

1. dmp文件夹怎么没有了 ?

结论:是因为expdp导出任务失败,导致原来的dmp目录保留时间超过6天后,dmp目录被crontab中定义的删除脚本删除。 

2. 为什么有那么多的not running的job ?

​ 为什么expdp产生了这么多的SYS_EXPORT_FULL_XXX表,正常情况下expdp结束后oracle会自动清除,那这里为什么没有自动删除?

-- 手动连到backup_dba用户下执行drop SQL> conn backup_dba/backup_dba Connected. SQL> SQL> drop table backup_dba.SYS_EXPORT_FULL_05; drop table backup_dba.SYS_EXPORT_FULL_05 * ERROR at line 1: ORA-00604: error occurred at recursive SQL level 1 ORA-20001: Please not do DROP or TRUNCATE Table,You will be Caught!!! ORA-06512: at line 7
复制

结论:backup_dba用户执行drop table报错,触发trigger,不允许drop table,原来这才是根因,后续调整trigger脚本,允许backup_dba用户执行drop table,expdp导出后可正常清理SYS_EXPORT_FULL_XXX表。 

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
1人已赞赏
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论