Running Oracle SqlPlus with Java in Kshells


Login or Register to Reply

 
Thread Tools Search this Thread
# 1  
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  
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  
Thanks very much Tyler really appreciate your help, have a good rest of the week!

bk
Login or Register to Reply

|
Thread Tools Search this Thread
Search this Thread:
Advanced Search

More UNIX and Linux Forum Topics You Might Find Helpful
Fedora: Uninstall Java JDK 1.8 and install Oracle Java 1.7.15
TechGyaann
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...... Fedora
6
Fedora
Connecting to Oracle DB using sqlplus
shrutihardas
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...... Shell Programming and Scripting
26
Shell Programming and Scripting
Connecting to Oracle DB using sqlplus
shrutihardas
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...... UNIX for Dummies Questions & Answers
1
UNIX for Dummies Questions & Answers
Executing SQLPLUS in UNIX Script from JAVA
anooptech
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...... UNIX for Advanced & Expert Users
0
UNIX for Advanced & Expert Users