【问题标题】:oracle insufficient priviliges when creating view using a procedureoracle 使用过程创建视图时权限不足
【发布时间】:2016-03-08 08:21:44
【问题描述】:

当调用一个应该创建视图的过程时,它返回“Insufficient Privileges”。我可以使用 SQL 命令本身创建视图,但不能在运行过程时创建。完成的所有操作都在模式所有者中。请告诉我如何解决这个问题。

/* 1. FIRST, I LOGON TO MY OWN SCHEMA, CALLED 'MY_SCHEMA' */
/* (IF YOU WANT TO USE A DIFFERENT ONE, JUST REPLACE THE TEXT MY_SCHEMA WITH YOUR OWN SCHEMA NAME) */

/* 2. DROP THE EXAMPLE TABLE IF IT ALREADY EXISTS */
DECLARE TBL_COUNT INT;
BEGIN
  SELECT COUNT(*) INTO TBL_COUNT FROM ALL_TABLES WHERE OWNER = 'MY_SCHEMA' AND TABLE_NAME = 'EXAMPLE';
  IF TBL_COUNT > 0 THEN
    EXECUTE IMMEDIATE('DROP TABLE "MY_SCHEMA"."EXAMPLE"');
  END IF;
END;
/
-- Result : Done

/* 2. CREATE THE EXAMPLE TABLE */
CREATE TABLE MY_SCHEMA.EXAMPLE
(
  COL1 INTEGER
);
-- Result : Done 

/* 3. THEN, CREATE A VIEW IN MY OWN SCHEMA, WHICH POINTS TO THE TABLE IN MY OWN SCHEMA */
CREATE OR REPLACE VIEW MY_SCHEMA.VW_EXAMPLE AS SELECT * FROM MY_SCHEMA.EXAMPLE;
-- Result : Done 

/* 4. DROP THE VIEW, JUST FOR ARGUMENT'S SAKE */
DROP VIEW MY_SCHEMA.VW_EXAMPLE;
-- Result : Done 

/* 5. NOW CREATE A PROCEDURE IN MY OWN SCHEMA, WHICH CREATES A VIEW IN MY OWN SCHEMA, WHICH POINTS TO A TABLE IN MY OWN SCHEMA */
CREATE OR REPLACE PROCEDURE MY_SCHEMA.PRC_EXAMPLE AS
BEGIN
  EXECUTE IMMEDIATE 'CREATE OR REPLACE VIEW MY_SCHEMA.VW_EXAMPLE AS SELECT * FROM MY_SCHEMA.EXAMPLE';
END;
-- Done

/* 6. LET'S CALL THE PROCEDURE FROM MY OWN SCHEMA, WHICH SHOULD CREATE THE VIEW IN MY OWN SCHEMA, POINTING TO A TABLE IN MY OWN SCHMEA */
BEGIN
  MY_SCHEMA.PRC_EXAMPLE;
END;
-- ORA-01031 : Insufficient privileges

【问题讨论】:

  • 您的 DDL 权限是否通过角色授予,而不是直接授予您的用户?你为什么要创建对象 attr untime —— 架构通常应该静态维护。

标签: sql oracle view procedure create-view


【解决方案1】:

用户 MY_SCHEMA 的权限是什么?

在过程(或 PL/SQL 块)内,只有直接授予权限适用。角色授予的特权(例如角色DBARESOURCE)不适用于过程或PL/SQL 块。

【讨论】:

  • 如果我理解正确,即使过程是由 MY_SCHEMA 在 MY_SCHEMA 中创建的,并且仅适用于 MY_SCHEMA 中的对象,是否还需要设置更多权限?我需要为哪些对象或哪些操作设置权限?我该如何设置这些权限?
  • 您需要特权CREATE VIEW。你通过GRANT CREATE VIEW TO MY_SCHEMA;得到它
  • 我可以从哪个架构授予此权限?当我执行 GRANT CREATE VIEW TO MY_SCHEMA;在我的架构中,它还表示权限不足。
  • 请您的 DBA 同意。
猜你喜欢
  • 2013-04-14
  • 1970-01-01
  • 2017-09-04
  • 2016-07-01
  • 1970-01-01
  • 2019-05-08
  • 1970-01-01
  • 1970-01-01
  • 2013-10-13
相关资源
最近更新 更多