Chinaunix

标题: redhat环境下从shell传递参数到sql出错(solaris下ok) [打印本页]

作者: zdj007    时间: 2013-08-09 23:31
标题: redhat环境下从shell传递参数到sql出错(solaris下ok)
如下是在solaris执行成功的运维脚本,但是移植到redhat却出错了,详见No.2,请问如何解决?
1。solaris执行成功的运维脚本
-bash-3.00$ cat topPID_prstat.sh
#!/usr/bin/bash
num=1
day=`date +%Y%m%d`
day1=`date +%Y%m%d%H%M`
while [ $num -lt 8 ]
do
        ltime=`date +%H:%M:%S`
        second=`date +%S`
        var_pid=`prstat -a 1 1|sed -n "2p"|awk '{print $1;}'`
        cputotal=`prstat -a 1 1|sed -n "2p"|awk '{print $1,$9;}'`
#echo $var_pid;
sqlplus -S abc/abc@abc <<EOF
conn / as sysdba;
set heading off;
set serveroutput off;
set linesize 400;
set pagesize 5000;
set trimspool on;
SELECT to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'),sql_text FROM v\$sqltext a WHERE (a.hash_value, a.address) IN
(SELECT DECODE (sql_hash_value,0, prev_hash_value,sql_hash_value),DECODE (sql_hash_value, 0, prev_sql_addr, sql_address)FROM v\$session b
WHERE b.paddr = (SELECT addr FROM v\$process c WHERE c.spid =$var_pid))ORDER BY piece ASC;

EXIT
EOF

        echo $ltime $cputotal  >> /export/home/beiman/Monitor_TopPID/$day.cpu-mem.log
        let num+=1;
        sleep 1;
done
2。redhat执行出错信息如下:
[oracle@itms-sjz-db-4 Monitor]$ ./topPID_prstat.sh
WHERE b.paddr = (SELECT addr FROM v$process c WHERE c.spid=12345))
                                                           *
ERROR at line 4:
ORA-00920: invalid relational operator
作者: bikong0411    时间: 2013-08-10 08:48
$process 没解析吧
作者: zdj007    时间: 2013-08-11 06:30
回复 2# bikong0411
copy到论坛后显示格式错位,
*是放置在$var_pid上的,肯定是没有解析,麻烦帮忙解决一下。

   
作者: syncpk99    时间: 2013-08-14 08:51
使用sqlplus执行SQL的脚本有一种简单的测试手段,就是将sqlplus -S abc/abc@abc <<EOF注释掉,然后在此行下面增加一行cat <<EOF,然后执行代码,将生成的SQL语句,手工在sqlplus中执行,查找具体出错的原因。
另外spid是varchar2类型,最好将$var_pid使用单引号括起来。
作者: zdj007    时间: 2013-08-14 10:19
本帖最后由 zdj007 于 2013-08-14 10:44 编辑

回复 4# syncpk99


    感谢回复。
    测试后发现cat打印出来的sql拷贝到sqlplus中能够执行,但是直接执行shell还是老样子。
相信是c.spid=后面的参数值没有被带进数据库里。
作者: zdj007    时间: 2013-08-20 10:09
怎么解决,那位帮忙?
作者: zdj007    时间: 2013-08-22 09:59
回复 6# zdj007


    顶!




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2