在SQLPlus代码之间的BASH命令或如何计算用于运行不同SQLplus命令的时间?

时间:2014-11-26 12:04:13

标签: oracle sqlplus

出于性能测试的目的 - 我需要计算SQLPlus查询的持续时间。它不像看起来那么简单。

我的代码在这里:

VARIABLE RC REFCURSOR;
EXEC :RC := $aktuellesBericht;
SPOOL ${BERICHT}_${configArray[0]}.DATA
PRINT RC;
SPOOL OFF

这只是整个命令的一部分。整个命令如下所示:

sqlplus -s /nolog > /dev/null 2>&1 <<EOF
CONNECT USER/PASSWORD@DATABASE
#A ton of unimportant SET and CLEAR commands goes here#
VARIABLE RC REFCURSOR;
EXEC :RC := $aktuellesBericht;
SPOOL ${BERICHT}_${configArray[0]}.DATA
PRINT RC;
SPOOL OFF
QUIT
EOF

我需要分别计算EXEC :RC := $aktuellesBericht;PRINT RC;的时间。这甚至可能吗?我可以算一下吗?让我用一些伪代码显示我想要做的事情:

execstart = date +%s%N
EXEC :RC := $aktuellesBericht;
execend = date +%s%N

SPOOL ${BERICHT}_${configArray[0]}.DATA

printstart = date +%s%N
PRINT RC;
printend = date +%s%N
SPOOL OFF

exectime=$(( execend - execstart ))
printtime=$(( printend - printstart ))

echo $exectime;
echo $printtime;

1 个答案:

答案 0 :(得分:0)

bash有一个内置time命令执行命令然后打印不同的时间:

  

如果时间保留字在管道之前,则已经过去了   当执行时,会报告其执行所消耗的用户和系统时间   管道终止。 TIMEFORMAT变量可以设置为指定时序方式的格式字符串   应显示信息;

# only the real time
TIMEFORMAT="This was done in : %R seconds"

time EXEC :RC := $aktuellesBericht;