删除包时,报ORA-04043: object SYS_PLSQL×× dose not exists

今天删除一个包时,发生如下错误,怎么也删除不了
ORA-04043: object SYS_PLSQL_215395_9_2 does not exist
 
在google中找到如下文章,问题解决

环境
OS: SunOS HOSTNAME 5.10 Generic_127111-11 sun4u sparc SUNW,Sun-Fire-V890
DB:Oracle9i Enterprise Edition Release 9.2.0.8.0 - Production

问题:一个包处于无效状态,通常直接用命令编译一下,就行了,但这个简单的操作,却碰到:
SQL> alter package SCHEMA.PACKAGENAME compile;
alter package SCHEMA.PACKAGENAME compile
*
ERROR at line 1:
ORA-04043: object SYS_PLSQL_6459_DUMMY_2 does not exist


这个错误,其实在9i里这是比较常见的错误,在SP里定义:TYPE和TABLE OF TYPE的数据对象时.Oracle就会自动的在系统内生成SYS_PLSQL_<ID of SP>%对象,好象Pipeline也会产生.当找到不这些SYS_PLSQL对象时,这个SP就无法通过编译了.

SQL> select 'drop type SCHEMA.'||object_name||' force;' from dba_objects where object_name like 'SYS_PLSQL_6459%';
drop type SCHEMA.SYS_PLSQL_6459_15_1 force;
drop type SCHEMA.SYS_PLSQL_6459_DUMMY_1 force;

这里确实没有错误提示里所指的对象。

解决办法,把这个SP对应的SYS_PLSQL对象全删除:
SQL> drop type SCHEMA.SYS_PLSQL_6459_15_1 force;

Type dropped.

SQL> drop type SCHEMA.SYS_PLSQL_6459_DUMMY_1 force;

Type dropped.

SQL> alter package SCHEMA.PACKAGENAME compile;

Package altered.

确认一下,有没有重新生成SYS_PLSQL:

SQL> select 'drop type SCHEMA.'||object_name||' force;' from dba_objects where object_name like 'SYS_PLSQL_6459%';
drop type SCHEMA.SYS_PLSQL_6459_DUMMY_2 force;
drop type SCHEMA.SYS_PLSQL_6459_15_2 force;
drop type SCHEMA.SYS_PLSQL_6459_DUMMY_2 force;

这就对应Package header里定义了三个TYPE:
TYPE invcur_t IS REF CURSOR RETURN trinvoicemaster%ROWTYPE;
TYPE inv_lines IS TABLE OF trinvoicemaster%ROWTYPE;
FUNCTION split_invoice ( cur_invoicemast in invcur_t ) RETURN inv_lines pipelined;

要删除这些SYS_PLSQL有时比较难的,记得有次用命令死活也删除不了,最后借助TOAD,在图形里把它删除了。Package所引用的SYS_PLSQL对象怎么会不见了,我记得这是一个BUG. 10G之后,就没有碰到这个问题了。

 来源:http://blog.itpub.net/195110/viewspace-713862/
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值