Sqlplus in shell script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Sqlplus in shell script
# 1  
Old 09-25-2013
Sqlplus in shell script

Hi All,

Please let me know what i am missing in the following code (part of my script)

Code:
Schemas=(AWQM WFCONTROLLER PROVCO PRISM)

for s in "${Schemas[@]}"
do 
    sch="${s}_$tol"
        
    if [ $tol == AD ] || [ $tol == TD ];then

        echo "This is AD or TD region"

        sqlplus -s $sch/$tpwd@$ttns <<EOF
        set feedback off;
        set pagesize 0;
        set linesize 500;
        set trimspool on;

        spool run_$sch_drops.sql

        select 'set echo on'||chr(59) from dual;
        select 'spool run_'${sch}'_drops.log'||chr(59) from dual;
        select 'show user'||chr(59) from dual;
        select '' from dual;
        select 'drop table "'||table_name||'" cascade constraints purge'||chr(59) from all_tables where owner = '${sch}';
        select '' from dual;
        select 'drop synonym "'||synonym_name||'"'||chr(59) from all_synonyms where owner = '${sch}';
        select '' from dual;
        select 'Drop TYPE "'||OBJECT_NAME||'" Force'||chr(59) from all_objects where object_type='TYPE' and owner='${sch}';
        select 'quit'||chr(59) from dual;

        quit;
        EOF
        

    else
        echo "This is Other Env"
        
    fi
done

I am getting error syntax error: unexpected end of file when i run my script.

Please suggest

Thanks,
Mani
# 2  
Old 09-25-2013
This:
Code:
        EOF

You cannot indent this, it has to be at the very beginning of the line. Otherwise it will not be considered the end of the here-document.
This User Gave Thanks to Corona688 For This Post:
# 3  
Old 09-25-2013
I think EOF started at beginning of sql and end after doing the query. Please correct me if i am wrong.
# 4  
Old 09-26-2013
Quote:
Originally Posted by pvmanikandan
I think EOF started at beginning of sql and end after doing the query. Please correct me if i am wrong.
It did, but that's not what Corona688 is talking about. The final "END" in your script should be at the beginning of the line, but is not.
# 5  
Old 09-26-2013
You might get away with indenting the EOF line with tabs, but only tabs. Copy and paste will normally replace it with spaces, so you have to be very careful.

For safety, you might need to end up with something that looks a bit odd like this:-
Code:
:
:
:
        select 'drop synonym "'||synonym_name||'"'||chr(59) from all_synonyms where owner = '${sch}';
        select '' from dual;
        select 'Drop TYPE "'||OBJECT_NAME||'" Force'||chr(59) from all_objects where object_type='TYPE' and owner='${sch}';
        select 'quit'||chr(59) from dual;

        quit;
EOF
        

    else
        echo "This is Other Env"
:
:
:


Robin
# 6  
Old 09-26-2013
You are correct....it was space issue... i put a tab and it got worked..thanks a lot
Code:
sqlplus -s $sch/$tpwd@$ttns	<<EOF

# 7  
Old 09-26-2013
I would still suggest you move the $sch/$tpwd@$ttns to another line so that it does not appear to anyone else running ps -ef | grep sql

You might need to code it as:-
Code:
sqlplus -s <<EOF
$sch/$tpwd@$ttns
set feedback off;
:
:
:

I don't know how sensitive your databases are, but I would like to keep my credentials secret no matter what they can see or do.



Robin
These 2 Users Gave Thanks to rbatte1 For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

sqlplus in shell script

Hi When I use sqlplus in shell script, I get sqlplus: command not found. ORACLE_HOME is not set. How to set ORACLE_HOME in unix? Thanks (3 Replies)
Discussion started by: vinoth_kumar
3 Replies

2. Shell Programming and Scripting

SQLplus and Shell script problem

sql_rows=`sqlplus -s / <<EOF set heading off set pagesize 1000 set tab off set linesize 120 wrap off column "Path" format a15 --column "No_Of_files" format a10 select tablespace_name, substr(file_name,1,instr(file_name,'/',1,2)) as "Path" , count(*) as "No_Of_files" from dba_data_files ... (7 Replies)
Discussion started by: desibabu
7 Replies

3. Shell Programming and Scripting

Want to learn/use SQLPLUS in shell script

Hi All, How i will use sqlplus in shell script? Can any one provide sample code which explain following: 1. Connect to oracle DB 2. Exceute select * from tablename 3. Release connection to the DB 4. Append output in file everytime when query executes. Thanks in advance (1 Reply)
Discussion started by: poweroflinux
1 Replies

4. Shell Programming and Scripting

SQLPLUS within shell script

Hi I want to connect to the Oracle database using a username/password and get back the query result(a numeric value) in a variable, which I can then compare using a conditional. Can anybody help me with this. Thanks Gaurav (4 Replies)
Discussion started by: gaurav_1711
4 Replies

5. Shell Programming and Scripting

(Urgent):Creating flat file using sql script and sqlplus from UNIX Shell Script

Hi, I need help urgently for following issue. Pls help me to resolve this issue. I am calling sql script file(file1.sql) from UNIX Shell Script(script1.ksh) using sql plus and trying to create flat file that contains all records returned from SQL query in SQL script(file1.sql) I given... (6 Replies)
Discussion started by: praka
6 Replies

6. Shell Programming and Scripting

Call sqlplus in the shell script

Hi, I am writing a script to test database connection. If the first try fails, it will wait for 1 minutes and then try again. The script is as following: ........ for i in $ORACLE_SID do $ORACLE_HOME/bin/sqlplus $username/$password@$i <<! >/dev/null select * from tab; exit if ; then... (3 Replies)
Discussion started by: beaniebear
3 Replies

7. Shell Programming and Scripting

help me in sending parameters from sqlplus script to unix shell script

Can anybody help me out in sending parameters from sql*plus script to unix shell script without using flat files.. Initially in a shell script i will call sql*plus and after getting some value from some tables, i want that variable value in unix shell script. How can i do this? Please tell me... (2 Replies)
Discussion started by: Hara
2 Replies

8. UNIX for Dummies Questions & Answers

Shell Script And SQLPLUS

i'm having real problems retrieving the returncode of my sqlplus-call. I found a lot of informations on the net, but havn't been able to get it running so far, so now i ask for some help ;) I do start the sqlplus out of my shell script with the parameters stored in the proc_clips.sql, which is... (6 Replies)
Discussion started by: maco_home
6 Replies

9. Shell Programming and Scripting

running shell script from sqlplus

I have a script which connects to different database servers using sqlplus. Is there a way by which I can run a shell command on that host from sqlplus? I know about 'host' command but it runs script on the local machine where the original script is running. Is there a way to run command on the... (9 Replies)
Discussion started by: dkr123
9 Replies

10. Shell Programming and Scripting

passing parameters from a shell script to sqlplus

Hi , I want to pass parameters from a shell script to a sql script and use the parameter in the sql query ..and then I want to spool a particular select query on to my unix box... for 4 different locations by writing only one sql script Right now no file is generated on the unix box...it is a... (2 Replies)
Discussion started by: phani
2 Replies
Login or Register to Ask a Question