ITPub博客

首页 > 数据库 > Oracle > 关于ORACLE_OCM.MGMT_DB_LL_METRICS的错误

关于ORACLE_OCM.MGMT_DB_LL_METRICS的错误

原创 Oracle 作者:orchidllh 时间:2008-07-07 15:29:20 0 删除 编辑
上周五的例行检查时发现两个数据库alert同时出现了以下的错误提示:
Errors in file /home/oracle/admin/pcard1/bdump/pcard1_j002_8968.trc:
ORA-12012: error on auto execute of job 68904
ORA-04063: ORA-04063: package body "ORACLE_OCM.MGMT_DB_LL_METRICS" has errors
ORA-06508: PL/SQL: could not find program unit being called: "ORACLE_OCM.MGMT_DB_LL_METRICS"
ORA-06512: at line 1
has errors[@more@]

对应用应该没有什么影响,检查收集的统计信息,也没有发现什么异常。
周五选择了继续观察。

但是今早发现周末还在持续的提示中,应该就不是偶发的故障了。
通过oem找到这个对象,发现是invalid的,编译提示错误。
发现是没有访问SYS.UTL_FILE的权限,继而发现有将近60个对象都是失效的。

这个数据库上线应该有三个月了,测试到上线也有一两个月,并没有出现过类似的问题。
但是我最近的确收回了public用户的sys.utl_file,一起收回的还有sys.utl_tcp sys.utl_http sys.utl_smtp,当时执行这些操作的时候还挺疑惑的,因为我上线前肯定执行
过类似的操作的,为什么运行一段时间之后,这些权限又都付给public了呢?
回想起来,我在五月初升级了数据库,从10203升级到10204,升级后并没有检查过这些权限,只重新编译了对象。
有可能是升级数据库的脚本,重新将这些对象付给了public,而我收回这些权限导致了部分数据库对象失效。

基本确认问题原因以后,我将sys.utl_file单独付给了oracle_ocm用户,然后对报错的包体进行重新编译,编译通过。

GRANT EXECUTE ON SYS.UTL_FILE TO "ORACLE_OCM";

只有,我又核对了其他的失效对象,将权限单独付给了这些用户,大部分对象都可以成功编译了。
GRANT EXECUTE ON SYS.UTL_FILE TO "OLAPSYS";
GRANT EXECUTE ON SYS.UTL_FILE TO "XDB";
GRANT EXECUTE ON SYS.UTL_FILE TO "WMSYS";
GRANT EXECUTE ON SYS.UTL_FILE TO "ORDPLUGINS";
GRANT EXECUTE ON SYS.UTL_FILE TO "DMSYS";
GRANT EXECUTE ON SYS.UTL_FILE TO "MDSYS";

GRANT EXECUTE ON SYS.UTL_HTTP TO "ORDPLUGINS";

GRANT EXECUTE ON SYS.UTL_HTTP TO "OLAPSYS";
GRANT EXECUTE ON SYS.UTL_TCP TO "OLAPSYS";
GRANT EXECUTE ON SYS.UTL_SMTP TO "OLAPSYS";

GRANT EXECUTE ON SYS.UTL_SMTP TO "SYSMAN";

由于我的组件是选装的,有些组件没有安装,所以部分对象仍然不能编译通过,确认没有用到,也就算了。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/51862/viewspace-1006902/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-02-21

  • 博文量
    180
  • 访问量
    882779