ORA-01031: Unzureichende Berechtigungen auf “SYS.DBMS_SESSION", wenn Sie ein Paket auf 11g
Habe ich ein Paket mit einem Verfahren zum erstellen von Kontext und setzen Sie den Wert auf Kontext. Es funktioniert sehr gut, auf 10g aber auf 11g bekomme ich den folgenden Fehler auch mit einer DBA-Rolle werden.
ORA-01031: insufficient privileges
ORA-06512: at "SYS.DBMS_SESSION", line 101
ORA-06512: at "REDIS_DATA.DYNAMICSQL_CONTEXT", line 7
ORA-06512: at "REDIS_DATA.FESTSTELLUNG_GETOVERVIEW", line 99
Das Paket ist aufgebaut wie folgt:
-- DYNAMICSQL_CONTEXT specification
CREATE OR REPLACE PACKAGE REDIS_DATA.DYNAMICSQL_CONTEXT
AS
PROCEDURE CONTEXT_SETPARAM(p_name IN VARCHAR2,
p_value IN VARCHAR2);
END DYNAMICSQL_CONTEXT;
Und den Körper:
CREATE OR REPLACE PACKAGE BODY REDIS_DATA.DYNAMICSQL_CONTEXT
IS
PROCEDURE CONTEXT_SETPARAM(p_name IN VARCHAR2,
p_value IN VARCHAR2)
IS
BEGIN
DBMS_SESSION.SET_CONTEXT('parameter', p_name, p_value);
END CONTEXT_SETPARAM;
END DYNAMICSQL_CONTEXT;
Wird es so aufgerufen
IF p_ISTADMIN = 0
THEN
DYNAMICSQL_CONTEXT.CONTEXT_SETPARAM('pREVISORID', p_REVISORID);
p__wherePart := p__wherePart || 'AND ((p.ISSECURE = 1 AND p.ID IN (select PARENTOBJECT from PRUEFUNG_BETEILIGTE where PROPERTY = SYS_CONTEXT(''parameter'', ''pREVISORID''))) OR (p.ISSECURE = 0)) ';
END IF;
wird der Kontext verwendet werden, aus mehreren gespeicherten Prozeduren. Wie man diese arbeiten auf beiden Plattformen????
Als Ergänzung hier die privilegs der schema-Benutzer:
system-Privileg 10g, wo es funktioniert:
ALTER SESSION
CREATE ANY CONTEXT
CREATE CLUSTER
CREATE INDEXTYPE
CREATE OPERATOR
CREATE PROCEDURE
CREATE SEQUENCE
CREATE SESSION
CREATE SYNONYM
CREATE TABLE
CREATE TRIGGER N
CREATE TYPE N
CREATE VIEW N
DEBUG ANY PROCEDURE N
DEBUG CONNECT SESSION
Habe ich versucht, dieses privilegs auf 11g-aber es hat nicht funktioniert. Also gab ich den schema-Benutzer mit der Rolle DBA. Aber das hat nicht funktioniert auch.
- Hat der aufrufende Benutzer haben
EXECUTE
aufDBMS_SESSION
? - Ich habe das problem gelöst. Das privilegs des Benutzers sind nicht das problem. Ich hatte zum initialisieren der Kontext in jedem Aufruf Speichert der Verfahren. EXECUTE IMMEDIATE 'CREATE or REPLACE context-parameter mit DYNAMICSQL_CONTEXT';
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich auch vor dem gleichen paar Tage zurück, aber es lösen sich schon etwas anders. In meinem Fall, ruft DB-Benutzer alle Berechtigungen erforderlich sind, einschließlich
EXECUTE
undDBMS_SESSION
.Sie müssen nicht erstellen oder initialisieren Sie jedes mal, wenn Sie erstellen
CONTEXT
wie folgende. Pls siehe Beispiel der folgenden Aussage: