Oracle 10g 声称一个包体有错误但它没有

Posted

技术标签:

【中文标题】Oracle 10g 声称一个包体有错误但它没有【英文标题】:Oracle 10g claiming that a package body has errors when it does not 【发布时间】:2012-04-19 18:46:45 【问题描述】:

我的 oracle 实例上有几个包。当我从头开始重新创建数据库时,我得到零个无效对象,并且没有来自 liquibase 的警告。

然后,当我调用一个包方法时,像这样:

new SimpleJdbcCall(jdbcTemplate).withCatalogName(packageName).withProcedureName(storedProcedureName).execute(parameterMap);

它给了我以下错误:

org.springframework.jdbc.UncategorizedSQLException: CallableStatementCallback; uncategorized SQLException for SQL [call CALENDAR_MANAGEMENT.CREATE_SUMMARIES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]; SQL state [72000]; error code [4063]; ORA-04063: package body "ETPDEV.CALENDAR_MANAGEMENT" has errors
ORA-06508: PL/SQL: could not find program unit being called: "ETPDEV.CALENDAR_MANAGEMENT"
ORA-06512: at line 1; 

nested exception is java.sql.SQLException: ORA-04063: package body "ETPDEV.CALENDAR_MANAGEMENT" has errors
ORA-06508: PL/SQL: could not find program unit being called: "ETPDEV.CALENDAR_MANAGEMENT"
ORA-06512: at line 1

Caused by: java.sql.SQLException: ORA-04063: package body "ETPDEV.CALENDAR_MANAGEMENT" has errors
ORA-06508: PL/SQL: could not find program unit being called: "ETPDEV.CALENDAR_MANAGEMENT"
ORA-06512: at line 1

再次检查无效对象没有任何结果。再次编译 CALENDAR_MANAGEMENT 正常完成,没有错误。

我已尝试重新编译完整的架构,但没有成功。

当我从 SQLDeveloper 调用它时,它工作正常。

【问题讨论】:

您是否在 Java 和 SQLDeveloper 中使用相同的帐户运行它? 您说两个帐户是相同的,但他们都以完全相同的用户身份登录吗?这看起来像是一个经典的权限问题。 catalog的含义在jdbc中没有明确定义,可以尝试去掉withCatalogName调用,用包名作为过程名的前缀吗? 啊哈!通过在 java 端对 user_error 进行一些调用,我能够缩小范围并解决问题。我不知道,在一个单独的测试用例中,另一个包被模拟/替换,然后被退回。 CALENDAR_MANAGEMENT 包中的模式更改导致它无效。通过修复依赖关系,我能够让它始终如一地工作。 @JBristow 请将其发布为答案! 【参考方案1】:

我在集成检查中遇到了这个错误,我没想到在运行包时检查它的有效性。

在调用包之前删除一些简单的代码:

select name || ' - ' || line || ' - ' || text from user_errors order by name, sequence;

我发现另一个测试本身并没有清理,但是这个是,所以当我查看前后的数据库时,它看起来很好。

【讨论】:

以上是关于Oracle 10g 声称一个包体有错误但它没有的主要内容,如果未能解决你的问题,请参考以下文章

win7 安装Oracle10g,使用exp工具导出Oracle11g用户所有数据,报错信息提示EXP-00056: ORACLE-12154

oracle 10g 监听服务启动时报错,1067:进程意外终止

过程包体中的 Oracle Merge 语句错误

ORA-00907: ORACLE 10G 中缺少右括号

Oracle10g安装过程中ORA-27125问题解决

运行程序时出现错误 PLS-00103