Oracle11g ORA-01031:在“上的权限不足”;SYS.DBMS“U会话”;在11g上使用软件包时
我有一个程序包,用于创建上下文并将值设置为context。它在10g上运行得很好,但在11g上,DBA角色也会出现以下错误Oracle11g ORA-01031:在“上的权限不足”;SYS.DBMS“U会话”;在11g上使用软件包时,oracle11g,oracle10g,ora-01031,Oracle11g,Oracle10g,Ora 01031,我有一个程序包,用于创建上下文并将值设置为context。它在10g上运行得很好,但在11g上,DBA角色也会出现以下错误 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", lin
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
包的构建如下所示:
-- 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;
和机构:
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;
它将被称为这样
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;
上下文将从几个存储过程中使用。如何在这两个平台上都能工作
在此添加模式用户的权限:
在10g上工作的系统权限:
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
我在11g上试过这个privilegs,但没用。所以我给了模式用户DBA角色。但这也不起作用。几天前我也面临同样的问题,但解决问题的方式有所不同。在我的例子中,调用DB用户拥有所需的所有特权,包括
EXECUTE
和DBMS\u SESSION
。
如果像下面这样创建上下文
,则不需要每次都创建或初始化。请参见下面的示例声明:
CREATE OR REPLACE CONTEXT parameter USING DYNAMICSQL_CONTEXT **ACCESSED GLOBALLY**;
呼叫用户是否在
DBMS\u会话上执行EXECUTE
?我解决了这个问题。用户的特权不是问题。我必须在每个调用存储过程中初始化上下文。执行立即“使用DYNAMICSQL_上下文创建或替换上下文参数”;