我有一个shell脚本,它反过来调用sql文件。它是一个在UNIX中运行的bash shell。以下是脚本中采取的主要步骤。 1)生成Term文件 2)从实用程序目录中删除前一天的Term和Rpt文件。 3)将术语文件从Run目录复制到Utility目录。 4)运行sql文件 5)将输出,RPT文件从Utility复制到Run目录。
以下是代码段:
> RUN_DIR/nj.terms
if [[ -s RUN_DIR/nj.terms ]] then
rm -f /utl/nj.terms
rm -f /utl/nj.rpt
cp RUN_DIR/nj.terms utl
/bin/sqlplus USER PSWD @sql
cp utl/nj.RPT RUN_DIR
fi
我从sql输出中得到以下错误: ORA-29283 - 文件操作无效。
大多数情况下,这个错误是由于每当sql运行时都没有Term文件。由于此错误,将不会生成RPT文件并导致以下复制命令失败(cp utl / nj.RPT RUN_DIR)。失败后,当我们检查Term文件时,它出现在Utl目录中。
此错误随机发生。有没有机会系统需要更多的时间将Term文件复制到Utility目录,并在完成它之前运行sql?如果有人能在这种情况下帮助我,那就太好了。