Calling Unix command from the plsql
Hi ,
I am executing java code from the UNIX Shell script. Before executing this command i want to write plsql code to and pass the files to java command.
In the plsql code i want to select request id's using the cursor and find the .out files for each request id in the outfile path. once the file is found i want to copy that .out file to the current directory where the java command is going to execute.
Please suggest me how to use UNIX Command (in my case "cp") to copy the .out file from the outfile path to current directory after opening the cursor.
If I understand you correctly, you want to generate a log of request id's from the database and send this to the operating system whereby you will execute the following:
<p>
<font face="courier">java org.apache.xalan.xslt.Process -XSL combinedfsg.xsl -OUT output.xml</font>
<p>
If that is correct, then you should be able to perform all of this w/ PL/SQL by generating the log from the database and write it to the O/S w/ UTIL_FILE. If you want to execute the java code at this point, you should be able to utilize Tom's method with the following:
<p>
<font face="courier">exec rc('java org.apache.xalan.xslt.Process -XSL combinedfsg.xsl -OUT output.xml');</font><p>
Similar Messages
-
Call Unix Command From Reports Using Java
Hi,
Could somebody please show me a sample coding to call Unix command from 10g report using java?
In metalink doc id 361857.1 does not show much.
Thanks,
neeminHi,
I have a problem with synchronization of the java commands.
In the Before Parammeter Form trigger, I have:
function BeforePForm return boolean is
rt ORA_JAVA.JOBJECT;
proc ORA_JAVA.JOBJECT;
v_txt varchar2(32000);
i integer := 0;
v_cd_modulo int;
v_arqlog text_io.file_type;
cursor c_evento is
select codigo,
nome
from
(select e.cd_evento || e.cd_edicao codigo
,nm_evento nome
from grh_ev_evento e
where e.CD_GRUPO in (select cd_grupo
from grh_ev_adm
where cd_usuario = (select cd_usuario
from usuario
where login_usuario = :AUTHID)))
order by substr(nome, 11);
begin
-- Create the context for logged user
if instr(upper(nvl(:AUTHID,'RWCLIENT')),'RWCLIENT') > 0 then
:AUTHID := :SSO_USUARIO;
end if ;
TCEENV.SET_TCEENV(:AUTHID);
if PK_SCA.SCA_GET_USER_RIGHTS(:sca_module_name, :AUTHID) IS NULL then
srw.message(100, 'Access denided!');
return (FALSE);
end if;
-- Create file in Report Server (UNIX)
v_txt := '<BR>' || htf.formSelectOpen('P_EV_EDICAO', 'Evento: ');
:p_file := '/u03/SCAWEB/repout/' || :sca_module_name || '_' ||
pk_sca.sca_encrypt(:AUTHID || to_char(systimestamp, 'ss.ff'));
v_arqlog := text_io.fopen (:p_file, 'A');
text_io.put_line (v_arqlog, v_txt);
for reg in c_evento loop
i := i + 1;
if i = 1 then
v_txt := '<OPTION SELECTED VALUE="' || reg.codigo || '">' || reg.nome;
else
v_txt := '<OPTION VALUE="' || reg.codigo || '">' || reg.nome;
end if;
text_io.put_line (v_arqlog, v_txt);
end loop;
v_txt := '</SELECT></CENTER></form></BODY> </HTML>';
text_io.put_line (v_arqlog, v_txt);
text_io.fclose (v_arqlog);
SRW.SET_AFTER_FORM_HTML(SRW.FILE_ESCAPE, :p_file);
rt := RUNTIME.GetRuntime();
proc := RUNTIME.exec(rt,'rm ' || :p_file);
return (TRUE);
end;
The problem is that there isn't a "synchronize" command, and the
RUNTIME.exec(rt,'rm ' || :p_file) don't works (it does nothing) because
the SRW.SET_AFTER_FORM_HTML has a large delay and the following
command is ignored.
How can I solve it?
thanks,
lmprestes -
Call unix commands from stored procedures
My stored procedure requires to call unix commands HOW DO I DO IT?
nulli do not know pl sql but in java you can use:
Runtime.getRuntime().exec("YOUR UNIX COMMAND");
real example:
Runtime.getRuntime().exec("ls");
but you must be careful with using that...
especially if you want to wait till the process finishes..
rgds, -
Calling UNIX command from PL/SQL Procedure
Is there a way to call a UNIX command (exa. ls) from within a PL/SQL stored procedure? Looking through the various packages, I didn't see anything that would give me this ability.
I also looked through all the previous questions and nothing looked encouraging.
Thanks in advance,
RussRuss,
I thought I'd read a similar question awhile ago and did a search on the word host in this forum and found the following from July 9th that might help you:
http://technet.oracle.com:89/ubb/Forum88/HTML/001611.html
In that post I think the link listed by Barbara Boehmer in has changed to:
]http://asktom.oracle.com/pls/ask/f?p=4950:8:24579::NO::F4950_P8_DISPLAYID,F4950_P8_CRITERIA:16212348050,{host}
It looks like they give solutions for Oracle 7, 8 and 8i.
Good site Barbara, I've added it to my bookmarks.
Hope this helps. -
How to execute unix command from the Java program running on Windows
Hello,
I need to
1. Execute a unix shell script from a Java program running on the Windows.
2. I also need to capture the output of this shell script in my program.
Please suggest me how to achieve this.
Thanks in Advance.Hi...
Something is missing here
If you want to execute a shell script in windows that not posible unless you find or develop a unix shell script parser for windows.
But if you are trying the execute a unix shell script on a remote unix computer from your java program running on a windows platform you can do that by logging on to the UNIX terminal which is running on port 23 I think.
You can test this using telnet tool on windows
just type on command prompt
telnet <ip of the unix pc> <port number this case 23>
you should get the unix terminal. If that works you can do the same through java or you can directly conect to port 23 of that pc using sockets that way your program will be platform independant -
Calling UNIX Command from another server using ODIOScommand utility
Hi,
My unix script 'runmanger' is on another server say 'St23456wer' under /u10/DV2/ofsaa/fic/xxx/bin. I want to call this 'runmanager' using ODIOSCommand. My ODI agent is installed on different server. I can ping 'St23456wer' server from ODI server. How can I call this unix script.My only experience with this is connecting to source files on a remote linux server and the two options I was presented with were 1) creating a mount to make the files 'local', or 2) set up a new agent on the remote server.
One of the gurus may have a better answer for you. -
Call unix command in sqlplus script
Hello, I wanna to know how to call a unix command in the sqlplus script.
For exemple,
I've a sqlplus script to lauch a oracle report, after the report is generated, I wanne to replace the output file in an other directory.
So that, I have to call the unix command mv here in the sqlplus script
How can I do it?**
I completed my situation:
I don't have dbms_scheduler untility in my database.
Thanks a lot for your help
Edited by: user11930885 on 17 janv. 2010 14:53Yes, at the begining, I'll tried the unix shell by calling SQL.
I've the problem of passing the parameters through.
It seems to me
we can use
Host in the SQLPLUS to run the unix command.
but I've written it in my sqlplus script, it doesn't work. so I wanna to find an exemple how to use HOST in sqlplus script?
I would have loved to give you an example..but its not unix on my laptop.
But what i can tell you is...u should be doing otherway round.
Not calling Unix commands from SQL but calling SQL's form unix.
You got shell scripts for that.
Write a shell script. Login to SQL execute your code.
exit from sql and then move your file with MV. That's it.
Do post how far you get after trying this. -
Call an interactive UNIX command from java
Hi,
I want to call a UNIX command from java. When issue the command 'htpasswd -c filename username' on UNIX terminal, it asks for the new password and the then confirmation password again (yeah, unfortunately the htpasswd installed on our system does not allow you proivde the password on the command line. So have to work interactively ). Now, I have written a simple java program RunCommand.java. I am hardcoding the password for the htpasswd command in the file (in the real situation, password will be generated dynamically). I want to issue 'java RunCommand' on the UNIX command line and get back the command prompt without being asked for the password twice. The code is below, but the Outputstream does not work as expected. It always asks for inputs. Any idea? Many thanks.
import java.io.*;
public class RunCommand {
public static void main(String args[]) throws Exception {
String s = null;
try {
String cmd = "htpasswd -c filename username ";
// run a Unix command
Process p = Runtime.getRuntime().exec(cmd);
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
BufferedReader stdError = new BufferedReader(new InputStreamReader(p.getErrorStream()));
OutputStream stdOut = p.getOutputStream();
String pswd = "mypassword";
while ((s = stdInput.readLine()) != null) {
s = stdInput.readLine();
stdOut.write(pswd.getBytes());
stdOut.flush();
System.out.println("Here is the standard error of the command (if any):\n");
while ((s = stdError.readLine()) != null) {
System.out.println(s);
stdOut.close();
stdInput.close();
stdError.close();
System.exit(0);
catch (IOException e) {
System.out.println("exceptions caught: ");
e.printStackTrace();
System.exit(-1);There are only about 9 billion responses a day on how to do this. Use the search feature.
-
Hi all ,
I have tried unix command from PLSQL Block,
Please see the code.
DECLARE
stat INTEGER;
host_command varchar2(100);
errormsg VARCHAR2(80);
command varchar2(2000);
BEGIN
command:='touch /home/oracle/testting.txt';
dbms_pipe.reset_buffer;
host_command:= dbms_pipe.unique_session_name;
dbms_output.put_line('host_command:'||host_command);
dbms_pipe.pack_message(command);
dbms_output.put_line('pack message:'||command);
stat := dbms_pipe.send_message(host_command);
dbms_output.put_line('stat:'||stat);
IF stat <> 0 THEN
raise_application_error(-20000, 'Error:'||TO_CHAR(stat)||' sending on pipe');
END IF;
stat := dbms_pipe.receive_message(host_command);
dbms_output.put_line('stat2:'||stat);
IF stat <> 0 THEN
raise_application_error(-20000, 'Error:'||TO_CHAR(stat)||' receiving on pipe');
END IF;
dbms_pipe.unpack_message(errormsg);
dbms_output.put_line('errormsg:'||errormsg);
IF errormsg <> 'SUCCESS' THEN
raise_application_error(-20000, 'Execution error: '||errormsg);
END IF;
END;
Nothing happend from this code just getting only following result with error.
-----------------result-----------------------------
host_command:ORA$PIPE$002D19820001
pack message:touch /home/oracle/testting.txt
stat:0
stat2:0
errormsg:touch /home/oracle/testting.txt
DECLARE
ERROR at line 1:
ORA-20000: Execution error: touch /home/oracle/testting.txt
ORA-06512: at line 33
Can any one tell me what i doing wrong in this code.
I m working on Oracle 11g and AIX unix server.This is the forum for the SQL Developer product, not for general PL/SQL questions. There is a link to the SQL and PL/SQL forum in the announcement at the top of this forum.
-
Calling r25con32.exe from the command prompt
how to call r25con32.exe from the run prompt.
Duplicate:
Calling r25con32.exe from the command prompt
:) -
Calling UNix Script from portal Form
Has anyone conquered this issue through jav or plsql. I need to call a unix script from the portal form when I select the insert button.
I have several very convoluted ways which all work, but I have always thought there should be more straightfwd ways. Fundamentally the easiest way to call something from the Insert button is to add some PL/SQL code before (or after) the "doInsert();" call in the Insert Button event handler.
What seems to be lacking is the ability to get from pl/sql to the o/s. So until we know how to do that you have to call a method in Java to execute o/s commands - specifically you can use Runtime.getRuntime().exec(cmd); where Runtime is a class in java.lang, and cmd is the actual o/s command (script or whatever).
How to call this Java is then where you have several options:
1. Compile this piece of Java into the Oracle DB as a SP.
2. Deploy this piece of Java within a Java servlet on a 9iAS instance. Then have another SP call this servlet using the utl_http package (begin_request and other sp's within package).
Which options would depend on several factors including your preference but most importantly whether you have a DB or a 9iAS instance on the machine where you want to execute the script. If you have neither you have a problem. In such cases I have used a standalone OC4J container which has a very small footprint.
As I said these methods are all quite convoluted and if anyone else has anything better I would like to know (but they work quite reliably).
Cheers.
Anton. -
Running Unix Command from WEB-APPLICATION
Hi all,
I want to run unix command from a java-based web application. the basic code part is this ---
public class RunCommand
public String runIt()
String s = null, returnString = "";
Process p=null;
try
Runtime rt = Runtime.getRuntime();
p = rt.exec("sh testPOC.ksh");
p.waitFor();
BufferedReader stdInput = new BufferedReader(new
InputStreamReader(p.getInputStream()));
BufferedReader stdError = new BufferedReader(new
InputStreamReader(p.getErrorStream()));
// read the output from the command
returnString += "Here is the standard output of the command:<br>";
while ((s = stdInput.readLine()) != null) {
returnString += s;
// read any errors from the attempted command
returnString += "Here is the standard error of the command (if any): <br>";
while ((s = stdError.readLine()) != null) {
returnString += s;
catch (IOException e)
returnString += "exception happened - here's what I know: ";
returnString += "error-> " + e.getMessage();
catch(Exception e)
returnString += "exception happened - here's what I know: ";
returnString += "error-> " + e.getMessage();
return returnString;
}this class is kept as an inner class. The control comes to its outer class, from servlet, from which the runit() is called. but the exception is occuring at line of p=rt.exec(.....). it tells "<command name> : not found transaction completed" [got this using getMessage() method].
i am unable to show(and see, too) the stacktrace, because i don't have access to that test environment and its log. i can't run this in local because its windows one.
now can anyone tell me, where is the problem. is there any limitation in web application server/container? this was successful when i used command prompt writing a .java file. Please help me. Thanks in advance...Friends, i've got, where the problem is.
when we run a class file directly from a command prompt, we get an environment with that shell window. but for a servlet application running these kind of commands from a class creates kind of child processes. each and every command is executed as a child process of jvm and don't get those environment. we have 'PATH' variable in the environment. when a command (say, 'dir' or 'sh' or 'ls', etc.) is executed, the shell first search for that executable file (i.e. dir / sh / ls) in the given paths in the variable 'PATH'. this is not available for the child commands of jvm. hence the basic commands are searched in the current directory of the jvm and they are failed.
i solved the problem giving full path of the commands. like :
p = rt.exec("/bin/sh runningScript.ksh") -
How to call gnuplot command from java
Hi there,
In our course, we are required to develop an GUI for gnuplot. In case you don't know about gnuplot, it's a plotting program and has lots of command. We want to use java and swing, but now we don't know how to call gnuplot command from java, or how to execute a shell command(script) from java.
By the way, since we need read in files with several columns of data and allow user to select a column, we want to use JTable. Is that reasonable?
Thanks a lot for any suggestions!
JackHi, there:
Will using JTable add much overhead? I may have to use several JTables and switch among them. I can add scroll bar to or edit JTables, right?
BTW, do you have experience about gnuplot? Can I find the command tree of gnuplot somewhere? Or do you know a better place to post question about gnuplot? unix/linux group, maybe.
Thanks,
Jack
P.S. Would you guys answer my question after I use up my duke dollars? :- ) -
Running unix commands from within a procedure
Oracle 11.1, AIX 6.1
================
A developer would like to know what the commands are to execute from within a procedure to run unix commands on the database server and capture those results back to the procedure for parsing & manipulation.
Thanks.Don't take this as the correct way to do it, but this is merely 'a' way to do it:
have a db procedure thats executes a db function
create or replace procedure csproc(p_cmd in varchar2)
as
x number;
begin
x:=csfunc(p_cmd);
dbms_output.put_line('x is: '||x);
end;
/The function calls a piece of java to execute the os command and return the return code of the os command
create or replace function csfunc( p_cmd in varchar2) return number
as language java
name 'csclass.RunThis(java.lang.String[]) return integer';
/Here is the java class to run the os command
create or replace and compile java source
named "csclass"
as
import java.io.*;
import java.lang.*;
public class csclass extends Object
public static int RunThis(String[] args)
Runtime rt = Runtime.getRuntime();
int rc = -1;
try
Process p = rt.exec(args[0]);
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;
/and finally the os command - in this case its a very simple shell script
#!/usr/bin/ksh
echo "Hi" >> /app/oracle/workdir/cs.logwill have to grant privileges to my user 'CS' to run the various os commands
exec dbms_java.grant_permission('CS','java.io.FilePermission','/app/oracle/workdir/cs.ksh','read,execute');
exec dbms_java.grant_permission('CS','java.io.FilePermission','/app/oracle/workdir/cs.log','write');
exec dbms_java.grant_permission('CS','SYS:java.lang.RuntimePermission','*','readFileDescriptor');
exec dbms_java.grant_permission('CS','SYS:java.lang.RuntimePermission','*','writeFileDescriptor');and finally can run the procedure from within the db
set serveroutput on
exec dbms_java.set_output(1000000);
exec csproc('/app/oracle/workdir/cs.ksh');
x is: 0
PL/SQL procedure successfully completed.to prove it works ok the logfile shows an entry:
'Hi' -
is it possible to execute UNIX commands from database procedures, say i'm trying to call the logger utility of unix? this procedure is not called from forms it runs at the backend only.
thanks,
victorCheck it out at : http://www.dbasupport.com/forums/showthread.php?threadid=3703
http://www.dbasupport.com/forums/showthread.php?threadid=2688
null
Maybe you are looking for
-
Hello All. I have an issue where I am trying to post an incoming invoice against an open P.O, but I cannot due to an archived customer invoice. Has anyone else seen this issue? This is a P.O. open since 2007 and is still receiving materials against i
-
Early (2007) model extreme and speeds
I have an early Airport Extreme 2007 base station model. It is fully up to date with latest upgrades. The tech specs state it is 802.11a/b/g and "draft 802.11n", it states it is 2.4Ghz OR 5Ghz. I am trying to improve my wireless download speeds as I
-
Hi, Is there a way of implementing a shuttle in HTMLDB? I would like a page with two data-driven side-by-side lists that th user can transfer easily between the lists. I seem to remember somewhere in the HTMLDB admin pages this was actually used, but
-
Hey guys, when use hardware controllers for controlling parameters of softsynths in Logic, I find that the software knobs often get stuck while moving them. I can not see a pattern to this behaviour, but it happens if I learn assignments within Logic
-
It seems like I have this problem a lot. I can never figure out how to solve this. I'm writing an application, and I can't just implement actionlistener and then do addActionListener(this) to the button becuase of all the static variables and crap. S