首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ORACLE -已授予Create Procedure但无法创建procedure

ORACLE -已授予Create Procedure但无法创建procedure
EN

Stack Overflow用户
提问于 2012-05-05 19:09:38
回答 2查看 19.2K关注 0票数 2

数据库中有一个用户被授予CREATE PROCEDURE权限。但是,当该用户尝试创建一个简单的过程时,会抛出以下错误: ORA- 01031 :特权不足01031。00000 -“权限不足”*原因:试图在没有适当权限的情况下更改当前用户名或密码。如果试图在没有必要的操作系统权限的情况下安装数据库,也会出现此错误。

下面是该过程的DDL:

代码语言:javascript
复制
 CREATE OR REPLACE PROCEDURE TOTALBASE.ROUNDUP 
          (CUR OUT SYS_REFCURSOR  ) 
 AS 
 BEGIN
  OPEN CUR FOR
   SELECT * FROM TOTALBASE.ABONENT; 
 END ROUNDUP;

我还应该考虑做些什么才能让它工作呢?但我不确定。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-05 20:11:44

要在您自己的模式之外的模式中创建过程,您需要CREATE ANY PROCEDURE权限。

一般来说,不应轻易授予此特权,因为它很容易被用来规避数据库安全性。

希望这能有所帮助。

票数 9
EN

Stack Overflow用户

发布于 2012-05-06 01:01:31

在下面的几条评论之后,我再次尝试。

不要在另一个模式中创建过程;只允许每个用户在自己的模式中创建对象。

这样,您就没有理由对其他模式对象进行GRANT访问。然后,TOTALBASE用户可以将该过程的EXECUTE特权授予当前用户。

当前用户需要来自TOTALUSER表的一些数据,当他对函数或过程具有EXECUTE特权时,不需要创建或访问其他对象。

从另一个角度看,这种方式也更容易维护:TOTALUSER在如何向当前用户公开数据方面提供了一种应用程序接口,隐藏了将来可以更改的实现细节,对当前用户是透明的。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10461245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档