Running Oracle SqlPlus with Java in Kshells


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Running Oracle SqlPlus with Java in Kshells
# 1  
Old 04-27-2009
Running Oracle SqlPlus with Java in Kshells

Hello,

This may not be the right place to ask for help for this problem but i might be because i'm using Java & SqlPlus in alot of Kshell scripts.

Just to give a high level picture, i'm basically using Java to control each SqlPlus execute command, by reading a flat file that contains the run values from previous steps and then in lets say the current step, check the values from previous steps to see for example if step3 = step1 + step2 ect.

The Java program will compare the previous step rules and then execute the SqlPlus, query to output from the SqlPlus and make a new Java entry.

But what is happening is in the Oracle Session Log it is creating and not deleting 10s upon 10s of seession entries and when i look at some of them they say they are Java executables.

So do you think this is a Java problem and if so is there a way to somehow delete the session immediately after the step runs so that the session thread disappears?

Thanks for any insights and even quesses at this point!

Fyi it's really only a problem now that system has been moved to a very heavily used instance and now everyone is seeing alot more sessions being created other than their own and not sure why the system is grinding to a halt.
# 2  
Old 04-27-2009
Quote:
Originally Posted by bobk544
...
But what is happening is in the Oracle Session Log it is creating and not deleting 10s upon 10s of seession entries and when i look at some of them they say they are Java executables.

So do you think this is a Java problem ...
Yes, it could be. You will have to ensure a couple of things in your java program:

(a) all transactions must be committed or rolled back, either in the sqlplus session or outside in the (invoker) java program. If your transactions are locking an database object, a good practice is to commit/roll back explicitly so that the lock is released.

(b) close all your ResultSet,
Code:
Statement/PreparedStatement/CallableStatement,

and Connection objects explicitly. If you have them in a "try" block, add a "finally" block and close all the objects by invoking their respective close() methods. If you do not do this, the session remains in Oracle and shows up in v$session view of Oracle. Too many of them, and your system comes to a grinding halt. Or you might even encounter the "too many open cursors" error.

Quote:
...
and if so is there a way to somehow delete the session immediately after the step runs so that the session thread disappears?
...
Well, the best thing you can do to make your java apps scalable is to follow (a) and (b) above. If your system has come to a halt and you want to know how to kill those sessions, then you'll have to ask your Oracle DBA to issue a command like the following:

Code:
ALTER SYSTEM KILL SESSION 'sid,serial#';

where "sid" and "serial#" are the columns of v$session view, corresponding to your java executable as the program.

There is another way of killing the relevant Oracle process from the OS itself, but it is not recommended as it could lead to database instance failure.

Quote:
...
Just to give a high level picture, i'm basically using Java to control each SqlPlus execute command, by reading a flat file that contains the run values from previous steps and then in lets say the current step, check the values from previous steps to see for example if step3 = step1 + step2 ect.

The Java program will compare the previous step rules and then execute the SqlPlus, query to output from the SqlPlus and make a new Java entry.
Not knowing your application, it is risky to suggest anything. But you do realize that you could call sqlplus from Korn shell itself and do all that processing, right ? Using java to invoke sqlplus just seems to be a convoluted way of doing things.

Hope that helps,
tyler_durden
# 3  
Old 04-28-2009
Thanks very much Tyler really appreciate your help, have a good rest of the week!

bk
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Fedora

Fedora: Uninstall Java JDK 1.8 and install Oracle Java 1.7.15

Hi All, I have just downloaded fedora 27 iso and set it up in virtual box. I want to learn Hadoop so trying to install Apache hadoop. Before all those I have to install Oracle Java 1.7.15 (as mentioned in the Apache hadoop page). Can you please help me how to Uninstall currently installed... (6 Replies)
Discussion started by: TechGyaann
6 Replies

2. Shell Programming and Scripting

Running sqlplus for 5 DB in a shell

Hi all, on AIX 6.1 I want to run the following but for 5 DB. How should I do that ? Using FOR, WHILE ???? How ? export ORACLE_SID=DB1 sqlplus / as sysdba << EOF whenever sqlerror exit sql.sqlcode; whenever oserror exit FAILURE set define off set head off set feedback off set echo off... (1 Reply)
Discussion started by: big123456
1 Replies

3. Shell Programming and Scripting

Connect to Oracle using sqlplus

I have logged into oracle using SQLPLUS. When I type any kind of query, there is only 1 answer - '2'. What is wrong with it? (1 Reply)
Discussion started by: Subhasis
1 Replies

4. Shell Programming and Scripting

Connecting to Oracle DB using sqlplus

Hi, I am very new to shell scripting and trying to write a simple shell script in which i am trying to achieve the following: 1. Connect to oracle database hosted on a different server 2. fire a query on the oracle db 3. store the output in a variable 4. use this variable for further logic... (26 Replies)
Discussion started by: shrutihardas
26 Replies

5. UNIX for Dummies Questions & Answers

Connecting to Oracle DB using sqlplus

Hi, I am very new to shell scripting and trying to write a simple shell script in which i am trying to achieve the following: 1. Connect to oracle database hosted on a different server 2. fire a query on the oracle db 3. store the output in a variable 4. use this variable for further logic... (1 Reply)
Discussion started by: shrutihardas
1 Replies

6. Shell Programming and Scripting

Formatting Oracle sqlplus output

a job extracts orcle data into unix as flat file. a single record breaks into two record in unix flat file. This is the case only for 6 records out of 60 lack records. (its not single record in two line. but its single record into record. ie., \n come into picture) can you tell me what... (6 Replies)
Discussion started by: Gopal_Engg
6 Replies

7. UNIX and Linux Applications

How to access Oracle table using sqlplus

Hi, I want to use sqlplus from server1 sqlplus usr1/pass1@dns1 and I want to connect to an Oracle database from a server2. Unfortunately the database was created on the server1 and on server2. So when I use the command just like that...it connects to the database from the server2. ... (2 Replies)
Discussion started by: AngelMady
2 Replies

8. UNIX for Advanced & Expert Users

Executing SQLPLUS in UNIX Script from JAVA

Hi ALL, I would like to execute one SQL query(ORACLE) in UNIX shell script. For this I used sqlplus in script and tested locally. It worked fine. But my requiremnt is to execute the script from Java. In this case the UNIX part is working but sqlplus is not returning anything The JAVA code used... (0 Replies)
Discussion started by: anooptech
0 Replies

9. Shell Programming and Scripting

Running SQLPLUS from Shellscripting ...

Hi guys, I am facing issues while triggering sqlplus with "/" option I can connect to database with USER ID and password. but, if i just specify "/" option since it is "externally identiifed user" it doesn't work Any suggestions? mail me @ Removed. Regards, Giri (2 Replies)
Discussion started by: chittari
2 Replies
Login or Register to Ask a Question