2017-08-06 20 views
0

私は、表を作成するプロシージャを持つOracleパッケージを所有しています。表の統計情報を収集する特権がありません

コードはこれにちょうど似ています

Begin 
Execute immediate 'create table SU.temp_tbl...'; 
... 
... 
Dbms_stats.gather_table_stats('SU', 'TEMP_TBL'); 
End; 

プロシージャの所有者は、DBAロールを持つユーザーです。

この役割は

を持っているので、私は、この手順を実行しているよ、なぜときANY TABLE権限

を分析し、このような

として任意のテーブル権限

を作成、私は '特権なしges 'を収集テーブルのコマンドで、 しかし、'作成 'だけでOKを実行?

解決策は何ですか。 DBAに分析する明示的な権限を与えるにはSUユーザーが必要ですか?

私はOracle 11gバージョンを使用しています。

ありがとうございました。

答えて

3

権限は、ロールによって間接的にではなく、プロシージャ/パッケージの所有者に直接付与する必要があります。

もちろん、EXECUTE ON owner.name_of_procedureも必要です。このプロシージャを呼び出すにGATHER_TABLE_STATS Procedure

の使用上の注意から

あなたは、テーブルの所有者でなければならないか、ANY権限をANALYZE必要です。

関連する問題