Sqlplus call in unix script
Can someone point me to a site where I can get some documentation or good information on the proper way of making a sqlplus call in unix (korn) shell script? I want to know the proper format as well as the right parameters when calling sqlplus. I would like to be able to run a sql statement or call a pl/sql procedure. I've searched the internet and found some information. However, the information are mostly example-type info and not really a well-organized documentation. Would appreciate any help.
This is the forum for the SQL Developer tool, you should ask questions like this in the SQL and PL/SQL forum or the Database - General forum.
Having said that, calling sqlplus is just like calling any other command. You should read the SQL*Plus manual which details all the command line parameters and options.
Similar Messages
-
Call a unix script from ABAP program
Can anybody help me on how to call a unix script from an ABAP program
Regards
AnjaliHi try the below code
parameters : p_sfile(60) lower case
"File to be moved
"Eg : /home/in/SFILE1.txt
p_dfile(60) lower case.
"File's Destination
"Eg: /home/archive/SFILE1.txt
data : t_btcxpm
like btcxpm occurs 0,
p_addparam
like sxpgcolist-parameters.
concatenate
'/home/ABAP/scripts/Archive_file.sh'
p_sfile
p_dfile
into p_addparam separated by space.
refresh t_btcxpm. clear t_btcxpm.
call function 'SXPG_CALL_SYSTEM'
exporting
commandname = 'ZSHELL'
additional_parameters = p_addparam
tables
exec_protocol = t_btcxpm
exceptions
no_permission = 1
command_not_found = 2
parameters_too_long = 3
security_risk = 4
wrong_check_call_interface = 5
program_start_error = 6
program_termination_error = 7
x_error = 8
parameter_expected = 9
too_many_parameters = 10
illegal_command = 11
others = 12.
if sy-subrc = 0.
write : /
'File',p_sfile,'moved to',p_dfile.
else.
write : / 'Error Occured'.
endif. -
Call a unix script from pl/sql package
Hi,
Using 11.2.0.3 on AIX.
Is it possible to call unix script from pl/sql package?
I am cretaing a file in a directory but would like this to automatically be written to an archive directory as well.
Could either use 2 utl_file.put_lines to 2 separate directories or 1 utl_file and cal script to archive file in another directory.?
Thoughts?
Thanksuser5716448 wrote:
What am I doing wrong?think how file name will look like:
SQL> select 'file_name' || to_char(sysdate,'DD/MM/YYYY HH24:MI:SS') from dual;
'FILE_NAME'||TO_CHAR(SYSDATE
file_name15/08/2012 11:47:51Will AIX swallow such name? Obviously not. And, unfortunately, UTL_FILE.FCOPY doesn't raise an error in such case. So use someting like:
UTL_FILE.FCOPY ('SOURCE_DIR',v_FILE_NAME,'DEST_DIR',v_file_name||to_char(sysdate,'DD_MM_YYYY_HH24_MI_SS'));SY. -
Problem in calling an Unix script in Sunopsis!!!
Hi,
I have written a script in UNIX and when i call in it Sunopsis using the OS command and run,in the operator it says " Wrong Process Code "
The script runs fine when run in UNIX shell.But why it is throwing an error when called in Sunopsis.Am i missing something in Sunopsis ? Eagerly waiting for your replies.
This is the way i called in the OS command ...
sh /tmp/built/new_scripts/DR.sh
Regards,
SaravanaOf course ODI is installed in your Unix server. If not you have installed on your Unix server an ODI agent that to run the OS command!
-
Unix SCRIPT CALL FROM PL/SQL
How can I call an unix script from a PL procedure ?
http://www.orafaq.com/scripts/c_src/extproc.txt
-
Call unix script within Servlet - need to wait for completetion
Hi,
I have a servlet which grabs some information from my web form and then calls a unix script.
This already works fine and does what i need it to do. I now need to add some functionality where i can get the servlet to wait for the unix script to complete before carrying on and then redirecting back to the user.
the code i have for the current servlet is:
* EXECUTE THE UNIX COMMAND.
Runtime oRuntime = Runtime.getRuntime();
Process oProcess = null;
String[] cmd = {"/bin/sh", "-c", sPath}; // UNIX
* ERROR CODES 3 = File not found
try
oProcess = oRuntime.exec(cmd);
catch(Throwable t)
t.printStackTrace();
}I am assuming i need some sort of wait method to handle this. Any help would be greatly appreciated.
Thanks
Grahamok.. you code is fine.. you can run any shell script or program using the exec() method. if you need to wait till the process finishes then you need to call the method waitFor() in class Process.. the method blocks the parent thread (servlet) till the sub process (your exec'd script or program) terminates.
hope that solves your problem.. :-)
Pls tell me one more thing.. are you using netBeans or Eclipse for executing the programs or you use standalone tomcat to deploy the application. I have problem in execing programs when i deploy in tomcat 5.5 and the same application works fine in netBeans 5.0. if you know pls help me too..
Thanks,
-- abdel Olakara. -
Calling Unix-Script from within Oracle and store stdout/stderr in table
Hi,
What I want to do is:
1. Calling a UNIX script (e.g. hello.sh) (from inside the Database)
hello.sh
echo Hello World!
2. and get the stdout/stderr output back in my Database in a table (e.g. temp_back)
table temp_back
ID stdout stderr
1 Hello World!
I think Number 1 isnt a big problem, but how to get stdout back in DB?
Any solution?
I searched a bit in this Forum and found this Post.
re:Calling Host Command Through Database Procedures or Triggers
This may be what I am searching for, but cant access the Link
Since I am not really fit with UNIX and packages/procedures in Oracle it would be nice if you could post a very detailed answer.
(Please no java)
-What packages do I need? (heard DBMS_OUTPUT would be useful)
-example PL/SQL script
Thanks a lot!
Marcus
Environment:
Oracle 9.2.0 DBMarcus, if you opened the Java sandbox to access any o/s file, you can call any Unix command, shell script, or program, that the Oracle o/s user has exec privs on.
Just remember that there's a very basic Unix environment when you make the call - the settings in the .profile does not apply. Thus PATH for example is not set. When making the call make sure that the complete path is given. As for the environment, that is a problem as you cannot set that and make the call at the same time.
In that case it is much simpler to rather write a Unix shell script that does all for you. Set the environment. Run the command(s). Format output. Etc.
Then you call that Unix script, via Java, from SQL or PL/SQL. Treat the Unix scripts like the Unix-version of stored procedures for your Oracle application.
Some technical details. When you connect to Oracle, a Unix process services you. This can be either a dedicated server process (servicing only your Oracle session) or a shared server process (from the shared service pool of processes).
In either case, it is a Unix process running as a background process (thus detached from any tty device). PL/SQL and SQL are executed by this process. The Oracle JVM created by your session also lives in this process. When you therefore make o/s calls, these calls are made by this process.
Therefore you are limited to what this process can and can't do. E.g. it runs as the oracle o/s user and will fail on accessing paths and commands does the oracle user does not have privs on. Etc. -
Hi all,
I'm having unix scripts for file validation.How and where to call this Unix scripts in ODI?Please be in steps.
Advance thanks
SureshHi Suresh,
Its very straight forward in ODI.
For your package, click Tools, under Utilities you will find, OSCommand, type the exact path of your script file and make sure your agent should have all access rights to invoke the script.
http://img19.imageshack.us/img19/5584/screenshot030z.jpg
Thanks,
G -
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. -
Call Unix Script from JSP.
Hi,
I need to run a unix script from a JSP page.
JSP pages reside on a different machine.
How can i call the unix script resides on different machine from JSP.
Thanks,
Narendrayah. I can access that machine telnet and having all credentials of that system.
Can you please share the code needed for this.
Thanks,
Narendra -
Call unix script within plsql block
Hi all,
can i call a unix script within a plsql block for example
my unix script name is - Diff_dataload_process.sh
declare
begin
select * from ......;
Diff_dataload_process.sh
exception
end;
please help me.
Thanks,
KrupaHi, I think you need something like this:
DBMS_SCHEDULER.create_program
(program_name => 'sch_program',
program_type => 'EXECUTABLE',
program_action => '/home/nobody/input/test_job.sh',
number_of_arguments => 0,
enabled => TRUE,
comments => 'Test Program'
end;
and there's another ways to do it:
[calling shell|http://www.dba-oracle.com/t_execute_shell_script_plsql_procedure.htm] -
Error Using dbms_scheduler to call a shell script
Hi,
I have been assigned a job of sending emails through unix utility(Mailx), based on certain activity in database.
Email needs to be sent on insert/update of a column in one of the database tables.
I am trying to use the block below to call the unix script responsible to send mails:
begin
dbms_scheduler.create_job
job_name => 'TPP_SEND_EMAIL_JOB',
job_type => 'EXECUTABLE',
job_action => '/opt/ENV/code/BIL/users/usrbil01/Hemz/sndmailscrpt.ksh',
repeat_interval => 'FREQ=MINUTELY; INTERVAL=30',
enabled => true,
comments => 'Send Email on ISU update'
end;
sndmailscrpt.ksh: Script to send email is embedded within the shell script
I am getting the below error when i try to run the job using 'exec dbms_scheduler.run_job('TPP_SEND_EMAIL_JOB');'
Error:
ORA-27370: job slave failed to launch a job of type EXECUTABLE
ORA-27300: OS system dependent operation:accessing extjob wrapper failed with status: 2
ORA-27301: OS failure message: No such file or directory
ORA-27302: failure occurred at: sjsec 3
ORA-06512: at "SYS.DBMS_ISCHED", line 150
ORA-06512: at "SYS.DBMS_SCHEDULER", line 441
ORA-06512: at line 1
I am not aware of any db related permissions that needs to be given, is this related to that or is there somethin i need to do for execution to be successfull
Request you to let me know the exact solution and also the steps i need to take in order to ensure successfull execution of this script.
Please also let me know if there is any other way wherein i can call a unix script from a database trigger on run time(i.e, whenever insert/update on a particular column in database)
Regards,
HemanthHi All,
Thank you for your inputs.
I am now pressed to explore the option of utl_mail as this dircetly sends mail from database. This is suggested as an option for my delivery now.
I am able to install utl_mail and send a mail using the block below:
begin
utl_mail.send(
sender => '[email protected]',
recipients => '[email protected]',
subject => 'Testing utl_mail',
message => 'The receipt of this email is checking on working of UTL_MAIL '
exception
when others then
dbms_output.put_line('error: '||sqlerrm);
end;
The block gets executed successfully, but i have not received a mail yet, is there a table or oracle log from where i can trace the delivery status for the mai, or if the mail is successfully sent too?
I have heard from users in this forum for support of mime type "HTML", Should i pass the whole html body in the *'message'* input parameter here or can i pass a html template name with path present else where?
Please do assist me in this regard.
Regards,
Hemanth -
Running an Unix Script from Informatica Mapping/workflow.
Hi ,
I have a need to start /stop service to a remote server (away from the DAC server ,which is on UNIX os)
how could this be done in a best way?
I am planning to do this through Informatica Workflow,and need help (technical steps Please) to do this.
1) workflow will call the Unix Script
2) Unix Script logins to the remote server
3) Unix scripts navigates to particular folder
4) Unix script executes a command to Start/Stop the server.
5) Unix Script logs out.
6) if everything done success ,Workflow will success else fail with the error code.
RegardsHi ,
I have a need to start /stop service to a remote server (away from the DAC server ,which is on UNIX os)
how could this be done in a best way?
I am planning to do this through Informatica Workflow,and need help (technical steps Please) to do this.
1) workflow will call the Unix Script
2) Unix Script logins to the remote server
3) Unix scripts navigates to particular folder
4) Unix script executes a command to Start/Stop the server.
5) Unix Script logs out.
6) if everything done success ,Workflow will success else fail with the error code.
Regards -
Running Unix script from stored procedure
At present, I run a unix script to export my data for backup using telnet. I would like my users to run the commands on their own without my help. My users do not know telnet (they have no IT knowledge). So, I plan to create a form using Developer/2000 and let them run the procedure thru a stored procedure.But, my problem is how can a stored procedure call a unix script?
Hi,
solution, used by me.
Create a stored procedure that produces a text file with utl_file. The content of the file is the script you want to execute on your Unix box.
On your Unix Box write a shell script that scans the utl_file_dir for Files. If a file is in, chmod 744 to grnt execute rights to it and execute it.
I have a example if you want.
Start the script with crontab or let it loop with a sleep inside.
HTH
Detlev -
How can I exit my UNIX script when my PLSQL script in it calls an error?
hello.
I hope someone can help with my error handling and exiting-in-the-right-place problem.
I have several PLSQL scripts that are called from a UNIX script to insert/update employee records in ORACLE Financials.
At the end of the UNIX script, depending on whether an entry has been created in the errors table should depend on whether the UNIX script stops or not. Trouble is, its stopping too early everytime even though the the record has been inserted correctly. Please can someone either advise on what I'm doing wrong or suggest an alternative..
This the end of the PLSQL script that inserts the entry into errors table if theres an error..
WHEN OTHERS THEN ROLLBACK;
err_msg := SUBSTR (SQLERRM, 1, 350);
insert into kpmg_error_check (concurrent_id,module,narrative,status,creation_date,created_by)
values(0,'TEMPLOYEE_DTLS.sql',err_msg,'ERROR',SYSDATE,'Feldman');
commit; This is the end of the UNIX script that looks at the table..
echo " "
echo "**** `date +%H:%M:%S` - Checking if TEMPLOYEE_DTLS.sql ran OK"
error_check=`sqlplus -s $user_id @$SU_TOP/sql/SUTEMPCHK.sql 1`
if `echo $error_check` -ge 1
then
# Load failed
echo " "
echo "**** `date +%H:%M:%S` - TEMPLOYEE_DTLS has failed - check table KPMG_ERROR_CHECK for details.."
exit 1
else
# Load finished OK, if input data file exists, move and rename it
echo " "
echo "**** `date +%H:%M:%S` - TEMPLOYEE_DTLS has finished OK.."
fiThis is the entire SUTEMPCHK.sql script that the UNIX script uses..
-- Check if any errors have occurred
SELECT count(1) FROM kpmg_error_check WHERE concurrent_id = &1
EXITIs it that the above is always returning '1' and so always thinks theres an entry in the errors table?
Is there an easier way?
many thanks,
StevenHi,
You have to iterate through all pages.marginPreferences:
var
myDocument = app.activeDocument,
allPagesMaPref = myDocument.pages.everyItem().marginPreferences,
curPageMaPref;
while ( curPageMaPref = allPagesMaPref.pop() )
with (curPageMaPref) {
columnCount = 1;
//columnGutter can be a number or a measurement string.
columnGutter = "0";
bottom = "0"
//When document.documentPreferences.facingPages == true,
//"left" means inside; "right" means outside.
left = "40"
right = "0"
top = "0"
inside = "0"
Jarek
Maybe you are looking for
-
I've been looking for a while and can't find an answer to my question: I have a 3rd gen i got off of ebay. I got is about a month ago and have had no problems at all. Recently it randomly has become locked and I can't get it unlocked. It will charge
-
Access datagrid column from another column
Hello Basically, I have 2 columns in a DataGrid, both with CheckBox itemRenderers. When I check the first checkbox, I want the second to be enabled = false. I'm stuck. Thanks!
-
Photoshop CS3 A few questions (using Windows
I've just got a job in that requires file names including a full stop (8.6 for instance). This was never a problem with my old version of Adobe but now, if I save a file like this it then becomes unrecognisable to Adobe when I want to re-open it. Yee
-
No Applicable Data - Hide table
Hi, When I execute a query and there is no result, the table shows "No Applicable Data". Now I want to hide this table. I tried several visibility conditions, but it didn't work. I thougt I could use something like BOOL(IF(@column1=='',false,true)) o
-
Can Request be moved to directly to production client
Hi, We have 3 system landscape configured in STMS, one of our consultant has moved the request from Dev it automatically moved to Qas, but he said it is Kopa related request and must go to production client directly, Can anyone tell me is there a way