2010-11-19 10 views
2

Ich habe 3 Oracle-Benutzer A, B, C und möchte B (als Zwischenprodukt) verwenden, um eine Tabelle von C nach A zu importieren. Wenn ich mit B verbunden bin, kann ich "create table A.T1 as select * from T1 @ C ". Aber wenn ich die SQL-Anweisung in eine Prozedur einfüge, die B erstellt/besitzt, bekomme ich immer "ORA-01031: unzureichende Berechtigungen". Als sysdba habe ich alle Rechte (dba) an B vergeben. Also was fehlt mir hier? Vielen Dank.Erbt eine Oracle-Prozedur die Berechtigungen ihres Erstellers?

Antwort

2

Haben Sie dem Benutzer B Folgendes gewährt?

sql> grant create any table to b; 
5

in einem Rechte definer Stored Procedure (Standard), die nur Privilegien, die verfügbar sind, sind diejenigen, die direkt an den Benutzer erteilt werden, nicht diejenigen, die (wie DBA) über eine Rolle erteilt wurden. Also ist Pablo richtig, dass B das Privileg CREATE ANY TABLE als direkte Subvention haben müsste.

+1

der Standardwert ist "Owner Rights" nicht Invokers. – redcayuga

+1

@redcayuga - +1 und danke für den Fang! Du hast absolut recht. Ich habe meine Antwort aktualisiert, um Ihre Korrektur widerzuspiegeln. –

+0

"AUTHID DEFINER" ...;) Dies ist die Standardeinstellung. Alternative ist "AUTHID CURRENT_USER" was ich immer ausprobieren möchte ...! –