DBMS_LOCK.SLEEP vs UNIX睡眠

时间:2017-09-28 06:04:36

标签: oracle unix plsql sleep

我有一个shell脚本,它会在满足某些前提条件后触发PL / SQL报告生成过程。检查是否满足前置条件的逻辑用PL / SQL包编写。报告生成需要等到不满足前提条件。

在PL / SQL过程中使用dbms_lock.sleep与UNIX sleep之间等待的优缺点是什么?

1 个答案:

答案 0 :(得分:3)

与许多设计决策一样,答案是,这取决于。

数据库连接是昂贵且相对耗时的操作。因此,更有效的方法可能是连接到数据库一次,让PL / SQL作业处理等待进程。

使用简单的PL / SQL调用并让数据库处理报告或睡眠逻辑而不是写一个返回调用程序必须的状态的API,它可能更清晰解释并采取行动。这也为您提供了一个更简洁的替代执行路径(例如,通过GUI或DBMS_SCHEDULER作业调用)。

使用shell脚本sleep有两个特定的优点:

  1. 您可以选择在每次循环进入睡眠模式时发出状态(如果这是交互式的)
  2. 默认情况下,sys.dbms_lock上的执行未授予任何人。一些DBA可能不愿意在该包上授予执行权。