我在SQL中使用以下命令时收到错误;
执行系统数据库管理系统会话睡眠(1);
但是如果我使用DBMS_LOCK,那么它就可以工作。
执行系统数据库管理系统锁定睡眠(1);
参考:https://oracle-base.com/articles/18c/dbms_session-sleep-18c
使用此命令时是否遗漏了某些内容?
我在SQL中使用以下命令时收到错误;
执行系统数据库管理系统会话睡眠(1);
但是如果我使用DBMS_LOCK,那么它就可以工作。
执行系统数据库管理系统锁定睡眠(1);
参考:https://oracle-base.com/articles/18c/dbms_session-sleep-18c
使用此命令时是否遗漏了某些内容?
2条答案
按热度按时间e0bqpujr1#
DBMS_LOCK是一个特权例程,也就是说,它有很大的权力,因此它通常被保护起来,不能被广泛使用。问题是,非常有用的SLEEP例程当时也不可用。
在18c中,我们意识到了这个问题,所以将SLEEP例程复制到了DBMS_SESSION中,后者是公开的,这样每个人都可以使用SLEEP。
在18c之前,您需要将在DBMS_LOCK上执行的权限授予那些需要它的用户(这是有风险的),或者创建一个 Package 器函数并只授予它,例如
gpnt7bae2#
自制程序。如果您没有设置授权的权限