首页 新闻 搜索 专区 学院

oracle 11g expdp导出作业调用失败,提示丢包。

0
悬赏园豆:200 [已解决问题] 解决于 2020-12-02 09:05

win7 oracle版本


BANNER
--------------------------------------------------------------------------------

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
PL/SQL Release 11.2.0.1.0 - Production
CORE    11.2.0.1.0      Production
TNS for 32-bit Windows: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

3报错

C:\Users\Administrator>expdp his1/HIS1@BP DUMPFILE=HIS1.DMP DIRECTORY=DATA_DIR LOGFILE=HIS1.LOG

Export: Release 11.2.0.1.0 - Production on 星期一 11月 30 17:19:44 2020

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

连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
ORA-31626: 作业不存在
ORA-04063: package body "SYS.DBMS_INTERNAL_LOGSTDBY" 有错误
ORA-06508: PL/SQL: 无法找到正在调用 : "SYS.DBMS_INTERNAL_LOGSTDBY" 的程序单元
ORA-06512: 在 "SYS.KUPV$FT", line 991
ORA-04063: package body "SYS.DBMS_LOGREP_UTIL" 有错误
ORA-06508: PL/SQL: 无法找到正在调用 : "SYS.DBMS_LOGREP_UTIL" 的程序单元

尝试使用dba权限重编译包无效

ALTER  PACKAGE SYS.DBMS_INTERNAL_LOGSTDBY COMPILE;

ALTER  PACKAGE SYS.DBMS_LOGREP_UTIL COMPILE;

被毒死的猎人的主页 被毒死的猎人 | 初学一级 | 园豆:22
提问于:2020-11-30 17:43
< >
分享
最佳答案
0

出现这种情况的原因是因为
对于全局变量,每一个session会生成一个本地copy,如果程序重新编译的话,就会因程序里原变量找不到而丢弃该变量,继而导致这个错误。
也就是说在一个会话中调用程序包package时,会生成package中全局变量的副本,如果在另一个会话中对此package进行编译就会使前一个会话中的副本失效,故而产生错误。
要想避免这个错误,可以使程序捕获ORA-06508:的错误进行处理,也可以重新初始化会话

参考:https://blog.csdn.net/weiwangsisoftstone/article/details/44172955

收获园豆:200
大志若愚 | 老鸟四级 |园豆:2082 | 2020-11-30 18:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册