expdp ORA-31626: job does not exist的解决及分析过程是怎样的

发布时间:2021-11-12 15:39:30 作者:柒染
来源:亿速云 阅读:709

本篇文章给大家分享的是有关expdp ORA-31626: job does not exist的解决及分析过程是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

问题描述:在执行数据库备份时报ORA-31626: job does not exist错误,详细错误信息如下所示:

[root@localhost backup]# /home/oracle/backup.sh

Starting bakup...

Bakup file path /backup

Export: Release 11.2.0.4.0 - Production on Mon Oct 23 11:20:37 2017

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

ORA-31626: job does not exist

Delete the file bakup before 15 days...

Delete the file bakup successfully.

Bakup completed.

在网上搜索类似错误信息,执行以下sql脚本。

@?/rdbms/admin/catalog.sql

@?/rdbms/admin/catproc.sql

执行完之后,错误依旧,所以原因不是升级导致的数据字典信息不一致造成的,从字面理解该错误信息,是job不存在,通过执行备份脚本跟踪发现,执行备份脚本时,会创建相关的job及会话信息,监控告警日志信息如下:

DM00 started with pid=121, OS id=22111, job SYSTEM.SYS_EXPORT_FULL_06

所以expdp本身执行过程是没有问题的,结合告警日志中提示:Restarting dead background process QMNC,可能问题出现在qmnc或者jnnn进程上,检查系统数据库后台进程,如下所示:

[oracle@localhost ~]$ ps -ef | grep ora_

oracle   12877     1  0 Oct11 ?        00:01:30 ora_smco_sltwzdb

oracle   27283     1  0 Mar12 ?        00:43:33 ora_pmon_sltwzdb

oracle   27285     1  0 Mar12 ?        00:39:31 ora_psp0_sltwzdb

oracle   27287     1  0 Mar12 ?        00:45:05 ora_vktm_sltwzdb

oracle   27291     1  0 Mar12 ?        00:07:21 ora_gen0_sltwzdb

oracle   27293     1  0 Mar12 ?        00:13:07 ora_diag_sltwzdb

oracle   27295     1  0 Mar12 ?        00:38:05 ora_dbrm_sltwzdb

oracle   27297     1  0 Mar12 ?        16:52:06 ora_dia0_sltwzdb

oracle   27299     1  0 Mar12 ?        00:07:57 ora_mman_sltwzdb

oracle   27301     1  0 Mar12 ?        00:31:36 ora_dbw0_sltwzdb

oracle   27303     1  0 Mar12 ?        01:25:22 ora_lgwr_sltwzdb

oracle   27305     1  0 Mar12 ?        02:08:36 ora_ckpt_sltwzdb

oracle   27307     1  0 Mar12 ?        01:03:43 ora_smon_sltwzdb

oracle   27310     1  0 Mar12 ?        00:02:41 ora_reco_sltwzdb

oracle   27316     1  0 Mar12 ?        00:03:04 ora_d000_sltwzdb

oracle   27318     1  0 Mar12 ?        00:02:56 ora_s000_sltwzdb

oracle   29939 29616  0 11:13 pts/3    00:00:00 grep ora_

未看到有qmnc和jnnn进程,我们先来看一下官方文档对于这2个后台进程的描述:

QMNC is responsible for facilitating various background activities required by AQ and Oracle Streams: time management of messages, management of nonpersistent queues, cleanup of resources, and so on. QMNC dynamically spawns Qnnn processes as needed for performing these tasks.

Note that if the AQ_TM_PROCESSES initialization parameter is set to 0, this process will not start. The database writes the following message to the alert log: WARNING: AQ_TM_PROCESSES is set to 0. System might be adversely affected.

Qnnn acts as a slave process for QMNC and carry out tasks assigned by QMNC. The number of these processes is dynamically managed by QMNC based on load.

Jnnn:Job slave processes are created or awakened by the job coordinator when it is time for a job to be executed.

Job slaves gather all the metadata required to run the job from the data dictionary. The slave processes start a database session as the owner of the job, execute triggers, and then execute the job. After the job is complete, the slave processes commit and then execute appropriate triggers and close the session. The slave can repeat this operation in case additional jobs need to be run.

可以看到,QMNC负责协助AQ和Oracle Streams所需的各种背景活动:消息的时间管理,非持久性队列的管理,资源清理等。而Jnnn进程是执行作业的子进程,是由作业调度器唤醒的。我们在执行expdp时,作业调度已经完成,但是由于QMNC及Qnnn进程异常,调度作业无法进入消息队列。反过来就是说作业进程在消息队列中查找相关作业时,是查不到的,所以会出现执行expdp时作业不存在的错误信息。根据官网对QMNC的描述,我们先检查AQ_TM_PROCESSES进程的值:

