出于性能测试的目的 - 我需要计算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;
答案 0 :(得分:0)
bash
有一个内置time
命令执行命令然后打印不同的时间:
如果时间保留字在管道之前,则已经过去了 当执行时,会报告其执行所消耗的用户和系统时间 管道终止。 TIMEFORMAT变量可以设置为指定时序方式的格式字符串 应显示信息;
# only the real time
TIMEFORMAT="This was done in : %R seconds"
time EXEC :RC := $aktuellesBericht;