PL/SQL找不到日志中调用的ap_val_sb_prod_code数据库对象问题求助
排查PL/SQL找不到
ap_val_sb_prod_code对象的解决方法 - 首先确认你当前PL/SQL登录的数据库实例,和前端业务系统连接的实例一致,测试、生产实例混淆是最常见的查不到对象的原因
- 确认你登录的数据库用户权限足够:PL/SQL默认的「查找数据库对象」功能只会检索当前登录用户名下的对象,如果
ap_val_sb_prod_code归属其他业务用户,你需要先获得该对象的访问权限,或者查找时指定对应schema前缀。
你可以直接在PL/SQL的SQL窗口执行以下语句直接检索对象信息,比自带的查找功能结果更准确:
SELECT owner, object_name, object_type FROM all_objects WHERE object_name = UPPER('ap_val_sb_prod_code');
- 如果查询返回结果,
owner字段就是该对象所属的业务用户,object_type字段会明确标识该对象是独立函数、存储过程,还是包内的子程序 - 如果查询无返回结果,可以把
all_objects替换为dba_objects再次执行(需要当前用户有dba相关权限),如果还是无结果,说明该对象不存在于当前登录的数据库实例中
如果查询到的object_type为SYNONYM(同义词),可以执行以下语句查询同义词指向的真实对象:
SELECT table_owner, table_name FROM all_synonyms WHERE synonym_name = 'AP_VAL_SB_PROD_CODE';
如果以上查询都无结果,可排查两种场景:
- 该对象是业务逻辑执行时动态生成的临时对象,执行完成后自动删除
- 该对象是写在包体内部的私有子程序,未在包头声明,这种默认无法通过对象检索功能查到
内容的提问来源于stack exchange,提问作者May
相关产品推荐
相关产品推荐

