2017-08-06 9 views
0

Ich habe ein Oracle-Paket mit einer Prozedur, die Tabelle erstellen, als sie Privilegien gewähren.Keine Berechtigungen zum Sammeln von Tabellen-Statistiken

Der Code ist nur etwa wie folgt:

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

Der Inhaber des Verfahrens ist es Benutzer mit DBA-Rolle.

Diese Rolle hat

jeden Tisch Privileg Solche

erstellen, wie

Privileg jeden Tisch Analysieren

Warum also, wenn ich dieses Verfahren renne , Ich bekomme eine Ausnahme von 'kein Privileg ges 'auf dem Sammeltisch Befehl, Aber die' create 'gerade ausgeführt ok?

Und was ist die Lösung? Benötige ich den SU-Benutzer, um dem DBA explizite Berechtigungen für die Analyse zu erteilen?

Ich benutze Oracle 11g-Version.

Danke.

Antwort

3

Die Berechtigungen müssen direkt dem Eigentümer der Prozedur/des Pakets erteilt werden, nicht indirekt von einer Rolle.

Natürlich ist auch die EXECUTE ON owner.name_of_procedure notwendig.

Aus den Verwendungshinweise des GATHER_TABLE_STATS Procedure

diese Prozedur rufen Sie Eigentümer der Tabelle sein muss, oder Sie müssen die ANY Privileg analysieren.

Verwandte Themen