Oracle从11gR1升级11gR2后owbsys存储过程报PLS-00201错误如何解决
问题背景
Oracle数据库从11gR1版本升级至11gR2版本后,owbsys用户下的
WB_OLAP_LOAD_CUBE存储过程编译触发如下报错:PROCEDURE OWBSYS.WB_OLAP_LOAD_CUBE On line: 1 PLS-00201: identifier 'DBMS_AWM' must be declared
问题定位步骤
- 检查OLAP组件状态:以SYS用户执行以下SQL,确认OLAP相关组件是否正常生效
所有返回行的select comp_name, version, status from dba_registry where comp_name like '%OLAP%';status字段值应为VALID,如果返回为空或状态为INVALID,说明OLAP组件在升级过程中安装/升级失败。 - 检查
DBMS_AWM系统包状态:执行以下SQL确认包是否存在且有效
无返回结果说明包未安装,select owner, object_name, object_type, status from dba_objects where object_name='DBMS_AWM';status为INVALID说明包已失效。 - 检查OWBSYS用户权限:执行以下SQL确认OWBSYS是否有
DBMS_AWM的执行权限
无返回结果说明升级过程中OWBSYS的相关执行权限被回收。select * from dba_tab_privs where table_name='DBMS_AWM' and grantee='OWBSYS';
解决方案
根据定位到的问题对应处理:
场景1:OLAP组件失效/DBMS_AWM包不存在
- 以SYS用户执行OLAP包安装脚本:
@?/olap/admin/owminst.sql - 执行全局失效对象重编译脚本,修复所有升级后失效的系统对象:
@?/rdbms/admin/utlrp.sql - 重新执行定位步骤的前两条SQL,确认OLAP组件和
DBMS_AWM包状态为VALID。
场景2:OWBSYS无DBMS_AWM执行权限
- 以SYS用户授予OWBSYS对应权限:
第二条授权是避免存储过程后续调用grant execute on sys.dbms_awm to owbsys; grant execute on sys.dbms_aw to owbsys;DBMS_AW.EXECUTE时触发同类权限报错。
验证结果
执行以下SQL重新编译存储过程,确认编译通过:
alter procedure OWBSYS.WB_OLAP_LOAD_CUBE compile; -- 查看编译状态 select object_name, status from dba_objects where owner='OWBSYS' and object_name='WB_OLAP_LOAD_CUBE';
返回status为VALID即问题解决。
内容的提问来源于stack exchange,提问作者Reja
相关产品推荐
相关产品推荐

