1

自動統計収集を外部スクリプトから 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 を直接付与しましたが、サイコロはありませんでした。

これを機能させるためにユーザーに直接付与する必要がある他の権限はありますか? スキーマごとに個別のジョブを作成する必要はありません (スキーマの所有者の下でジョブを送信すると機能します)。

4

1 に答える 1

0

9i のどのバージョンを使用していますか。9.2.0.1 に問題があり、許可選択を行う必要があることについての AskTom スレッドを読んだことを思い出します (スレッドを調べます)。

また、サブルーチンANALYZE ANY DICTIONARYではなくDB統計を実行しているため

于 2011-04-26T14:52:37.933 に答える