v$ oracle 命令,请教关于SHELL脚本中涉及的V$数据字典问题,如何解决?

作者在尝试通过shell脚本调用SQL*Plus,在Oracle数据库中执行SQL查询,遇到关于SPID的问题。脚本试图从v$process视图获取进程地址,但报错指出缺少表达式。寻求帮助解决转义和SQL语法问题。
摘要由CSDN通过智能技术生成

谢谢大家,用*.sql然后在ORCLE中执行当然,可以,我是想实验一下用SHELL

转义后还有一点问题,大家帮我看看,谢谢!

看我执行,还有错

-bash-3.00$ ls

spid.sh  spid.sql

-bash-3.00$ sh spid.sh

SQL*Plus: Release 9.2.0.7.0 - Production on Mon Nov 5 06:54:55 2007

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

SQL> Connected.

SQL> SQL> SQL> SQL> SQL>   2    3    4            ( select addr from v$process where spid in())

*

ERROR at line 4:

ORA-00936: missing expression

SQL> SQL>   2    3    4    5    6                   paddr in (select addr from v$process where spid=

)

*

ERROR at line 4:

ORA-00936: missing expression

SQL> Disconnected from Oracle9i Enterprise Edition Release 9.2.0.7.0 - 64bit Production

With the Partitioning, Oracle Label Security, OLAP and Oracle Data Mining options

JServer Release 9.2.0.7.0 - Production

-bash-3.00$

-bash-3.00$ ls

spid.sh  spid.sql

脚本代码如下

-bash-3.00$ cat spid.sh

#!/bin/sh

sqlplus /nolog <

connect / as sysdba

col machine format a30

col program format a40

set lines 200

set pages 1000

select sid,serial# ,username,osuser,machine,program,process,to_char(logon_time,

'yyyy/mm/dd hh24:mi:ss')

from v$session where paddr in

( select addr from v\$process where spid in($1));

select sql_text from v\$sqltext_with_newlines

where hash_value in

(select SQL_HASH_VALUE from v\$session where

paddr in (select addr from v\$process where spid=$1)

)

order by piece;

exit;

EOF

-bash-3.00$

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值