SQL> show parameter aq

NAME      TYPE  VALUE

------------------------------------ ----------- ------------------------------

aq_tm_processes      integer  1

AQ_TM_PROCESSES进程的值是1,也是说QMNC是异常结束的,不是由于配置而导致的进程未能启动,尝试通过更改AQ_TM_PROCESSES参数的值来唤醒QMNC进程:

SQL> alter system set aq_tm_processes=0;

System altered.

SQL>

SQL> alter system set aq_tm_processes=1;

System altered.

SQL> show parameter process

NAME      TYPE  VALUE

------------------------------------ ----------- ------------------------------

aq_tm_processes      integer  1

通过检查数据库后台进程,QMNC进程依然不存在,所以该问题只能通过重启数据库的方式,将QMNC进程启动起来。

重启完成后,检查数据库进程,如下所示:

oracle   10768     1  0 Oct25 ?        00:00:08 ora_pmon_sltwzdb

oracle   10770     1  0 Oct25 ?        00:00:06 ora_psp0_sltwzdb

oracle   10773     1  0 Oct25 ?        00:00:08 ora_vktm_sltwzdb

oracle   10777     1  0 Oct25 ?        00:00:01 ora_gen0_sltwzdb

oracle   10779     1  0 Oct25 ?        00:00:02 ora_diag_sltwzdb

oracle   10781     1  0 Oct25 ?        00:00:07 ora_dbrm_sltwzdb

oracle   10783     1  0 Oct25 ?        00:02:56 ora_dia0_sltwzdb

oracle   10785     1  0 Oct25 ?        00:00:03 ora_mman_sltwzdb

oracle   10787     1  0 Oct25 ?        00:00:07 ora_dbw0_sltwzdb

oracle   10789     1  0 Oct25 ?        00:00:08 ora_lgwr_sltwzdb

oracle   10791     1  0 Oct25 ?        00:00:24 ora_ckpt_sltwzdb

oracle   10793     1  0 Oct25 ?        00:00:05 ora_smon_sltwzdb

oracle   10795     1  0 Oct25 ?        00:00:00 ora_reco_sltwzdb

oracle   10797     1  0 Oct25 ?        00:03:01 ora_mmon_sltwzdb

oracle   10799     1  0 Oct25 ?        00:02:58 ora_mmnl_sltwzdb

oracle   10801     1  0 Oct25 ?        00:00:00 ora_d000_sltwzdb

oracle   10803     1  0 Oct25 ?        00:00:00 ora_s000_sltwzdb

oracle   10813     1  0 Oct25 ?        00:00:00 ora_qmnc_sltwzdb

oracle   10827     1  0 Oct25 ?        00:00:07 ora_cjq0_sltwzdb

oracle   10855     1  0 Oct25 ?        00:00:00 ora_q000_sltwzdb

oracle   10918     1  0 Oct25 ?        00:00:00 ora_q002_sltwzdb

oracle   10965     1  0 Oct25 ?        00:00:01 ora_smco_sltwzdb

oracle   17790     1  0 02:00 ?        00:00:00 ora_q001_sltwzdb

oracle   26085     1  0 10:38 ?        00:00:00 ora_w000_sltwzdb

可以看到QMNC、Qnnn进程已经正常启动,我们再执行expdp操作:

;;;

Export: Release 11.2.0.4.0 - Production on Wed Oct 23 18:57:37 2017

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

Starting "SYSTEM"."SYS_EXPORT_FULL_07":  system/******** directory=expdp_dir dumpfile=test.dmp logfile=test.log full=y

Estimate in progress using BLOCKS method...

Processing object type DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA

Total estimation using BLOCKS method: 1.014 GB

Processing object type DATABASE_EXPORT/TABLESPACE

Processing object type DATABASE_EXPORT/PASSWORD_VERIFY_FUNCTION

Processing object type DATABASE_EXPORT/PROFILE

Processing object type DATABASE_EXPORT/SYS_USER/USER

......

Expdp执行已不再报ORA-31626: job does not exist,该问题也会导致数据库job无法正常执行。

以上就是expdp ORA-31626: job does not exist的解决及分析过程是怎样的,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。

推荐阅读:
  1. ELKB是什么?
  2. 应用性能指数(APDEX)是如何计算出来的?

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

expdp

上一篇:怎么使用KindEditor

下一篇:Django中的unittest应用是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》