Executing *.bat file from PL/SQL
Is there anyway for Executing *.bat file from PL/SQL ?
Thanks
Try here:
asktom.oracle.com/pls/ask/f?p=4950:8:15427268967155079552::NO::F4950_P8_DISPLAYID,F4950_P8_CRITERIA:952229840241
Similar Messages
-
Execute .Bat file from pl/sql code
Hi,
Can you please let me know that how can I execute the .Bat file from pl/sql procedure? Does anybody have a sample code??
Thanks.Hi
This may help you
http://www.dba-oracle.com/t_running_windows_bat_file_dbms_scheduler.htm
br,Jari -
Calling .bat file from pl/sql
I'm running Oracle 11g R2 on win7 system, and I would like to execute .bat file from a pl/sql block.
I created a .bat file
I have granted privs to an account:
BEGIN
SYS.DBMS_JAVA.GRANT_PERMISSION(grantee => 'COMMON', permission_type => 'SYS:java.io.FilePermission', permission_name => '<<ALL FILES>>', permission_action => 'execute',key => KEYNUM);
END;
DECLARE
KEYNUM NUMBER;
BEGIN
SYS.DBMS_JAVA.GRANT_PERMISSION(grantee => 'COMMON',permission_type => 'SYS:java.lang.RuntimePermission',permission_name => 'writeFileDescriptor',permission_action => '*',key => KEYNUM);
END;
DECLARE
KEYNUM NUMBER;
BEGIN
SYS.DBMS_JAVA.GRANT_PERMISSION(grantee => 'COMMON',permission_type => 'SYS:java.lang.RuntimePermission',permission_name => 'readFileDescriptor',permission_action => '*' ,key => KEYNUM);
END;
DECLARE
KEYNUM NUMBER;
BEGIN
SYS.DBMS_JAVA.GRANT_PERMISSION(grantee => 'COMMON',permission_type => 'SYS:java.io.FilePermission',permission_name => 'C:\dokumentacija\rman_backup\*',permission_action => 'read,write',key => KEYNUM);
END;
DECLARE
KEYNUM NUMBER;
BEGIN
SYS.DBMS_JAVA.GRANT_PERMISSION(grantee => 'COMMON',permission_type => 'SYS:java.io.FilePermission',permission_name => 'C:\dokumentacija\rman_backup\*', permission_action => 'read',key => KEYNUM);
END;
DECLARE
KEYNUM NUMBER;
BEGIN
SYS.DBMS_JAVA.GRANT_PERMISSION(grantee => 'COMMON', permission_type => 'SYS:java.io.FilePermission', permission_name => 'C:\windows\system32\*',permission_action => 'read',key => KEYNUM);
END;
DECLARE
KEYNUM NUMBER;
BEGIN
SYS.DBMS_JAVA.GRANT_PERMISSION(grantee=> 'COMMON',permission_type => 'SYS:java.io.FilePermission',permission_name => 'C:\windows\system32\*',permission_action => 'execute',key => KEYNUM);
END;
/this is Java:
CREATE OR REPLACE PROCEDURE runoscommand(cmd IN VARCHAR2)
AS LANGUAGE JAVA
NAME 'Command.run(java.lang.String)';and this is how I call it:
declare
xx pls_integer;
v_errm varchar2(400);
begin
xx:=0;
xx:=archiver.fullBackup;
dbms_output.put_line(xx);
exception
when others then
v_errm:=substr(sqlerrm,1,400);
dbms_output.put_line(v_errm);
end;this is Java code:
DROP JAVA SOURCE COMMON.COMMAND;
CREATE OR REPLACE AND RESOLVE JAVA SOURCE NAMED COMMON.COMMAND as import java.io.*;
import java.util.*;
public class Command{
public static void run(String cmdText)
throws IOException, InterruptedException
int rtn;
Runtime rt = Runtime.getRuntime();
Process prcs = rt.exec(cmdText);
rtn = prcs.waitFor();
}I run this as a part of a package...
function fullBackup return pls_integer as
v_errm varchar2(200);
begin
runoscommand('C:\dokumentacija\rman_backup\bckp_level_0.bat');
return 0;
exception
when others then
v_errm:=substr(sqlerrm, 1,200);
dbms_output.put_line(v_errm);
return -1;
end fullBackup;but..
at the end, nothing happens..
what I've been missing?846417 wrote:
I changed my code in last xx minutes...OK, so you've removed all your exception handlers?
so, now I'm calling to an exe file wich should appear at a desktop or processes list... but no..
I gave all windows rights on that file, and also through dbms_java.grant_permission..
but, nothing happened... not exception raised, no app. started...And no output from any DBMS_OUTPUT statement? Have you tried stepping through the code in your debugger?
Justin -
How to execute .bat file within pl/sql block
Hi,
I want to execute a batch file (.bat) file withing a pl/sql procedure. Please guide me for it.
RegardsThere are several possible ways to make a call-out from a PL/SQL program to the OS on the database server (but not to the client computer).
You could use java or an external procedure (you'll need to code it in C) for example.
You might be able to make use of UTL_HTTP to talk HTTP to another server or UTL_TCP to talk TCP to another server.
What is it you are trying to do? -
Problem executing .bat file from within Java class
I'm stumped: I have no problem executing a .bat file that sets classpaths and executes a Java jar, but when I try to execute other executables first and then the .jar, my application hangs and since the DOS box doesn't come up over my GUI, I can't see what's going on.
This works:
public void execute() throws Exception {
String s = "c:\\cs47auxs\\omnijar\\omni.bat";
Process p = Runtime.getRuntime().exec("\"" + s + "\"");
p.waitFor();
JOptionPane.showMessageDialog(frame,
"The Database Has Been Successfully Reloaded.",
"Information Message",
JOptionPane.INFORMATION_MESSAGE);
Here's the .bat 'omni.bat'
set JAVA_HOME=c:\j2sdk1.4.2_04\bin
%JAVA_HOME%\java -jar C:\CS47AUXS\OMNILOADJAR\OmniLoad.jar
This doesn't work:
public void execute() throws Exception {
String s = "c:\\cs47auxs\\omnijar\\jobomni.bat";
Process p = Runtime.getRuntime().exec("\"" + s + "\"");
p.waitFor();
JOptionPane.showMessageDialog(frame,
"The Database Has Been Successfully Reloaded.",
"Information Message",
JOptionPane.INFORMATION_MESSAGE);
Here's the .bat file 'jobomni.bat'
SET NETX_HOME=C:\CS47AUXS
SET COBOL_HOME=C:\CS47AUXS\OFFLINE
CD %NETX_HOME%
CALL SET-NETX.CMD
CD %COBOL_HOME%
SSBPPC10 JOBOMNI X
SET JH=C:\J2SDK1.4.2_04\BIN
SET OMNI_HOME=C:\CS47AUXS\OMNILOADJAR
CD %OMNI_HOME%
%JH%\java -jar omniload.jar
Can anyone shed some light here? Even when I execute the application from the command line the new DOS box doesn't become visible nor can I see any errors. If I could just get that visibility, I could probably figure out what is going wrong.Same problem with me as well.... Badly looking for a solution...
I predict the following:
- If your batch file has pretty less number of dos/shell commands then it gets executed fine with exec() and proc.waitFor();
- If you increase the number of dos/shell commands in the bat file then try executing it then it definately hangs at proc.waitFor();
Even "cmd.exe /C C:\\test.bat" hangs... if the commands are more...
Is this some sort of bug? or am i doing anything wrong? I tried searching for solution on the net and search forums... but couldnt find a solution for the same.. not sure where i missed, what i missed...
Incase some one finds a solution.. do post it here...
Message was edited by:
amadas -
How to execute exe file from pl/sql
How to execute an exe file or an operating system command from pl/sql in oracle 9i.
If it is part of a pl/sql block, use the java suggestion. If you are not in a blck, you can use the "HOST" command. see
http://download-west.oracle.com/docs/cd/A87860_01/doc/server.817/a82950/ch2.htm#1001697 -
How to execute *.BAT file from the Java Application
Hello to all.
I wants to run *.BAT file form my applicaion.
Can u give the code of that two-four line,please
Wating four your replay.
Yours Friend
Bhavin Shah.....pr = rt.exec("cmd.exe /c start " + yourProgramName)The exec() method executes the command you specify in the argument and returns a process. In this example, it's telling Windows to run "yourProgramName".
HTH -
Executing bat files from another location
Hi
In my application i need to execute a bat file which is in another location.
i have my class file in c:\ds and i want to execute the bat file in c:\ds\src\jython.
This is the code i have used
private void executeBootstrapBat(){
String cmd=null;
cmd="cmd /c bootstrap C:\\DS\\HelperApplication\\src\\conf\\wsadmin-local.properties" +
" " + getXmlFileName() + " " + getVOB();
Runtime rt = Runtime.getRuntime();
try{
Process pt = rt.exec(cmd);
}catch(IOException e){
e.printStackTrace();
}You can execute the bat file in any location. Butyou
have to set the classpath in that location whereyou
are executing the bat file.Please stop giving advice on this site. You do not
have any clue what you are talking about at all.Actually I just went looked at a few more of your posts. All complete rubbish. Again please stop posting replies on this site until you get some clue about anything. It is very wrong of you to post replies like you know what you are doing and misleading those who don't know any better. -
Creating windows .bat file from within an oracle .prc or .sql file
I am currently converting a series of batch jobs on a windows server to use an Oracle db rather than a MS sql server db. In ms sql, I could call \mssql80\binn\isql and it allowed me to pass in .prc files and have a .bat file returned. the .bat file is then executed in the calling bat to set variable value returned in the sql call...
I am thinking I can spool a bat file, however, i do not know how to populate this file with the literals and query values needed to create the bat file which sets values used for further processing in the original calling bat file...
Does that make sense? any help is greatly appreciated.Hi,
There can be various ways to do this.
First and simple way is simply spooling out the batch file. Suppose you have a .sql file with all the queries, run the .sql from DOS prompt like this,
c:\> sqlplus -s username/password@tnsname @mysqlfile.sql
the contents of mysqlfile.sql can be,
rem ---------------------
set echo off feedback off head off
spool c:\batch_files\mybatch.bat
select 'start \w ' || win_app_name from mytable ;
spool off
rem ----------------------
exit
So, you can get the batch file created with desired name in desired directory. The '-s' mentioned in the sqlplus command is important.
There is another difficult/tedious way, but that can give you exact output. With UTL_FILE package you can write an operating system file from pl/sql code, stored procedure/package. Its look more like C-language code, but is usefull. So, write a sql or stored procedure and create the batch file. For that matter, you can write any type of file, just you can write whatever you want to a file.
Cheers -
Executing a .bat file from java code
Im writing a utility and i need to be able to create and execute a .bat file from my program. I can create the .bat file fine but when i try to execute it nothing happens. I tried to use the following line of code to try to execute the .bat file (called make.bat) :
try
String parameterString = "\"C:\\WINNT\\System32\\cmd.exe\" C:\\ITS_Test\\make.bat";
Runtime.getRuntime().exec(parameterString);
catch (Exception e)
System.out.println(e);
The Runtime.getRuntime()exec() method worked fine when trying to execute an excel file but for some reason it dosen't want to work for the DOS prompt. Any ideas?Thanks everyone for all the replies.
I have tried all the above with no luck. Im using netbeans, does anyone think that it could be a problem with the IDE.
I tired the following code :
String parameterString = "cmd.exe /C \"C:\\ITS_Test\\make.bat\"";
Process pr = Runtime.getRuntime().exec(parameterString);
pr.waitFor();
This code does not throw any exceptions but just hangs. I also tried:
String [] parameterString = {"cmd", "/c", "C:\\ITS_Test\\make.bat"};
Process pr = Runtime.getRuntime().exec(parameterString);
pr.waitFor();
and:
String parameterString = "\"C:\\WINNT\\System32\\cmd.exe\" \"C:\\ITS_Test\\make.bat\"";
Process pr = Runtime.getRuntime().exec(parameterString);
pr.waitFor();
with the same result. Does anyone know why it just hangs and nothing happens (no exceptions thrown)? -
How can I execute a .bat file from inside a java application
I have a .bat file which contains an executable file(.exe) and some input and output file names. What commands can I use to execute this bat file from my java application.
After raeding tkleisas' reply; i am trying to invoke another application (which can be invoked from the command line) by using a batch file and trying Runtime.exec for executing a batch file.
My current code is:
Runtime runtime = Runtime.getRuntime();
Process trialProcess;
trialProcess = runtime.exec("cmd.exe /C start C:\\guns.bat /B");
And my guns.bat looks like:
cd C:\CALPUFF
echo trial
start calpuff.exe CALPUFF.INP
This is not working for me and i get the following in the error stream of the trialProcess:
Error :
The system cannot execute the specified program.
Process finished with exit code 1
Has anyone come across something like this and know what's wrong with this one??
thnx -
Running a Bat file from a stored procedure
This is part II of Re: Need to run bat file from application express
I thought I would open a new thread
I thought I had this fiqured out but it still doesn't work
1) I granted CREATE EXTERNAL JOB to my user
2) startup the OracleJobScheduler Service
3)
create or replace
PROCEDURE RUN_OS_COMMAND(p_cmd IN varchar2)
is
v_job_exists pls_integer:=0;
begin
select count(1)
into v_job_exists
from all_scheduler_jobs
where job_name='JAVA_EXE';
if v_job_exists>0 then
dbms_scheduler.drop_job(job_name =>'JAVA_EXE');
end if;
dbms_scheduler.create_job
( job_name =>'JAVA_EXE'
, job_action =>p_cmd
, job_type =>'executable'
, enabled =>false
, auto_drop =>false
, start_date =>systimestamp
dbms_scheduler.run_job(job_name =>'JAVA_EXE');
end;test.bat is del test.csv
I run this
begin
RUN_OS_COMMAND('C:\temp\test.bat');
end;
/ anonymous block completed
It runs with no errors but does not run the bat file... what am i missing, thanks DougLLUSERSPROFILE=C:\Documents and Settings\All Users
APPDATA=C:\Documents and Settings\wblincoe\Application Data
CLASSPATH=.;[ORACLE_HOME]\jdbc\lib\ojdbc6.jar;c:\myjar\xdocore.jar;c:\myjar\i18nAPI_v3.jar;c:\myjar\xdoparser.jar;c:\myjar\xmlparserv2.jar
CommonProgramFiles=C:\Program Files\Common Files
COMPUTERNAME=WBLINCOELT
ComSpec=C:\WINDOWS\system32\cmd.exe
DEFLOGDIR=C:\Documents and Settings\All Users\Application Data\McAfee\DesktopProtection
FP_NO_HOST_CHECK=NO
HOMEDRIVE=C:
HOMEPATH=\Documents and Settings\wblincoe
LDMS_LOCAL_DIR=C:\Program Files\LANDesk\LDClient\Data
LOGONSERVER=\\03N-DAYT-DC01
NUMBER_OF_PROCESSORS=2
OS=Windows_NT
Path=C:\OraHome_1\jre\1.4.2\bin\client;C:\OraHome_1\jre\1.4.2\bin;C:\app\wblincoe\product\11.1.0\db_1\bin
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
PERL5LIB=C:\oracle\product\10.2.0\http_1\sysman\admin\scripts;C:\oracle\product\10.2.0\http_1\perl\site\5.6.1\lib;C:\oracle\product\10.2.0\http_1\perl\site\5.6.1;C:\oracle\product\10.2.0\http_1\perl\5.6.1\lib\MSWin32-x86;C:\oracle\product\10.2.0\http_1\perl\lib\5.6.1;C:\oracle\product\10.2.0\http_1\perl\lib\5.6.1\MSWin32-x86;
PHPRC=C:\Program Files\PHP\
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 Family 6 Model 15 Stepping 2, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=0f02
ProgramFiles=C:\Program Files
PROMPT=$P$G
SESSIONNAME=Console
SystemDrive=C:
SystemRoot=C:\WINDOWS
TEMP=C:\DOCUME~1\wblincoe\LOCALS~1\Temp
TMP=C:\DOCUME~1\wblincoe\LOCALS~1\Temp
USERDNSDOMAIN=CACI.COM
USERDOMAIN=CACI
USERNAME=wblincoe
USERPROFILE=C:\Documents and Settings\wblincoe
VSEDEFLOGDIR=C:\Documents and Settings\All Users\Application Data\McAfee\DesktopProtection
windir=C:\WINDOWS -
Executing batch file from Java stored procedure hang
Dears,
I'm using the following code to execute batch file from Java Stored procedure, which is working fine from Java IDE JDeveloper 10.1.3.4.
public static String runFile(String drive)
String result = "";
String content = "echo off\n" + "vol " + drive + ": | find /i \"Serial Number is\"";
try {
File directory = new File(drive + ":");
File file = File.createTempFile("bb1", ".bat", directory);
file.deleteOnExit();
FileWriter fw = new java.io.FileWriter(file);
fw.write(content);
fw.close();
// The next line is the command causing the problem
Process p = Runtime.getRuntime().exec("cmd.exe /c " + file.getPath());
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while ((line = input.readLine()) != null)
result += line;
input.close();
file.delete();
result = result.substring( result.lastIndexOf( ' ' )).trim();
} catch (Exception e) {
e.printStackTrace();
result = e.getClass().getName() + " : " + e.getMessage();
return result;
The above code is used in getting the volume of a drive on windows, something like "80EC-C230"
I gave the SYSTEM schema the required privilege to execute the code.
EXEC DBMS_JAVA.grant_permission('SYSTEM', 'java.io.FilePermission', '<<ALL FILES>>', 'read ,write, execute, delete');
EXEC DBMS_JAVA.grant_permission('SYSTEM', 'SYS:java.lang.RuntimePermission', 'writeFileDescriptor', '');
EXEC DBMS_JAVA.grant_permission('SYSTEM', 'SYS:java.lang.RuntimePermission', 'readFileDescriptor', '');
GRANT JAVAUSERPRIV TO SYSTEM;
I have used the following to load the class in Oracle 9ir2 DB:
loadjava -u [system/******@orcl|mailto:system/******@orcl] -v -resolve C:\Server\src\net\dev\Util.java
CREATE FUNCTION A1(drive IN VARCHAR2) RETURN VARCHAR2 AS LANGUAGE JAVA NAME 'net.dev.Util.a1(java.lang.String) return java.lang.String';
variable serial1 varchar2(1000);
call A1( 'C' ) into :serial1;
The problem that it hangs when I execute the call to the function (I have indicated the line causing the problem in a comment in the code).
I have seen similar problems on other forums, but no solution posted
[http://oracle.ittoolbox.com/groups/technical-functional/oracle-jdeveloper-l/run-an-exe-file-using-oracle-database-trigger-1567662]
I have posted this in JDeveloper forum ([t-853821]) but suggested to post for forum in DB.
Can anyne help?Dear Peter,
You are totally right, I got this as mistake copy paste. I'm just having a Java utility for running external files outside Oracle DB, this is the method runFile()
I'm passing it the content of script and names of file to be created on the fly and executed then deleted, sorry for the mistake in creating caller function.
The main point, how I claim that the line in code where creating external process is the problem. I have tried the code with commenting this line and it was working ok, I made this to make sure of the permission required that I need to give to the schema passing security permission problems.
The function script is running perfect if I'm executing vbs script outside Oracle using something like "cscript //NoLogo aaa1.vbs", but when I use the command line the call just never returns to me "cmd.exe /c bb1.bat".
where content of bb1.bat as follows:
echo off
vol C: | find /i "Serial Number is"
The above batch file just get the serial number of hard drive assigned when windows formatted HD.
Same code runs outside Oracle just fine, but inside Oracle doesn't return if I exectued the following:
variable serial1 varchar2(1000);
call A1( 'C' ) into :serial1;
Never returns
Thanks for tracing teh issue to that details ;) hope you coul help. -
Call .bat file from java code
I need to call an application that uses a .bat file to execute from a java program. Is that possible?
This is the .bat file:
importcli.exe ciaf2735 C:\Importcli\files\SAI2735*.txt
importcli.exe ciaf2735 C:\Importcli\files\CI2735*.txt
importcli.exe ciaf2735 C:\Importcli\files\SC2735*.txt
importcli.exe db1800 C:\Importcli\files\*.mdbmagaupe wrote:
I need to call an application that uses a .bat file to execute from a java program. Is that possible?
This is the .bat file:
importcli.exe ciaf2735 C:\Importcli\files\SAI2735*.txt
importcli.exe ciaf2735 C:\Importcli\files\CI2735*.txt
importcli.exe ciaf2735 C:\Importcli\files\SC2735*.txt
importcli.exe db1800 C:\Importcli\files\*.mdb
Hmmm, I wonder what would happen if there were a web search engine and you could research like this:
[http://www.google.com/search?hl=en&q=call+.bat+file+from+java] -
Best way to spool DYNAMIC SQL query to file from PL/SQL
Best way to spool DYNAMIC SQL query to file from PL/SQL [Package], not SqlPlus
I'm looking for suggestions on how to create an output file (fixed width and comma delimited) from a SELECT that is dynamically built. Basically, I've got some tables that are used to define the SELECT and to describe the output format. For instance, one table has the SELECT while another is used to defined the column "formats" (e.g., Column Order, Justification, FormatMask, Default value, min length, ...). The user has an app that they can use to customize the output...which leaving the gathering of the data untouched. I'm trying to keep this formatting and/or default logic out of the actual query. This lead me into a problem.
Example query :
SELECT CONTRACT_ID,PV_ID,START_DATE
FROM CONTRACT
WHERE CONTRACT_ID = <<value>>Customization Table:
CONTRACT_ID : 2,Numeric,Right
PV_ID : 1,Numeric,Mask(0000)
START_DATE : 3,Date,Mask(mm/dd/yyyy)The first value is the kicker (ColumnOrder) as well as the fact that the number of columns is dynamic. Technically, if I could use SqlPlus...then I could just use SPOOL. However, I'm not.
So basically, I'm trying to build a generic routine that can take a SQL string execute the SELECT and map the output using data from another table to a file.
Any suggestions?
Thanks,
JasonYou could build the select statement within PL/SQL and open it using a cursor variable. You could write it to a file using the package 'UTL_FILE'. If you want to display the output using SQL*Plus, you could have an out parameter as a ref cursor.
Maybe you are looking for
-
Credit Memo and A/R Invoice linking
Hi Please help me, how to find relation field between Credit Memo and A/R Invoice. I delete invoice using credit memo with copy from function. But when I view last credit memo, i cant find the corelation with my deleted A/R invoice number. I found r
-
I wish to display my current bookmarks as my opening home page in Firefox. I do not wish to use the Bookmarks sidebar instead. It used to work to open with bookmarks.html, which was and still is stored in my Firefox profile. However, I understand thi
-
Disable pushbuttons from Attachment list for Service Object
Hi, I want to disable push buttons for delete and edit from the toolbar of Attachment list from service objects. how can this be achieved ? thanks in advance. Best Regards, Vinayaka
-
I am not able to locate a mobile/pc suit for my phone lg(KP220), so that I can backup my contacts and other stuff. Can any body guide me.Thanks in advance.
-
hello, I got the iPhone 6 Plus 128GB and plugget it to iTunes and restored from backup of my previous iphone 5s... the first 3 months it was okay bit when my iPhone started filling the bugs started to appear and one after one until they became a big