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

  • How to run a batch file

    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
    Rizly

    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

  • 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 this

    Will 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.
    Ankit

    i 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 solutions

    yes 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 people

    1) 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".

  • Running a batch file

    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:16

    ok 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...
    -ashish

    thanx 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
    Adam

    Can 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