暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 通过shell脚本实现多个Plsql

ASKTOM 2019-11-29
531

问题描述

我写了一个shell脚本,它将调用两个plsql过程,
首先我已经连接到sqlplus,然后我将调用一个块内部的plsql,用于声明变量来传递过程的参数。在这个块内部我已经提到了dbms output enable和dbms output.print以查看过程的结果
之后,根据plsql内部的错误代码输出,我将其视为成功或declin。
然后,在shell脚本中,我将声明另一个块来调用另一个plsql过程,就像第一个过程一样。

问题是甚至shell没有回响味精或dbms输出没有打印

第一个过程需要4个小时才能完成 (如果我手动运行)。第二个过程只需要3分钟。


我已经将这个shell脚本安排为Linux中的cronjob。






如果我更改顺序,例如首先是3分钟程序,然后是4小时程序
该脚本正在回响dbms输出和成功msg。
第二次什么也没发生
没有dbms输出,甚至没有脚本回显。
注意: 我已经给出了dbms输出大小作为100000
而且,如果我手动执行脚本,则可以正常工作,并将所有dbms和脚本msg回声到cron日志中
我在crontab命令中提到过

帮我一下。
===========================
程序是,



#!/bin/bash

org="'0001'"
upd="'Y'"


ORACLE_HOME=/oracle/app/12.1.0.2/client_1/ ; export ORACLE_HOME
PATH=/usr/bin/gcc//:/usr/local/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/usr1/UBCEOD/.local/bin:/usr1/UBCEOD/bin:/oracle/app/12.1.0.2/client_1/bin/:/usr1/UBCEOD/bin:/oracle/app/12.1.0.2/client_1/bin/ ; export PATH
CONNECT=INTELLECTCARDS/INTELLECTCARDS@UBCCARDS; export CONNECT

#ORACLE_HOME=/oracle/app/product/12.1.0.2.0_32bitclint/; export ORACLE_HOME
#PATH=/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr1/SIR14234/bin:/oracle/app/product/12.1.0.2.0_32bitclint/bin ; export PATH
#CONNECT=INTELLECTCARDS/INTELLECTCARDS@SIR14235; export CONNECT


check_date=`sqlplus -s $CONNECT <> /usr1/UBCEOD/prod/JOB_CHECK/chk_otb.log
复制






专家解答

抱歉-我不明白这是怎么回事:

output_calc=`sqlplus -s $CONNECT <

您的dbms_output将返回一些文本 (“txt outout .....”)

那怎么会是 “00” 呢?

我不是 “var = 'sqlplus command'” 风格的编码的忠实粉丝,因为它过于严格。它还有更多的工作,但是看看假脱机和greping,例如

print "
connect user/pass
set serverout on
select ....
exec my_proc ...
等等" | sqlplus /nolog 1>/tmp/output.$$ 2>&1


以便捕获所有输出,然后查找变量的特定前缀。例如,您的proc可能会这样做:

dbms_output.put_line('结果 =' | | 结果);

然后在你的脚本中,你会有:

res=`grep ^RESULT= /tmp/output.$$ | awk -F= '{print $2}'`


或者类似的。这也打开了更好的错误检测,例如

if [ "`grep ORA- /tmp/output.$$`" ] ; then
  mailx -s "AGGGGH" connor@support.com < /tmp/output.$$
  exit 1
fi

等等

复制
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论