2010-04-08 76 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有一個問題,需要做的贈款選擇(我將查找線程)

此外,由於在運行數據庫統計不子程序分析任何字典