删除包时,报ORA-04043: object SYS_PLSQL×× dose not exists
来源:互联网 发布:逃犯 熊孩子 知乎 编辑:程序博客网 时间:2024/06/13 18:10
环境
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之后,就没有碰到这个问题了。
- 删除包时,报ORA-04043: object SYS_PLSQL×× dose not exists
- ArcGIS10.x创建企业级地理数据库报:ORA-04043: Object INSTANCES_UTIL does not exist
- ORA-04043 object DROP_AW_ELIST_ALL does not exist
- ORA-08103: object no longer exists
- ORA-8103 "object no longer exists"错误
- ORA-08103: object no longer exists
- 从临时表返回数据时遇到的问题(ORA-08103: object no longer exists)
- 关于ORA-04043: object dba_tablespaces does not exist
- 由 ORA-04043:object does not exist 想到的
- 关于ORA-04043: object dba_tablespaces does not exist
- 重建em档案时 报ORA-20001: SYSMAN already exists的解决方法
- 【Oracle】-【权限-ORA-04043】- ORA-04043: object "SYS"."V_$DATABASE" does not exist
- 删除 Dblink 报错 ORA-02024: database link not found 的解决方法
- ASM删除磁盘报错:ORA-15054: disk "ORCL:VOL2" does not exist in diskgroup "DATA"
- 解决ORA--27100 shared memory realm already exists报错
- 10G 重建EM 报ORA-20001: SYSMAN already exists
- Oracle10g重建EM 报ORA-20001: SYSMAN already exists
- Oracle10g重建EM 报ORA-20001: SYSMAN already exists
- 在 Eclipse Galileo 中更快地编写 Java 代码
- Mysql更新语句中的safe_mode
- 汉字拼音首字母 简繁体等转换
- 【LeetCode】Sqrt(x)
- IOS7.1 企业应用 证书无效 已解决
- 删除包时,报ORA-04043: object SYS_PLSQL×× dose not exists
- wait函数和waitpid函数比较
- Oracle数据库SqlLoad常用技巧总结(转载)
- 黑马程序员_JAVA动态代理技术学习笔记
- matlab 读取excel 数据
- 初学opencv心得:imshow中断退出问题和stitcher报错问题
- X86_X64
- JAVA 包.算法
- DLNA介绍(包括UPnP,2011/6/20 更新)