内容阅读
在知识库中专注阅读,并随时返回相关工具与课程
ORA-06508常见PL/SQL
PL/SQL:找不到被调用的程序单元
PL/SQL: could not find program unit being called
错误描述
PL/SQL 块尝试调用不存在、无效或已被删除的过程、函数或包,而会话仍持有对其的缓存引用。
可能原因
- 在会话活动期间包或过程被删除或替换
- 包体被重新编译导致依赖会话丢失缓存状态
- 引用的对象存在于不同 schema 中且缺少适当授权
解决方案
- 1重新连接会话以刷新 PL/SQL 缓存引用
- 2重新编译无效对象:EXEC DBMS_UTILITY.COMPILE_SCHEMA('SCHEMA_NAME');
- 3授予 EXECUTE 权限:GRANT EXECUTE ON package_name TO user_name;
诊断命令
SELECT object_name, object_type, status FROM dba_objects WHERE status = 'INVALID' ORDER BY object_type, object_name;SELECT owner, object_name, object_type FROM dba_objects WHERE object_name = 'PACKAGE_NAME';#plsql#package#invalid-object#recompile