AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 427177
Accepted
Richard Green
Richard Green
Asked: 2012-09-14 08:37:47 +0800 CST2012-09-14 08:37:47 +0800 CST 2012-09-14 08:37:47 +0800 CST

为什么我不能在 dbms_lock.sleep() 上授予 exec 或使用它创建一个过程(但我可以自己运行它)

  • 772

我正在尝试编写一小段 PL/SQL,其中包含非 CPU 燃烧睡眠。

以下在 sqldeveloper 中工作

begin
  dbms_lock.sleep(5);
end;

但是(作为同一用户),我不能执行以下操作:

create or replace
procedure sleep(seconds in number)
is
begin
  dbms_lock.sleep(seconds);
end;

没有错误“必须声明标识符“DBMS_LOCK”...有趣,因为我可以在没有程序的情况下运行它。

同样奇怪,当我以DBA身份登录时,我可以运行命令

grant exec on dbms_lock to public;

我得到

ERROR at line 1:
ORA-00990: missing or invalid privilege

这是 Oracle 版本“Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production”

oracle-11g
  • 2 2 个回答
  • 13308 Views

2 个回答

  • Voted
  1. user106666
    2012-09-14T09:37:55+08:002012-09-14T09:37:55+08:00

    根据http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_9013.htm

    GRANT EXECUTE ON "object" TO PUBLIC;
    

    要创建独立过程或函数,或者包规范或主体,您必须满足以下先决条件:

    • 您必须具有 CREATE PROCEDURE 系统特权才能在您的模式中创建过程或包,或者具有 CREATE ANY PROCEDURE 系统特权才能在其他用户的模式中创建过程或包。

    注意:要无错误地创建,即成功编译过程或程序包,需要以下额外权限: 过程或程序包的所有者必须已明确授予代码主体中引用的所有对象所需的对象权限; 所有者无法通过角色获得所需的权限。

    • 如果过程或包所有者的权限发生变化,则必须在执行过程之前重新验证该过程。如果从过程(或包)的所有者处撤销对引用对象的必要特权,则无法执行该过程。
    • 1
  2. Best Answer
    Richard Green
    2012-09-15T04:44:59+08:002012-09-15T04:44:59+08:00
    [richard@f1 ~]$ sqlplus /nolog 
    
    SQL*Plus: Release 11.2.0.2.0 Production on Fri Sep 14 13:33:18 2012
    
    Copyright (c) 1982, 2011, Oracle.  All rights reserved.
    
    SQL> connect sys@xe as sysdba
    
    Enter password: ******
    
    Connected.
    SQL> grant execute on sys.dbms_lock to richard;
    
    Grant succeeded.
    
    • 1

相关问题

  • 如何从 Windows 卸载 Oracle 11g?

  • 如何从 dmp 文件恢复/导入 Oracle 数据库?

  • Linux CentOS 5.2 x86-32 上的 Oracle 11g 静默安装在创建数据库时失败

  • Oracle DBV 文件参数

  • oracle 中的归档日志备份

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve