来自 Unix 的 Oracle sqlplus 的执行消息

Execution message Oracle sqlplus from Unix

我有一个从请求密码的 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 分钟通知一次操作员,例如 "The process continues in execution"?因为一旦进入 sqlplus 就会保留在其中,直到 sp 的执行结束并且 returns 到控制台。

有什么建议或想法吗?

将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

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