2010-04-08 77 views
1

我们希望将自动统计信息从外部脚本收集到Oracle 9i的作业调度程序中。这是一个非常简单的工作,并且代码基本上是这样的:Oracle 9i统计作业的权限

DBMS_JOB.SUBMIT( 
    JOB => <output variable>, 
    WHAT => 'DBMS_STATS.GATHER_DATABASE_STATS(
     cascade => TRUE, options => ''GATHER AUTO'');', 
    NEXT_DATE => <start date>, 
    INTERVAL => 'SYSDATE + 7'); 

的工作得到成功并运行创建的,但失败,出现错误:

ORA-12012: error on auto execute of job 25 
ORA-20000: Insufficient privileges to analyze an object in Database 
ORA-06512: at "SYS.DBMS_STATS", line 11015 
... 

我不明白的部分是我提交作业的用户拥有正确的权限来收集这些数据库统计信息 - 如果我手动运行该命令,它将起作用。我很好奇Oracle是否忽略了用户喜欢创建过程的任何基于角色的权限,因此我直接授予用户ANALYZE ANY,但仍然没有骰子。

是否有一些其他权限我不得不直接授予用户使其工作?我宁愿不必为每个模式都做一个单独的工作(如果我在模式的所有者下提交作业,那么这个工作就行)。

+0

用户什么这是?你为工作特别创造的一个? – APC 2010-04-09 06:25:59

+0

这是我们创建的用户,虽然不是专门针对该工作的。用户需要在我们的所有模式中执行各种工作,因此它具有一个自定义角色,它可以使系统权限执行一切。这就是为什么我认为甲骨文忽略了基于角色的权限,因为否则这项工作应该没有访问不足的问题。 – Yoten 2010-04-09 13:21:18

回答

0

你在什么版本的9i上。我记得读一个AskTom线约9.2.0.1有一个问题,需要做的赠款选择(我将查找线程)

此外,由于在运行数据库统计不子程序分析任何字典