oracle 尝试从包中执行过程时出现权限不足错误

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/24650624/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-19 02:25:00  来源:igfitidea点击:

Insufficient Priviledges error when trying to execute the procedure from package

oraclepackage

提问by user3819801

Step 1 : I have created one package with procedures to create context and set value to the context.

第 1 步:我创建了一个包,其中包含创建上下文并为上下文设置值的程序。

create or replace PACKAGE Context_check AS

    PROCEDURE set_context_vpd_proc (V_ISID in varchar2);
    procedure set_context  (v_isid_a  in varchar2);

END Context_check;

create or replace PACKAGE BODY Context_check AS
 PROCEDURE set_context_vpd_proc (V_ISID in varchar2)
    AS
    v_STAT VARCHAR2(200);
    v_chk varchar2(2000);
  BEGIN
         DBMS_SESSION.SET_CONTEXT('VPD_CTX', 'ISID', V_ISID );
    --v_STAT := '';
  EXCEPTION
   WHEN NO_DATA_FOUND THEN NULL;
  END;

procedure set_context  (v_isid_a  in varchar2)
as
begin

EXECUTE IMMEDIATE  'CREATE OR REPLACE CONTEXT VPD_CTX using set_context_vpd_proc';

set_context_vpd_proc (v_isid_a);

EXCEPTION
   WHEN NO_DATA_FOUND THEN NULL;
end set_context;

END Context_check;

Step 2: When I am trying to executing the procedure I am getting an error

第 2 步:当我尝试执行程序时出现错误

EXECUTE Context_check.set_context('Ana');

Error starting at line 43 in command:
EXECUTE Context_check.set_context('Ana')
Error report:
ORA-01031: insufficient privileges
ORA-06512: at "SYS.DBMS_SESSION", line 114
ORA-06512: at "SEC_ADMIN.CONTEXT_CHECK", line 8
ORA-06512: at "SEC_ADMIN.CONTEXT_CHECK", line 20
ORA-06512: at line 1
01031. 00000 -  "insufficient privileges"
*Cause:    An attempt was made to change the current username or password
           without the appropriate privilege. This error also occurs if
           attempting to install a database without the necessary operating
           system privileges.
           When Trusted Oracle is configure in DBMS MAC, this error may occur
           if the user was granted the necessary privilege at a higher label
           than the current login.
*Action:   Ask the database administrator to perform the operation or grant
           the required privileges.
           For Trusted Oracle users getting this error although granted the
           the appropriate privilege at a higher label, ask the database
           administrator to regrant the privilege at the appropriate label.

I have already given all the grants on that package.Still I am not able to execute this procedure.

我已经给了那个包的所有赠款。但我还是不能执行这个程序。

Note : If I create the same procedures as stand alone ,its working fine and setting the context.

注意:如果我创建与独立程序相同的程序,则它可以正常工作并设置上下文。

回答by Stephane

You need to create a context using a package, not using a procedure inside of a package.

您需要使用包创建上下文,而不是使用包内的过程。

Instead of

代替

EXECUTE IMMEDIATE  'CREATE OR REPLACE CONTEXT VPD_CTX using set_context_vpd_proc';

Write

EXECUTE IMMEDIATE  'CREATE OR REPLACE CONTEXT VPD_CTX using Context_check';