【问题标题】:Execution message Oracle sqlplus from Unix来自 Unix 的执行消息 Oracle sqlplus
【发布时间】:2019-02-09 15:44:23
【问题描述】:

我有一个进程从请求密码的 shell 连接到 Oracle sqlplus,然后按以下方式开始执行存储过程:

echo -e "Enter Password"
read -s pass

$ORACLE_HOME/bin/sqlplus -s -l /nolog << EOF >> $log_deploy
connect $schema/$pass@$db
@$sql/main.sql;
EOF

事实上,这个过程的持续时间是可变的,它是由操作员从服务器的控制台执行的。

有一些方法可以每 10 分钟通知一次操作员,例如 “进程继续执行”?因为一旦进入 sqlplus 就一直保留在其中,直到 sp 执行结束并返回控制台。

有什么建议或想法吗?

【问题讨论】:

    标签: oracle shell unix sqlplus


    【解决方案1】:

    将 sqlplus heredoc 置于后台。等待最后一个后台进程 id ($!) 和 sleep 的完成,检查它的完成情况(顺便说一下,10 分钟是一个很长的时间间隔)

    intrvl=100
    sqlplus  <<EOF &
    input
    EOF
    PID=$!  #get the pid of the last background process.
    
    while [ 1 ]
    do
    if ps -p $PID > /dev/null
     then
       echo "The process continues in execution"
       sleep $intrvl
     else 
       break
     fi
    done
    

    话虽如此,一个好的方法应该是将监控部分排除在处理代码之外。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-17
      • 2017-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-11
      相关资源
      最近更新 更多