简体   繁体   English

Oracle 19C - 尝试在 DBMS_LOCK 上授予执行权限时出错

[英]Oracle 19C - Error trying to grant execute on DBMS_LOCK

Updating some scripts from 18 to 19, but getting this将一些脚本从 18 更新到 19,但得到了这个

Have also tried just DBMS_LOCK instead of SYS.DBMS_LOCK也试过 DBMS_LOCK 而不是 SYS.DBMS_LOCK

SQL> GRANT EXECUTE ON SYS.DBMS_LOCK to myuser;
GRANT EXECUTE ON SYS.DBMS_LOCK to myuser
                     *
ERROR at line 1:
ORA-04042: procedure, function, package, or package body does not exist

sqlplus "sys/ChangeMe123! AS SYSDBA" sqlplus "sys/ChangeMe123!AS SYSDBA"

Note - other grants worked注意 - 其他赠款有效

SQL> GRANT ALTER SESSION TO myuser; SQL> GRANT ALTER SESSION to myuser;

Grant succeeded.格兰特成功了。

SQL> GRANT CREATE PROCEDURE TO myuser; SQL> GRANT CREATE PROCEDURE to myuser;

Grant succeeded.格兰特成功了。

SQL> GRANT CREATE SEQUENCE TO myuser; SQL> 向 myuser 授予创建序列;

Grant succeeded.格兰特成功了。

SQL> GRANT CREATE SESSION TO myuser; SQL> 向 myuser 授予创建会话;

Grant succeeded.格兰特成功了。

SQL> GRANT CREATE MATERIALIZED VIEW TO myuser; SQL> GRANT CREATE MATERIALIZED VIEW to myuser;

Grant succeeded.格兰特成功了。

SQL> GRANT CREATE TABLE TO myuser; SQL> 向 myuser 授予创建表;

Grant succeeded.格兰特成功了。

SQL> GRANT CREATE TRIGGER TO myuser; SQL> GRANT CREATE TRIGGER TO myuser;

Grant succeeded.格兰特成功了。

SQL> GRANT CREATE VIEW TO myuser; SQL> 向 myuser 授予创建视图;

Grant succeeded.格兰特成功了。

SQL> GRANT CREATE ANY SYNONYM TO myuser; SQL> GRANT CREATE ANY SYNONYM TO myuser;

Grant succeeded.格兰特成功了。

SQL> GRANT DROP ANY SYNONYM TO myuser; SQL> GRANT DROP ANY SYNONYM TO myuser;

Grant succeeded.格兰特成功了。

SQL> GRANT SELECT ANY DICTIONARY TO myuser; SQL> GRANT SELECT ANY DICTIONARY TO myuser;

Grant succeeded.格兰特成功了。

SQL> GRANT EXECUTE ON DBMS_LOCK to myuser; SQL> GRANT EXECUTE ON DBMS_LOCK to myuser; GRANT EXECUTE ON DBMS_LOCK to myuser将 DBMS_LOCK 上的 GRANT EXECUTE 授予 myuser

DBMS_LOCK.SLEEP was deprecated replaced with DBMS_SESSION.SLEEP but still available in 19c for backwards compatibility.Verify if object exists DBMS_LOCK.SLEEP已被弃用,替换为DBMS_SESSION.SLEEP但在 19c 中仍然可用以实现向后兼容性。验证对象是否存在

SQL> select object_name,object_type,owner from dba_objects
  2  where object_name='DBMS_LOCK';

OBJECT_NAME                    OBJECT_TYPE             OWNER
------------------------------ ----------------------- ------------------------------
DBMS_LOCK                      PACKAGE                 SYS
DBMS_LOCK                      PACKAGE BODY            SYS
DBMS_LOCK                      SYNONYM                 PUBLIC

If above query returns nothing then run the dbmslock script as a sysdba that creates above package如果上述查询未返回任何内容,则将 dbmslock 脚本作为创建上述包的sysdba运行

sql>@?/rdbms/admin/dbmslock

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM