Execute Immediate scheitert selbst mit CREATE table gewähren

Ich habe ein problem wo ich bin erstellen einer Tabelle mithilfe der execute immediate-Befehl in der stored procedure. Jedoch bekomme ich die Fehlermeldung "Unzureichende Berechtigungen". Ich überprüfte die anderen threads und sorgte dafür, dass der Benutzer "TABELLE ERSTELLEN" Privileg erteilt. Allerdings habe ich noch sehen, wie sich die gleichen Fehler.

SQL> select * from USER_SYS_PRIVS;

USERNAME                       PRIVILEGE                                ADM
------------------------------ ---------------------------------------- ---
MYUSER            CREATE VIEW                              NO
MYUSER            UNLIMITED TABLESPACE                     NO

SQL> select * from session_privs;

PRIVILEGE
----------------------------------------
CREATE SESSION
UNLIMITED TABLESPACE
CREATE TABLE
CREATE CLUSTER
CREATE VIEW
CREATE SEQUENCE
CREATE PROCEDURE
CREATE TRIGGER
CREATE TYPE
CREATE OPERATOR
CREATE INDEXTYPE

11 rows selected.

Die Dummy-Prozedur, die ich erstellt ist :

create or replace procedure sp_dummy
   as
   begin
      execute immediate 'Create table Dummy99_99 (Dummy_Field number)';
   end sp_dummy;
   /

Detaillierte Fehler :

ERROR at line 1:
ORA-01031: insufficient privileges
ORA-06512: at "MYUSER.SP_DUMMY", line 4
ORA-06512: at line 1

Gibt es etwas, was ich falsch mache ?

Beachten Sie, dass eine PL/SQL-Prozedur, verwenden Sie die definer ' s rights standardmäßig, d.h. es läuft mit den rechten des Benutzers, der kompiliert das Verfahren und nicht mit den rechten des Benutzers läuft/startet das Verfahren. Dies kann oder möglicherweise nicht relevant in Ihrem Fall.
Dieser Fehler ist nicht relevant für die "CREATE TABLE" Privileg wie CREATE TABLE Priv wird nur ausgeführt, auf Laufzeit. Dies ist im Zusammenhang mit der CREATE PROCEDURE-Berechtigung. Versuchen Sie GEWÄHREN ERSTELLEN PROCEDUTE ZU MYUSER; und erneut testen. Lassen Sie mich wissen, ob das hilft
der Fehler kommt von der Ausführung der Prozedur, nicht seine Schöpfung - obwohl das nicht eindeutig in der Frage. Der Fehler-stack mit PL/SQL Fehler aus dem code-block. Wenn die create procedure priv fehlte (und es ist nicht, können Sie es in session_privs) Sie würden nur das ORA-01031 aus der create procedure ohne das ORA-06512 Spuren.
yupps verpasst, dass trace :P. In diesem Fall sollte es gut laufen wie CREATE TABLE Priv vorhanden ist. Dies kann nur geschehen, wenn Sie versuchen, zu erstellen, die Tabelle in einem anderen schema. In diesem Fall ERSTELLEN Sie eine BELIEBIGE TABELLE priv muss, das zu tun.
aber es wird nicht versucht, erstellen Sie die Tabelle in einem anderen schema; es ist, weil die Berechtigungen erteilt, die über eine Rolle.

InformationsquelleAutor Sameervb | 2015-11-18

Schreibe einen Kommentar