How to Email Concurrent Program Output to Email using Shell Script
Hi All,
Have a Nice Day,
I have a tricky requirement and i was not able to achieve, let me explain my requirement
I have created a PLSQL Concurrent Program named "Approval Update". This will do update and it display the number of rows updated.
Now i need to take this concurrent program output and it needs to be send it to the person who submits this program as an email using shell scripts.
I have referred meta link note as well as some OTN posts but I was not able to achieve this.
Please help me to complete this As soon as possible, Thanks in advance for your help.
Let me know if you need more clarifications.
Regards,
CSK
I don't have much idea in shell scripts all i want is, in my shell script i need to get the parent concurrent program output and that needs to be emailed to the intended person.
Please help to to get the shell script commands for this.I do not have any shell script to share, sorry! If you want the query to get the parent request_id so you can get the log/out file name/location from then please refer to:
REQUESTS.sql Script for Parent/Child Request IDs and Trace File IDs [ID 280295.1]
http://etrm.oracle.com/pls/et1211d9/etrm_pnav.show_object?c_name=FND_CONC_REQ_SUMMARY_V&c_owner=APPS&c_type=VIEW
http://etrm.oracle.com/pls/et1211d9/etrm_pnav.show_object?c_name=FND_CONCURRENT_REQUESTS&c_owner=APPLSYS&c_type=TABLE -- LOGFILE_NAME & OUTFILE_NAME
Thanks,
Hussein
Similar Messages
-
How to send concurrent program output file as an attachment in the notification mail
Hi All,
We are on Oracle apps version - 11.5.10.2
We have a requirement wherein we need to send the concurrent program output file as an attachment while sending the notification mail to the user.
Currently we have tried the approach wherein we are specifying the user id in the OPTIONS tab (Notifying the following people) while submitting the concurrent program.
But using this approach, the user gets only the URL of the output file in the notification mail and not the output file as an attachment.
Kindly let us know if anyone has incorporated the logic to send the output file as attachment in the notification mail.
Please Note - We do not want any custom code to be written to send the attachment.
Any pointers to this will be helpful.
Regards,
ShrutiHi All,
We are on Oracle apps version - 11.5.10.2
We have a requirement wherein we need to send the concurrent program output file as an attachment while sending the notification mail to the user.
Currently we have tried the approach wherein we are specifying the user id in the OPTIONS tab (Notifying the following people) while submitting the concurrent program.
But using this approach, the user gets only the URL of the output file in the notification mail and not the output file as an attachment.
Kindly let us know if anyone has incorporated the logic to send the output file as attachment in the notification mail.
Please Note - We do not want any custom code to be written to send the attachment.
Any pointers to this will be helpful.
Regards,
Shruti -
How to get ORA errors in alertlog file using shell script.
Hi,
Can anyone tell me how to get all ORA errors between two particular times in an alertlog file using shell script.
ThanksHi,
You can define the alert log as an external table, and extract messages with SQL, very cool:
http://www.dba-oracle.com/t_oracle_alert_log_sql_external_tables.htm
If you want to write a shell script to scan the alert log, see here:
http://www.rampant-books.com/book_2007_1_shell_scripting.htm
#!/bin/ksh
# log monitoring script
# report all errors (and specific warnings) in the alert log
# which have occurred since the date
# and time in last_alerttime_$ORACLE_SID.txt
# parameters:
# 1) ORACLE_SID
# 2) optional alert exclusion file [default = alert_logmon.excl]
# exclude file format:
# error_number error_number
# error_number ...
# i.e. a string of numbers with the ORA- and any leading zeroes that appear
# e.g. (NB the examples are NOT normally excluded)
# ORA-07552 ORA-08006 ORA-12819
# ORA-01555 ORA-07553
BASEDIR=$(dirname $0)
if [ $# -lt 1 ]; then
echo "usage: $(basename) ORACLE_SID [exclude file]"
exit -1
fi
export ORACLE_SID=$1
if [ ! -z "$2" ]; then
EXCLFILE=$2
else
EXCLFILE=$BASEDIR/alert_logmon.excl
fi
LASTALERT=$BASEDIR/last_alerttime_$ORACLE_SID.txt
if [ ! -f $EXCLFILE ]; then
echo "alert exclusion ($EXCLFILE) file not found!"
exit -1
fi
# establish alert file location
export ORAENV_ASK=NO
export PATH=$PATH:/usr/local/bin
. oraenv
DPATH=`sqlplus -s "/ as sysdba" <<!EOF
set pages 0
set lines 160
set verify off
set feedback off
select replace(value,'?','$ORACLE_HOME')
from v\\\$parameter
where name = 'background_dump_dest';
!EOF
`
if [ ! -d "$DPATH" ]; then
echo "Script Error - bdump path found as $DPATH"
exit -1
fi
ALOG=${DPATH}/alert_${ORACLE_SID}.log
# now create awk file
cat > $BASEDIR/awkfile.awk<<!EOF
BEGIN {
# first get excluded error list
excldata="";
while (getline < "$EXCLFILE" > 0)
{ excldata=excldata " " \$0; }
print excldata
# get time of last error
if (getline < "$LASTALERT" < 1)
{ olddate = "00000000 00:00:00" }
else
{ olddate=\$0; }
errct = 0; errfound = 0;
{ if ( \$0 ~ /Sun/ || /Mon/ || /Tue/ || /Wed/ || /Thu/ || /Fri/ || /Sat/ )
{ if (dtconv(\$3, \$2, \$5, \$4) <= olddate)
{ # get next record from file
next; # get next record from file
# here we are now processing errors
OLDLINE=\$0; # store date, possibly of error, or else to be discarded
while (getline > 0)
{ if (\$0 ~ /Sun/ || /Mon/ || /Tue/ || /Wed/ || /Thu/ || /Fri/ || /Sat/ )
{ if (errfound > 0)
{ printf ("%s<BR>",OLDLINE); }
OLDLINE = \$0; # no error, clear and start again
errfound = 0;
# save the date for next run
olddate = dtconv(\$3, \$2, \$5, \$4);
continue;
OLDLINE = sprintf("%s<BR>%s",OLDLINE,\$0);
if ( \$0 ~ /ORA-/ || /[Ff]uzzy/ )
{ # extract the error
errloc=index(\$0,"ORA-")
if (errloc > 0)
{ oraerr=substr(\$0,errloc);
if (index(oraerr,":") < 1)
{ oraloc2=index(oraerr," ") }
else
{ oraloc2=index(oraerr,":") }
oraloc2=oraloc2-1;
oraerr=substr(oraerr,1,oraloc2);
if (index(excldata,oraerr) < 1)
{ errfound = errfound +1; }
else # treat fuzzy as errors
{ errfound = errfound +1; }
END {
if (errfound > 0)
{ printf ("%s<BR>",OLDLINE); }
print olddate > "$LASTALERT";
function dtconv (dd, mon, yyyy, tim, sortdate) {
mth=index("JanFebMarAprMayJunJulAugSepOctNovDec",mon);
if (mth < 1)
{ return "00000000 00:00:00" };
# now get month number - make to complete multiple of three and divide
mth=(mth+2)/3;
sortdate=sprintf("%04d%02d%02d %s",yyyy,mth,dd,tim);
return sortdate;
!EOF
ERRMESS=$(nawk -f $BASEDIR/awkfile.awk $ALOG)
ERRCT=$(echo $ERRMESS|awk 'BEGIN {RS="<BR>"} END {print NR}')
rm $LASTALERT
if [ $ERRCT -gt 1 ]; then
echo "$ERRCT Errors Found \n"
echo "$ERRMESS"|nawk 'BEGIN {FS="<BR>"}{for (i=1;NF>=i;i++) {print $i}}'
exit 2
fi -
Sending an email using shell script in Oracle Applications
Hi,
I have a pl/sql package which will call a shell script program.The shell script program is written in order to send the invoice hold details of AP as a mail.The parameters to this program are passed in the pl/sql package.
The shell script program has
5 parameters namely
to - email
from - email
hold id - which is a number
hold name - varchar2( free text)
hold reason - varchar2( free text)
the shell script looks as below.
FROM_EMAIL=`echo $1|cut -f9 -d " "|sed 's/\"//g'`
echo "From email id is $FROM_EMAIL" -- From email
TO_EMAIL=`echo $1|cut -f10 -d " "|sed 's/\"//g'`
echo "To Email id is $TO_EMAIL" -- to email
PARAM0=`echo $1 | awk '{print $11}'|sed -e "s/\"//g"`
echo "Param0: $PARAM0" -- hold id
PARAM1=`echo "$1" | cut -d" " -f12-| sed -e "s/\" \"/\"^\"/g" | awk -F'^' '{print $1}'|sed -e "s/\"//g"`
echo "Param1: $PARAM1" -- hold name
PARAM2=`echo "$1" | cut -d" " -f13-| sed -e "s/\" \"/\"^\"/g" | awk -F'^' '{print $1}'|sed -e "s/\"//g"`
echo "Param2: $PARAM2" -- hold reason
the values that am passinf to this program are if suppose
from email ---- [email protected]
to email [email protected]
12345 ------ hold id
test hold name ------ hold name
test hold reason ------- hold reasonIs there a question here?
In any case you could easily have done this inside the database using UTL_SMTP. -
How to switch user from the current user using shell script code
Hi Experts,
I have an requirement to login into a particular user from the shell script concurrent program. I do have credentials for that particular user. I want to login and run few commands from that particular user. Please let me know if there are any methods to login as a particular user using the username, password from shell script program.
Thanks a lot.Thanks for your reply. However we cannot use su command from a shell script program. How to enter password from shell script program?http://tinyurl.com/3t7cwjh
Thanks,
Hussein -
How to Compile the PL/SQL Package/ Procedure using shell script
Hi,
I tried to Compiled the shell script but I am facing some error.
Can any one help me how to compile the PL/SQL shell script without error. Awaiting for your valuable reply.
Thanks,
Arun Prakashuser8726849 wrote:
PL/SQL shell script without errorWhat's a PL/SQL shell script?
Can you please post exactly what you are trying to do (As in the actual code that you are executing and its output)? Also please post it in \ tags (See FAQ). -
How to pass password to an lftp connection using shell script
Hi
I need to transfer a file to server which support FTPS protocol. I am using lftp utility for this purpose. User credentials used to establish the connection expires after a period(eg: 45 days/3 months) . Can anyone guide me with me an approach to use the password in the shell script which transfer the file to the remote server other than hard coding the password in the script.
Thanks
RamyaSSH is a better option but unfortunately it's not always available. If you worry about security, you could use the bookmark lftp feature:
$ lftp ftp://username@server
Password:
lftp username@server:~> set bmk:save-passwords true
lftp username@server:~> bookmark add yourserver
lftp username@server:~> bookmark list
lftp username@server:~> quit
$ lftp yourserver &
$ ps -aux | grep lftp
The password is stored in ~/.lftp/bookmarks (not encrypted) but you can protect the file with the right permissions as you would do with your certificates with SSH. -
Debugging a program being called from a shell script
hi All,
i want to know how debug a C program being called from A Shell Script,
my script looks like the following :
ecReqProcMain $Cfg/ecReq.g $TotCnt 2>> $ErrFilei also have to pass some arguments to the script itsellft, which in trun going to pass it to the program,
also in some cases i may be required to Pipe some data to the program, like the folowing
cat DataFile | myProgramThanks ,You can also use ss_attach with the scheme that Anton
suggested above. Instead of inserting "dbx" into your
script, insert "ss_attach" into your script.
It's also possible to change your script to something like this:
cat DataFile | ${DEBUG} myProgram
Then you can run your script like this:
setenv DEBUG ss_attach
ecReqProcMain $Cfg/ecReq.g $TotCnt 2>> $ErrFile
--chris -
Current Concurrent Program Output permissions
Hi,
I am working on Oracle Applications 11.5.10
Is it possible to send the concurrent program output of the current running program as a mail ? Or does the output file become available for reading once the whole program completes ?
I am writing the errors encountered during the current program into the output file for the current program. At the end of the program, I am calling a shell script to send the output file in mail. However I am getting an error message saying file not found or no permission on file. So wanted to know if I am doing the right thing. Or should I call the mail notification only once the whole program completes.
I tried to search the forum, but no where its mentioned if anyone is trying to access output file of currently running program. It will be great if someone can share their knowledge.
Thanks,
SouHi;
Please check thread
Concurrent Request Output with e-mail
Re: concurrent ouput to email
Regard
Helios -
How to convert concurrent program out files .out file to .txt files in
Hi
Trying to know if there is a way to convert the concurrent programs' output files witn '.out' extension to files with extension '.txt'
thanks
kpWhy you want to change the file extension to txt instead of out?
I believe you cannot do and you are not supposed to change it. Controlling the report output to different types can be done as explained in these docs.
How to Setup The Report Output to Different Viewer Types in Oracle Applications 11i [ID 184375.1]
How to Control the Name and the Application that Opens the Concurrent Request Output File on the Client? [ID 316752.1]
Thanks,
Hussein -
How to view concurrent program LOG from custom FORMs
Hi,
How to view concurrent program LOG from custom FORMs?
Thanks
ESLHi Thanks for your response....
lets assume there are 2 buttons, first button to submit concurrent program and second button to view concurrent program output/log.
Actually im able to submit concurrent program from oracle custom form(6i) in ebusiness(11.5.0.2) i.e first button (WHEN-BUTTON_PRESSED buitin).
Rather user navigating to VIEW-> REQUEST, i would like to give option to user to view concurrent program output/log when user clicks on second button (WHEN-BUTTON_PRESSED buitin)
How can i achive this?
Thanks,
ESL -
Getting Error While Attaching Concurrent Program Output PDF file for POAPPRV Workflow
Hi All,
I am getting the below error when I am trying to attach concurrent program output to the PO Approval Notification.
An Error occurred in the following Workflow.
Item Type = POAPPRV
Item Key = 1040589-528378
User Key =945871
Error Name = WF_ERROR
Error Message = [WF_ERROR] ERROR_MESSAGE=3835: Error '-20002 - ORA-20002: [WFMLR_DOCUMENT_ERROR]' encountered during execution of Generate function 'WF_XML.Generate' for event 'oracle.apps.wf.notification.send'. ERROR_STACK=
Wf_Notification.GetAttrblob(3604701, ZZ_PREVIOUS_PO_COMPARE, text/html)
WF_XML.GetAttachment(3604701, text/html)
WF_XML.GetAttachments(3604701, http://oraerp.am.corp.xxxx.com:8099/pls/DEV, 11283)
WF_XML.GenerateDoc(oracle.apps.wf.notification.send, 3604701)
WF_XML.Generate(oracle.apps.wf.notification.send, 3604701)
WF_XML.Generate(oracle.apps.wf.notification.send, 3604701)
Wf_Event.setMessage(oracle.apps.wf.notification.send, 3604701, WF_XML.Generate)
Wf_Event.dispatch_internal()
Error Stack =
Activity ID = 190844
Activity Label = AL_NOTIFY_APPROVER_PROCESS:ZZ_PO_PO_APPROVE_ATTCH
Result Code = #MAIL
Notification ID = 3604701
There are several threads for this error however I cannot find any specific solution to the problem.
Please find the code below -
wf_engine.setitemattrdocument(itemtype=>itemtype,
itemkey=> itemkey,
aname=>'ZZ_PREVIOUS_PO_COMPARE',
documentid =>'PLSQLBLOB:zz_po_reqapproval_init1.xx_notif_attachments/' || to_char(l_request_id_prev_po)||':'||to_char(l_document_num));
-- here l_request_id_q_and_s is the request id of the program and l_document_num is the PO document number
PROCEDURE xx_notif_attachments(p_request_id IN VARCHAR2,
p_document_num IN VARCHAR2,
p_document IN OUT BLOB,
p_document_type IN OUT VARCHAR2) IS
v_lob_id NUMBER;
v_document_num VARCHAR2(15);
v_document_prefix VARCHAR2(100);
v_file_name VARCHAR2(500);
v_file_on_os BFILE;
v_temp_lob BLOB;
v_dest_offset NUMBER := 1;
v_src_offset NUMBER := 1;
v_out_file_name VARCHAR2(2000);
v_conc_prog_name VARCHAR2(500);
v_conc_req_id NUMBER;
CURSOR get_output_file(p_concurrent_request_id NUMBER) IS
SELECT cr.outfile_name, cp.concurrent_program_name
FROM fnd_concurrent_requests cr, fnd_concurrent_programs_vl cp
WHERE request_id = p_concurrent_request_id
AND cp.concurrent_program_id = cr.concurrent_program_id;
BEGIN
-- set_debug_context('xx_notif_attach_procedure');
v_conc_req_id := to_number(substr(p_request_id,
1,
instr(p_request_id, ':') - 1));
v_document_num := substr(p_request_id,
instr(p_request_id, ':') + 1,
length(p_request_id) - 2);
OPEN get_output_file(v_conc_req_id);
FETCH get_output_file
INTO v_out_file_name, v_conc_prog_name;
CLOSE get_output_file;
v_out_file_name := substr(v_out_file_name,
instr(v_out_file_name, '/', -1) + 1);
v_file_name := to_char(v_document_num) || '-Previous_PO_Rev.pdf';
utl_file.fcopy(src_location => 'APPS_OUT_DIR',
src_filename => v_out_file_name,
dest_location => 'PO_DATA_DIR',
dest_filename => v_file_name);
-- v_lob_id := to_number(v_document_id);
v_file_on_os := bfilename('PO_DATA_DIR', v_file_name);
dbms_lob.createtemporary(v_temp_lob, cache => FALSE);
dbms_lob.fileopen(v_file_on_os, dbms_lob.file_readonly);
dbms_lob.loadblobfromfile(dest_lob => v_temp_lob,
src_bfile => v_file_on_os,
amount => dbms_lob.getlength(v_file_on_os),
dest_offset => v_dest_offset,
src_offset => v_src_offset);
dbms_lob.fileclose(v_file_on_os);
p_document_type := 'application/pdf;name=' || v_file_name;
dbms_lob.copy(p_document, v_temp_lob, dbms_lob.getlength(v_temp_lob));
EXCEPTION
WHEN OTHERS THEN
wf_core.CONTEXT('ZZ_PO_REQAPPROVAL_INIT1',
'xx_notif_attachments',
v_document_num,
p_request_id);
RAISE;
END xx_notif_attachments;
Please help me find a to the above mentioned error.
Thanks,
SuvigyaThere are two ways to look at what error the PLSQLBLOB API is throwing.
1) Call your PLSQLBLOB API GNE_PO_CREATE_FILE_ATTACHMENT.Gne_Create_File_Attachment directly from a PLSQL block and verify that it returns the BLOB data successfully.
You could also call another WF API that in turn executes the PLSQLBLOB API internally. For example,
<pre>
declare
l_document blob;
l_doctype varchar2(240);
l_aname varchar2(90);
begin
dbms_lob.CreateTemporary(l_document, true, dbms_lob.Session);
-- 207046 - This is the notification id of your failed workflow
-- PO_REPORT - Document type attribute
-- 'text/html' - Content Type being generated for
Wf_Notification.GetAttrBLOB(207046, 'PO_REPORT', 'text/html', l_document, l_doctype, l_aname);
-- Print the size of the document here to verify it was fetched correctly
end;
</pre>
2) Turn on log for SYSADMIN user with following attributes.
Log Enabled = TRUE
Log Level = ERROR
Log Module = wf.plsql%
Restart the Workflow Deferred Agent Listener and Workflow Notification Deferred Agent Listener and run your workflow process. Search for log messages written for above context and you can identify the error at wf.plsql.WF_XML.GetAttachment module with message starting as "Error when getting BLOB attachment ->"
Hope this helps.
Vijay -
BI Publisher Charts not getting displayed in concurrent program output
Hi,
I am using BI Publisher version 11.1.1.3.0 on Windows 7 with word 2007. After creating the Bar chart in RTF template of BI publisher when I load sample XML data and check it in "Preview" is displays the output correctly.
My requirement is to print the charts in concurrent program's output on EBS version 12.1.1. (preferably HTML but PDF will also do) However when I run the concurrent program which processes the data definition and the RTF template registered for this report, the output is just an image of the chart. The XML output generated by the program is not reflected in the chart display at all. (I have verified that XML is generated properly)
Can someone please let me know if there is some setup required to make the charts display properly in concurrent program output?
I have also tried BI publisher version 10.1.3.2.1 for this. With this the concurrent program output is just blank. Not even an image is displayed.
p.s. The program uses standard executable XDODTEXE (which is normally used to run BI publisher reports)
Thanks,
ArchanaHi,
I have finally found solution to this issue....
Two setups are required to display the charts in the concurrent program's PDF output:
1. We need to edit the variables CLASSPATH and AF_CLASSPATH. These variables should have the complete path added for the xdoparser.zip file on the server.
2. The DISPLAY variable should be correctly setup to direct the server output.
Also as per my findings so far, the BI (XML) publisher version 11.1.1.3.0 (or any 11g) does not work with EBS (at least for charts). We need to use BI publisher version which is XML 5.6.3 compatible for EBS. This version is 10.1.3.2.1. (patch 12395372) Now this 10g version does not work on Windows 7 so you need to use Windows XP!
With this... finally... your charts should be getting displayed in EBS output...
Cheers!! :-)
Archana -
How to assign concurrent program to concurrent manager
Hi:
How to assign concurrent program to concurrent manager? or the other way around. It was an interview question. for R12 or 11i
ThanksSrini Chavali wrote:
All concurrent programs, by default, will be run thru the Standard Manager. If you need to have a specific manager run a program, you need to define specialization rules (in Concurrent > Manager > Define, "Specialization Rules" button) for that manager.
http://docs.oracle.com/cd/E18727_01/doc.121/e12893/T174296T174302.htm#fndcpdcq.QUEUE_CONTENT
And that's exactly what is mentioned in the docs referenced in my previous reply.
Thanks,
Hussein -
How to make a program for backgroung processing used servlet
how to make a program for backgroung processing used servlet
well i need the coding part written in servlet ,in which servlet is always ready for accepting a client request.
Maybe you are looking for
-
How do I save all the images in the project bin at once
So I don't have to double-click on each one of them and click save. The only way I have figured out how to do it is actually close photoshop to get it to ask me to save each image one at a time... Surely, there is a better way which I am missing??
-
Hello! I've only recently started using Mail. I work from home, freelance as an illustrator. As you can imagine I have to send a lot of images, usually as JPGs or PDFs. I'm having a major problem with this: Mail converts the PDFs into small thumbnail
-
Hi, Following is the error log I got when it crashed [13/Jun/2007:08:22:30] catastrophe (21057): Server crash detected (signal SIGBUS) [13/Jun/2007:08:22:30] info (21057): Crash occurred in function INTservact_service from module /usr/netscape/servet
-
Routes, gateways, and networks -- Help Please
Hi Linux gurus: I have a problem that I know you will help me resolve... I have two network cards in my Linux box. 1. public network: 10/100 192.168.1.102 default gw: 192.168.1.1 netmask: 255.255.255.0 I want this one routed to my router for internet
-
Tous les ordinateurs Apple lisent le flash. Ce n'est pas le cas de l'iPhone et de l'ipad. Mais comment peut-on encore se passer d'une technologie qui se retrouve sur de très nombreux sites. Mon iPad me sert pour les recherches internet sans avoir bes