I don't think it's the v\$session, it's the session keyword after kill. Create a stored procedure inside Oracle and call the procedure in your script. HTH -Amit. ________________________________ From: oracle-l-bounce@xxxxxxxxxxxxx [mailto:oracle-l-bounce@xxxxxxxxxxxxx] On Behalf Of David Barbour Sent: Friday, May 26, 2006 11:44 AM To: Reidy, Ron Cc: Oracle-L Freelists Subject: Re: SQLPLUS issue from ksh script I thought I had escaped the $, which was the first problem I encountered this morning when it told me that "Table or View does not exist.." I had another issue with the execute immediate because I initially created the command string with a ; and although it came out in dbms_output.put_line as alter system kill session '13,4287'; that wasn't what execute immediate wanted, just the statement alter system kill session '13,4287' The output I included below was run using ksh -x , so the reproduction of what Oracle is getting is shown. As you'll note the v$session with the single / is coming across okay - I think. Am I missing something else? On 5/26/06, Reidy, Ron <Ron.Reidy@xxxxxxxxxxxxxxxxxx> wrote: Escape the "$" in v$session => v\#session -- Ron Reidy Lead DBA Array BioPharma, Inc. ________________________________ From: oracle-l-bounce@xxxxxxxxxxxxx [mailto: oracle-l-bounce@xxxxxxxxxxxxx <mailto:oracle-l-bounce@xxxxxxxxxxxxx> ] On Behalf Of David Barbour Sent: Friday, May 26, 2006 10:29 AM To: Oracle-L Freelists Subject: SQLPLUS issue from ksh script I'm missing something easy here, so I'd really appreciate a fresh set of eyes. I've got a persistent jdbc connection to a primary database I need to get rid of before I can switch to the standby. The only way I've been able to come with to get rid of it for the time I need to switch over is to lock the user account, find the SID and SERIAL# of the session(s) and kill them. Maybe there's a better way, but it works. Until I try to script it. Here's the relevant portion of the script(ksh): declare STR VARCHAR2(2000); begin for x in (select * from v\$session) LOOP IF x.user# = 27 then str := ' alter system kill session ''' || x.sid || ',' || x.serial# ||''''; execute immediate str; END IF; END LOOP; end; / But when I run it I get: sqlplus "/ as sysdba" <<EOJ declare STR VARCHAR2(2000); begin for x in (select * from v$session) loop IF x.user# = 27 then str := ' alter system kill session ''' || x.sid || ',' || x.serial# ||''''; execute immediate str; End if; END LOOP; end; EOJ session: Undefined variable. logout It works in "pure" sqlplus, just not in the script. Ideas? Thanks. ________________________________ This electronic message transmission is a PRIVATE communication which contains information which may be confidential or privileged. The information is intended to be for the use of the individual or entity named above. If you are not the intended recipient, please be aware that any disclosure, copying, distribution or use of the contents of this information is prohibited. Please notify the sender of the delivery error by replying to this message, or notify us by telephone (877-633-2436, ext. 0), and then delete it from your system.