今天在full exp一个库的时候碰到了错误:
EXP-00008: ORACLE error 4068 encountered ORA-04068: existing state of packages has been discarded ORA-04063: package body "SYS.LT_EXPORT_PKG" has errors ORA-06508: PL/SQL: could not find program unit being called ORA-06512: at line 1 EXP-00083: The previous problem occurred when calling SYS.LT_EXPORT_PKG.system_info_exp EXP-00008: ORACLE error 6502 encountered
查看系统,发现这个包是的package body部分是invalid的
SQL> select owner,object_name,object_type,status from dba_objects where object_name = 'LT_EXPORT_PKG'; OWNER OBJECT_NAME OBJECT_TYPE STATUS ---------- -------------------- ------------------ ------- SYS LT_EXPORT_PKG PACKAGE VALID SYS LT_EXPORT_PKG PACKAGE BODY INVALID
尝试用?/rdbms/admin/utlrp重新编译,还是无效。查了一下metalink,发现这个问题还不少。LT_EXPORT_PKG是9i新引入的owm特性(Oracle Database Workspace Manager,参考Metalink:156963.1)的一个包,其属主为sys,但是到了10g,又改到了wmsys下,所以如果系统中安装了该组件,在升级的时候还要注意检查下。最后没办法,只好重建该package搞定:
@?/rdbms/admin/owminst.plb
所以说,对于数据库,一些不必要的组件能不装就不要装,一些不必要的特性,能不用就不用,免得带来一些意想不到的麻烦,影响工作效率,甚至造成不必要的宕机时间。