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