ORA-06508:PL / SQL:找不到被调用的程序单元:“PUBLIC.PLITBLM”

时间:2013-06-05 10:08:39

标签: oracle stored-procedures plsql package ibatis

我有一个java Web应用程序,它从ibatis xml文件调用oracle plsql过程。此过程捕获表的审核信息。所以当多个用户修改一个表这个存储过程。在某个时间后我收到以下错误。

  

--- example.xml中发生错误   ---应用参数图时发生错误   ---检查example.params。
  检查声明(更新程序失败)   原因:java.sql.SQLException:ORA-04068:已丢弃现有的包状态   ORA-04065:未执行,更改或删除存储过程“PUBLIC.PLITBLM”   ORA-06508:PL / SQL:找不到被调用的程序单元:   “PUBLIC.PLITBLM”ORA-06512:在“AUDIT”,第279行   ORA-06512:第1行

来自ibatis的电话

  


  
     
  
  
  
  
     {调用AUDIT(?,?,?,?,?,?,'val')}   

从java web app调用

  

Map _temp = new HashMap(params);
  _temp.put( “OPERATION_TYPE” 操作);
  sqlMapper.insert( “call_proc_audit”,_温度);
  返回false;

plsql过程只对insert,update和delete执行立即执行。

由于安全问题,我删除了代码。

1 个答案:

答案 0 :(得分:1)

PLITBLM包是标准Oracle构建的一部分;显然它处理索引组织表。它没有详细记录,因为它不是我们需要直接调用的东西。 Find out more.某些标准Oracle功能可能依赖于它。

至于为什么你的程序会抛出异常,这有点像面子。该包由Oracle主目录$ORACLE_HOME/rdbms/admin/plitblm.sql中的脚本创建。但是,它不能单独运行,而只能作为catproc,sql的一部分运行。这将构建数据字典和其他内容,并作为Oracle安装过程的一部分运行。

也许你有一个拙劣的安装?

有趣的是,实际的PLITBLM包由SYS拥有,但错误消息引用了PUBLIC,这表明它可能只是一个缺少的公共同义词。但是,如果catproc,sql没有成功运行,可能会有其他潜伏的恶意。您确实需要DBA来检查数据库,并在必要时重新运行catproc,sql