PL/SQL w/ Java to run OS batch file crashes Oracle
I followed instructions from "Ask Tom" on using PL/SQL with Java to execute an OS batch file. For testing purposes, my batch file does nothing more than display the date and time from the OS.
However, when I run the PL/SQL that executes this simple batch file repeatedly - anywhere from two to four times, the Oracle instance crashes abruptly. Nothing is written to the alert log. No trace files are created.
Here is a sample session:
SQL*Plus: Release 9.0.1.3.0 - Production on Wed Mar 24 10:04:26 2004
(c) Copyright 2001 Oracle Corporation. All rights reserved.
Connected to:
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production
SQL> set serveroutput on size 1000000
SQL> exec dbms_java.set_output(1000000) ;
PL/SQL procedure successfully completed.
SQL> begin
2 rc('c:\dba_tools\jobs\test.cmd') ;
3 end ;
4 /
C:\Ora9ir2\DATABASE>date /t
Wed 03/24/2004
C:\Ora9ir2\DATABASE>time /t
10:05 AM
PL/SQL procedure successfully completed.
SQL> begin
2 rc('c:\dba_tools\jobs\test.cmd') ;
3 end ;
4 /
C:\Ora9ir2\DATABASE>date /t
Wed 03/24/2004
C:\Ora9ir2\DATABASE>time /t
10:06 AM
PL/SQL procedure successfully completed.
SQL>
Shortly after the second "run", Oracle crashed. All I received was the following error message:
Unhandled exception in oracle.exe (ORAJOX9.DLL): 0xC0000005: Access Violation
Here is the Java procedure at the heart of my PL/SQL:
create or replace and compile
java source named "Util"
as
import java.io.*;
import java.lang.*;
public class Util extends Object
public static int RunThis(String args)
Runtime rt = Runtime.getRuntime();
int rc = -1;
try
Process p = rt.exec(args);
int bufSize = 4096;
BufferedInputStream bis =
new BufferedInputStream(p.getInputStream(), bufSize);
int len;
byte buffer[] = new byte[bufSize];
// Echo back what the program spit out
while ((len = bis.read(buffer, 0, bufSize)) != -1)
System.out.write(buffer, 0, len);
rc = p.waitFor();
catch (Exception e)
e.printStackTrace();
rc = -1;
finally
return rc;
I am running Oracle 9i rel. 2 installed on my PC under Windows XP Professional (Service Pack 2). My knowledge of Java is next to nothing.
Can anyone give me an idea(s) as to what might be causing Oracle to crash?
Thanks.
Using 9.2.0.4 I made the following adjustments and it seems to run as often as I care to do it:
Java changes:
create or replace and compile
java source named "Util"
as
import java.io.*;
import java.lang.*;
public class Util extends Object
public static void RunThis(java.lang.String args)
Runtime rt = Runtime.getRuntime();
int rc = -1;
try
Process p = rt.exec(args);
int bufSize = 4096;
BufferedInputStream bis =
new BufferedInputStream(p.getInputStream(), bufSize)
int len;
byte buffer[] = new byte[bufSize];
// Echo back what the program spit out
while ((len = bis.read(buffer, 0, bufSize)) != -1)
System.out.write(buffer, 0, len);
rc = p.waitFor();
catch (Exception e)
e.printStackTrace();
finally
PL/SQL Wrapper :
create or replace procedure rc (cmd VARCHAR2) as
language java name 'Util.RunThis(java.lang.String)';
Execution:
begin
rc('c:\dba_tools\jobs\test.cmd');
end ;
D:\oracle\ora92\DATABASE>date /t
Fri 03/26/2004
D:\oracle\ora92\DATABASE>time /t
10:48 AM
PL/SQL procedure successfully completed.
SQL> /
D:\oracle\ora92\DATABASE>date /t
Fri 03/26/2004
D:\oracle\ora92\DATABASE>time /t
10:48 AM
PL/SQL procedure successfully completed.
SQL> /
D:\oracle\ora92\DATABASE>date /t
Fri 03/26/2004
D:\oracle\ora92\DATABASE>time /t
10:49 AM
PL/SQL procedure successfully completed.
SQL> /
D:\oracle\ora92\DATABASE>date /t
Fri 03/26/2004
D:\oracle\ora92\DATABASE>time /t
10:50 AM
PL/SQL procedure successfully completed.
SQL>
The only thing I really changed was the reurn value from the java procedure. If it has a return value then it should be declared as a function, not a procedure. Since you probably (apparently) weren't using the return value I dropped it and made it a procedure.
Similar Messages
-
Hi,
How to run a batch file from Oracle. Is it possible directly from PLSQl, or should I write the java code.
Oracle Version: 10g 2.0.1.0.
Thanks in advance
RizlyHi,
My aim is to run a MS-DOS Batch file, that I created to run a Java Prgram.
I need to call the Batch File from the Oracle Procedure, Also I may need to change the content of the Batch File (Argument to the Java JAR File ).
I can keep the JAR FIle either in the Oracle Server or in the Application Server.
The Java program is to convert XML Format FIle to PDF and MS Word format.
Oracle Version : 10g 2.0.1.0.
Thanks in advance
Rizly -
Running a java program via a batch file
I am unable to run a java program from a batch file that I created.
spiderpackage.EntryPoint is a class file which I am trying to run with a -v option to output something.What should I do to get the output?
echo ^<html^>^<body^>
echo hello^<br^>
call java spiderpackage.EntryPoint -v
echo ^</body^>^</html^>This has nothing to do with java programming. Have a look at the windows help for the call command.
The echo <html> stuff doesn't make sense. What's it for?
The command in you batch file should be:
java -cp . spiderpackage.EntryPoint -v
assuming that java is in the system path, and the EntryPoint.class is in a directory called spiderpackage which is a subdirectory of your current working directory -
To run a java program via a batch file,when called from a web server
REM This batch file runs the Spider with the [-v] option.
REM Lines 51 through 54 are simple DOS commands..they call the Spider
REM The location of the Spider package is the important piece of information here...
REM a batch file has access to the whole computer where the server resides.
setlocal
set JDK=C:\j2sdk1.4.1_01
set PATH=%JDK%\bin;.;%PATH%
CLASSPATH=%JDK%\jre\lib\*.jar;.;%JDK%\jre\lib\ext\*.jar;.;%CLASSPATH%
java spiderpackage.EntryPoint -v
endlocal
I am trying to run this batch file from my web server.I can see nothing on my browser.I can run the same program from my machine but unable to run from web server.what should I do?I am making my question more clear...
I have a Windows batch (*.bat) file that echoes some html, then calls a java program the output of which is html as well, then echoes the final html.
To make sure that the java program gets properly executed, I set the necessary environment variables (e.g., JDK, PATH, CLASSPATH, etc.). The script looks something like this:
setlocal
set JDK=path_to_JDK
set PATH=path_to_java
set CLASSPATH=path_to_java_classes
echo ^<html^>^<body^>
call java foo
echo ^</body^>^</html^>
endlocal
The idea, of course, is to call this script through a browser, on a web server.
Curiously, both echo lines return to the browser just fine, but any output from
the java program (which just writes html to STDOUT) does not make it back.
Can someone explain to me why this is happening? How do I set things up so that the output (STDOUT and STDERROR) from the java program make it back to the browser? -
Running a batch file in a java servlets programme
this is what i have
Process p = Runtime.getRuntime().exec("C:\\sync.bat");
Now i need a way for the program to wait until this is finished running. I dont want to print anything until this is done. Is there a way to do thisWill this even run sync.bat or do i have to do more.Here is my entire code
import java.io.*;
import java.io.File;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.swing.*;
public class index_test extends HttpServlet
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
res.setContentType("text/html");
PrintWriter out = res.getWriter();
out.println("<HTML>");
out.println("<body>");
try
Process p = Runtime.getRuntime().exec("C:\\sync.bat");
String dir = "C:\\Perforce";
File what = new File(dir);
String [] listy = new String [100];
String [] products = new String[5];
String lists;
listy = what.list();
out.println("<form action =getBuilds Method = get>");
out.println("Please select which Product you wish to search in: ");
out.println("<br>");
int j = 0;
if(listy[j] != null)
products[j] = listy[j];
j++;
int i =0;
for(i = 0; i<listy.length && listy[i] !=null;i++)
out.println("<input type ='radio' name = 'product' value='"+dir+"\\"+products[i]+"\\build'>");
out.println(products);
out.println("<br>");
out.println("<input type ='submit' value ='Submit'>");
out.println("<br>");
catch(IOException e){}
out.println("<img src='C:\\tomcat4\\webapps\\Tracker\\dancing2.gif'>");
out.println("</form></body></html>");
What i need is to run sync.bat, wait till its finished then print out the folders in the Perforce directory. I can print out the contents of Perforce grand i just dont know how to run the batch file and get the progeam to wwait until its finished -
Running a batch file in Java. Urgent!!
I want to run a batch file present at a particular location in Java.Although I am running two codes suggested by many people, i am still not able to run the batch file. My codes run as below :-
CODE 1
Process P;
Runtime rt = Runtime.getRuntime();
P = rt.exec("C:\\test.bat");
CODE 2
Process P;
Runtime rt = Runtime.getRuntime();
P = rt.exec("C:\\WINNT\\System32\\cmd.exe C:\\test.bat");
I have tried both these codes but without success. But I have observed that in the Task Manager, whenever i run the above codes in a servlet, a "CMD.EXE" is being created in the "Processes" Bar each time but the batch file neither opens up nor it runs.
Please suggest me some method to run this batch file in Java.
Or if u can suggest the reason behind the above observation and any corrections i can make to run the batch file. Thanks in advance.
Ankiti want to get more than one command prompt while running the program
am giving the problem
import java.io.*;
class CmdDemo
CmdDemo(String ls) {
try
Process p;
Runtime rt=Runtime.getRuntime();
p=rt.exec(ls);
catch(IOException ioe)
System.out.println(ioe);
void showcmd(){
new CmdDemo("cmd");
public static void main(String args[])
new CmdDemo("cmd");
new CmdDemo("C:/WINDOWS/System32/cmd.exe");
new CmdDemo("cmd");
new CmdDemo("regedit");
new CmdDemo("regedit");
new CmdDemo("notepad");
new CmdDemo("notepad");
//CmdDemo cd=new CmdDemo("cmd");
//cd.showcmd();
here am getting two notepads ,two registry editors
but only one command window
i would be very greateful if u could help me
plz reply to my id [email protected] too -
How to run a batch file using java
Hi guys,
I want to run a batch file by running a java program.
i have tried for this code, but it is not working , plz guide me code.
Runtime r = Runtime.getRuntime();
Process p = null;
try
String[] cmd ={"cmd","/c","C:\\jarkarta-tomcat-3.2.3\\webapps\\DDS\\Resumes\\leap.bat"};
p = r.exec(cmd);
catch(Exception e)
System.out.println("Exception in Runtime batch processing."+e);
}You will need this:
http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html -
Can we run the batch file using simple java application
Hello sir,
we want to run the batch file using simple java application. i tried with some example, we run the exe files but not batch file.
Runtime r = Runtime.getRuntime();
r.exec("D:\\jboss\\bin\\run.bat");
My application is server will run when we run the java appliation.
any suggestion? plz give me the solutionsyes you can run html file
WEB.SHOW_DOCUMENT is a built-in that is used in Forms to call URL from a Web Form. It works much like the similar way that a link on an HTML page works and it takes two arguments, one is URL and second one is TARGET, in your case use following.
WEB.SHOW_DOCUMENT('http://channas.iil.informatics.lk:8890/forms/frmservlet?config=abc.html', '_blank');
Hope this will work for you
Abbas -
Running a batch file - VERY URGENT .. help
Hi people
I am attempting to run a batch file from with a JSP page.
the code i am using is:
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec("cmd.exe /c d:\\uploadfiles.bat");
This jsp file is located on the c: of a webserver.
the uploadfiles.bat is located on the d: of the webserver and the code is:
copy d:\videos\008214?.rm d:\blah
copy d:\images\008214.* d:\blah
copy d:\xml\008214.* d:\blah
cd \blah
pkzip -es -m 008214.zip *.*
copy 008214.zip d:\upload\008214.zip
del 008214.zip
If I run this batch file from a command line, it works fine, though when I try and call it through my JSP page, it doesnt do anything .. a command window just pops up for a while, and then closes.
How can I fix this ... I need this quite quickly
Thanks people1) It is O.K. that you see nothing in that console. Its output is captured by Java and is not displayed on the screen.
In general, that console should not be visible, but actually it behaves differently according to JDK and OS versions (treat that as a feature).
2). Look at this article:
http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html
It it does not answer your problem, try to search the forums:
http://search.java.sun.com/search/java/index.jsp?qp=%2Bforum%3A31&nh=10&qt=%2B%22exec%22+-%22Replies%3A+0%22&col=javaforums
Questions about Runtime.exec() has been asked hundreds of times.
3) runtime.exec() can execute BAT files. It is not necessary to specify that "cmd /C". -
String path = "";
path = "cmd /c start FCall.bat";
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec(path);
//proc.destroy() ; The code works fine, however, I need some help in exiting the command window. After executing the batch file the window should close. I have tried "destroy" didnt work it kills the entire process. Is there a function I am missing to accomplish this ?warnerja,
I am compiling my program through command prompt. One of my method that contains the above mentioned code, runs the batch file. In doing so, it opens cmd.exe window. I want that window to be closed once the batch file ends running.
The path associated with the cmd.exe is the same as the path where I am compiling my java code.
Any suggestion ? -
Running a Batch File on another Server with an Oracle Job
hi, i have the following code
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'test_job_bat',
job_type => 'EXECUTABLE',
job_action => '\\10.1.1.63\test\test.bat',
enabled => true,
comments => 'test bat'
END;
So i want to run a batch file, which lies on another pc in the network
The code runs, without a failure.
The bat file just contains "MD D:\bla" .
When i run the code, no bla directory is created, so it seems that the batch file never ran.
i approved read/write on the test folder. (Windows 7 machine)
any ideas?
Edited by: user1067632 on 31.05.2010 05:03
in dba_scheduler_job_run_details the job is listed as FAILED:
ORA-27370: Job-Unterprozess konnte einen Job vom Typ EXECUTABLE nicht starten
ORA-27300: BS-abhängiger Vorgang accessing execution agent mit Status: 2 nicht erfolgreich
ORA-27301: BS-Fehlermeldung: Das System kann die angegebene Datei nicht finden.
ORA-27302: Fehler aufgetreten bei: sjsec 6a
ORA-27303: Zusätzliche Informationen: Das System kann die angegebene Datei nicht finden.
Edited by: user1067632 on 31.05.2010 05:16ok sorry, i made my testjob run, the OracleJobScheduler was not started.
But now i ran into an another Problem.
Now i want to java bla.jar in my batch, and got that new error
ORA-27369: Job vom Typ EXECUTABLE nicht erfolgreich mit Exit-Code: Unzulässige Funktion.
STANDARD_ERROR="Unable to access jarfile start.jar"
anything to consider when accessing .jar files in my batch?
edit:
there was a classpath problem.
Edited by: ginkgo on 01.06.2010 04:29 -
Running a batch file on a web server
hi,
i am facing a problem regarding running a batch file(with a java command in that file) on a web server.
i am having a batch file which is running a chatapplication (this file is having a single line -- "java ChatServer 8080")
i want to execute this command ( file ) on my web server
can u help me plz ( i think u can)
thanx 4 reading my problem...
-ashishthanx 4 replying
but as i am a developer and i am developing the aplication for a client, so should i speak to the client for this or can i do this without interrupting them?
-ashish -
Running a batch file : URGENT
I want to run a batch file on click of a button. Please inform if it is possible and if yes then how.
yes it's possible.
look at Runtime.exec() in java documentation. If you can't figure it out, try posting in New To Java Technology Forum -
How to run a batch file as windows Nt service
Hi friends
I want to know how to run a batch file as windows NT service.
I got some information in the following link
http://support.microsoft.com/kb/q243486/
I tried it but i want to know what we need to include in Autoexnt.bat
And one thing i need Instexnt.exe file. I cannot find tht file.
Please search tht file and send me tht file or else send the link in which this file is present
Please give me reply fast.its very urgent.
Thanks in advance.Hi,
My aim is to run a MS-DOS Batch file, that I created to run a Java Prgram.
I need to call the Batch File from the Oracle Procedure, Also I may need to change the content of the Batch File (Argument to the Java JAR File ).
I can keep the JAR FIle either in the Oracle Server or in the Application Server.
The Java program is to convert XML Format FIle to PDF and MS Word format.
Oracle Version : 10g 2.0.1.0.
Thanks in advance
Rizly -
How to run a batch file from within an Oracle 9i Form?
Hi, I would like to execute a batch file from within an oracle form - I'm assuming there's some PLSQL command I can use? I am not allowed to use any third party libraries, and I'm hoping I can get away without having to progam any C or Java to do it. I don't want to run my java program from my form, but my lecturer is insisting on it.
Can anyone help?
Thanx
AdamCan u give me an example
I need to run a batch files that does a series of step doing dir ( in 3 different folders)
after each one it shows on screen with a pause & user press enter
can this work out ?
Maybe you are looking for
-
I got up this morning to be greeted with an invitation to update iTunes on my Windows 7 computers. Unfortunately I did both at once. They have both refused to take the update, after deleting the old version, despite hours of work deleting the old f
-
How to add the new character in FDI1FDI2 Define/Change Reports?
Hi, There are some fixed charcters defined in the T. Codes FDI1FDI2 Define/Change Reports, can we add the characters here based on which we can get teh desired output. If yes, hen please tell me how to add the characters? Thanks in advance... Regards
-
[solved?] Menus not drawing after Gnome update
Running 64-bit Arch. Ever since updating to the latest Gnome, I've been having intermittent problems with menus in applications. I notice it most often in Abiword, Xchat, Gedit, and Guayadeque, but I think it effects almost all applications. When I d
-
Cannot initialize interface transport
I installed nifbus 3.0 and setup the interface card to connect through controlnet to an allenbradley linking device. I can see everything in RSLinx on the segment but when I try and rub the configurator softwater if returns a fatal error " NIFbus can
-
Missing Menu in Elements Seven.
Hi Folks, Somehow I have lost my File, Edit, Find, View menu from the top bar in my Organizer. All I have is a wee black arrow which I have to click to access the menu. Anyone help me gety it back to where its supposed to be please?