Oracle19c补丁问题导致expdp导出报错ORA-31626

一、故障背景

客户一套 19.3.0 Oracle 19c 单机数据库,执行 expdp 数据泵导出数据报错ORA-31626,导出任务直接中断无法执行。

测试过程

测试导出scott 用户全库时,执行导出命令:

[oracle@zonghedg ~]$ expdp \'/ as sysdba\' directory=DATA_PUMP_DIR dumpfile=scott.dmp logfile=scott.log schemas=scott < /dev/null

Export: Release 19.0.0.0.0 - Production on Mon Jun 15 17:12:33 2026

Version 19.3.0.0.0

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

Password:

Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

ORA-31626: job does not exist

ORA-31638: cannot attach to job SYS_EXPORT_SCHEMA_01 for user SYS

ORA-06512: at "SYS.KUPV$FT", line 1142

ORA-06512: at "SYS.KUPV$FT", line 1744

ORA-06512: at "SYS.DBMS_SYS_ERROR", line 95

ORA-06512: at "SYS.KUPV$FT_INT", line 498

ORA-39077: unable to subscribe agent KUPC$A_1_171235164054000 to queue "KUPC$C_1_20260615171234_0"

ORA-06512: at "SYS.DBMS_SYS_ERROR", line 95

ORA-06512: at "SYS.KUPC$QUE_INT", line 294

ORA-01001: invalid cursor

ORA-06512: at "SYS.DBMS_AQADM_SYS", line 9613

ORA-06512: at "SYS.DBMS_PRVTAQIS", line 1420

ORA-06512: at "SYS.DBMS_AQADM_SYS", line 10207

ORA-06512: at "SYS.DBMS_AQADM_SYS", line 9576

ORA-06512: at "SYS.DBMS_AQADM", line 881

ORA-06512: at "SYS.KUPC$QUE_INT", line 267

ORA-06512: at "SYS.KUPC$QUE_INT", line 1360

ORA-06512: at line 1

ORA-06512: at "SYS.KUPC$QUEUE_INT", line 65

ORA-06512: at "SYS.KUPV$FT_INT", line 465

ORA-06512: at "SYS.KUPV$FT", line 1664

ORA-06512: at "SYS.KUPV$FT", line 1103

关键报错信息:

ORA-31626/31638:数据泵任务不存在、无法挂载导出任务,也就是根本没生成任务;

ORA-01001 invalid cursor:无效游标,底层 AQ 高级队列组件异常;

ORA-39077:数据泵代理无法订阅 AQ 队列,数据泵底层依赖 AQ 消息队列做任务调度,队列损坏直接导致 expdp 完全失效。

三、重建数据泵核心组件

步骤 1:19c重建数据泵核心组件dpload.sql

数据泵依赖 KUPV、KUPC 系列系统包,清单损坏后包体失效,先重新部署数据泵底层对象:

SQL> @$ORACLE_HOME/rdbms/admin/dpload.sql

步骤 2:编译数据库所有失效对象 utlrp.sql

SQL> @$ORACLE_HOME/rdbms/admin/utlrp.sql

四、再次尝试备份

[oracle@zonghedg ~]$ expdp \'/ as sysdba\' directory=DATA_PUMP_DIR dumpfile=scott.dmp logfile=scott.log schemas=scott < /dev/null

Export: Release 19.0.0.0.0 - Production on Mon Jun 15 17:12:33 2026

Version 19.3.0.0.0

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

Password:

Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

UDE-31623: operation generated ORACLE error 31623

ORA-31623: a job is not attached to this session via the specified handle

ORA-06512: at "SYS.DBMS_DATAPUMP", line 4747

ORA-06512: at "SYS.KUPV$FT_INT", line 2144

ORA-06512: at "SYS.DBMS_SYS_ERROR", line 79

ORA-06512: at "SYS.KUPV$FT_INT", line 2081

ORA-06512: at "SYS.DBMS_DATAPUMP", line 2263

ORA-06512: at "SYS.DBMS_DATAPUMP", line 4496

ORA-06512: at "SYS.DBMS_DATAPUMP", line 6127

ORA-06512: at line 1

发现报错已经变化,检查alert日志:

五、修复Oracle Inventory产品清单(OPatch报错73)

[oracle@zonghedg OPatch]$ ./opatch lsinv

Oracle 临时补丁程序安装程序版本 12.2.0.1.17

版权所有 (c) 2026, Oracle Corporation。保留所有权利。

Oracle 主目录       :/oracle/app/product/19.3.0/db_1

主产品清单:/oracle/oraInventory

   来自           :/oracle/app/product/19.3.0/db_1/oraInst.loc

OPatch 版本    :12.2.0.1.17

OUI 版本       :12.2.0.7.0

日志文件位置:/oracle/app/product/19.3.0/db_1/cfgtoollogs/opatch/opatch2026-06-15_17-35-12下午_1.log

LsInventorySession 失败: OPatch 无法找到主产品清单。

原因可能是:

    该主产品清单已损坏

    指定的 oraInst.loc 文件无效。

OPatch failed with error code 73

检查oraInst.loc

[oracle@zonghedg OPatch]$ cat /oracle/app/product/19.3.0/db_1/oraInst.loc

inventory_loc=/oracle/oraInventory

inst_group=oinstall

路径配置无误,但 inventory.xml 丢失 Home 注册信息:

[oracle@zonghedg oraInventory]$ cat ContentsXML/inventory.xml

<?xml version="1.0" standalone="yes" ?>

<!-- Copyright (c) 1999, 2024, Oracle and/or its affiliates.

All rights reserved. -->

<!-- Do not modify the contents of this file by hand. -->

<INVENTORY>

<VERSION_INFO>

   <SAVED_WITH>12.2.0.7.0</SAVED_WITH>

   <MINIMUM_VER>2.1.0.6.0</MINIMUM_VER>

</VERSION_INFO>

<HOME_LIST>

</HOME_LIST>

<COMPOSITEHOME_LIST>

</COMPOSITEHOME_LIST>

</INVENTORY>

手工增加补充inventory.xml中 HOME_LIST 节点,写入当前db_1主目录信息

[oracle@zonghedg oraInventory]$ cat ContentsXML/inventory.xml

<?xml version="1.0" standalone="yes" ?>

<!-- Copyright (c) 1999, 2024, Oracle and/or its affiliates.

All rights reserved. -->

<!-- Do not modify the contents of this file by hand. -->

<INVENTORY>

<VERSION_INFO>

   <SAVED_WITH>12.2.0.7.0</SAVED_WITH>

   <MINIMUM_VER>2.1.0.6.0</MINIMUM_VER>

</VERSION_INFO>

<HOME_LIST>

<HOME NAME="OraDB19Home1" LOC="/oracle/app/product/19.3.0/db_1" TYPE="O" IDX="1"/>

</HOME_LIST>

<COMPOSITEHOME_LIST>

</COMPOSITEHOME_LIST>

</INVENTORY>

修复后

./opatch lsinv

正常输出补丁版本、PSU/BP 补丁信息,不再报 error code 73

但是数据泵备份还是报错ORA-31623。

六、解决

查找mos上有一篇文档

How to resolve the Data Pump error ORA-31623 UDE-31623(a job is not attached to this session via the specified handle)?(Doc ID 1907256.1)

提到V$VERSION与REGISTRY$HISTORY版本不匹配会造成这个错误:

查询结果确实不匹配:

原因也找到了,客户主库和备份版本补丁不一致,主备切换后,由于版本不一致导致备份异常,把补丁打到19.22,问题解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

烟雨归来

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值