问题描述
将一些脚本从18更新到19,但是得到了
还尝试了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”
注意-其他赠款有效
授予成功。
sql>向myuser授予创建过程;
授予成功。
sql>向myuser授予创建序列;
授予成功。
sql>将创建的会话授予myuser;
授予成功。
sql>向myuser授予材料创建的材料视图;
授予成功。
sql>将创建表授予myuser;
授予成功。
授予成功。
sql>将创建的视图授予myuser;
授予成功。
sql>授予对myuser的任何同步信息;
授予成功。
授予成功。
sql>允许选择myuser的所有字典;
授予成功。
sql>将GRMS EXECUTE ON DBMS_LOCK授予myuser; 将DBMS_LOCK授予我的用户执行权限
解决方法
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
如果以上查询未返回任何内容,请以创建以上软件包的 sysdba 的身份运行dbmslock脚本
sql>@?/rdbms/admin/dbmslock