最近数据库日志文件里频繁报如下错误:
ORA-12012: error on auto execute of job 121
ORA-01925: maximum of 30 enabled roles exceeded
仔细分析日志后,发现改错误是在几天前开始出现的,几天前刚好对数据库做了监控软件的实施,期间建了个角色,故该错误应该是数据库中的角色数超过了系统设置的角色数引起的。
SQL> show parameter role
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
max_enabled_roles integer 30
SQL> select count(distinct role) from dba_roles;
COUNT(DISTINCTROLE)
-------------------
32
对于oracle9i,max_enabled_roles参数的默认值为30(9i的官方文档上写的默认值是20,这个不知道是不是官方文档的错误)。
故对于该问题,可使用如下命令解决:
alter system set max_enabled_roles = 100 scope = spfile;
该命令需要重新启动数据库,才能生效。