Skip to main content

Environment Variables within Host Program - eval Command

So you want to create a Concurrent Program that will run some code on the environment your application is installed on? OK but you also want to use the environment variables that are setup. Seems reasonable. Well I ran into a problem when trying to build a string and then run it.

The Story
I have a table that I store various commands related to an object. For this example say I want to use FNDLOAD to upload or download a concurrent program I would use something like this:
FNDLOAD apps/$APPLPWD 0 Y DOWNLOAD $FND_TOP/patch/115/import/afcpprog.lct ./MY_CONC.ldt PROGRAM APPLICATION_SHORT_NAME=XXX CONCURRENT_PROGRAM_NAME=MY_CONC
So far makes sense but if I want to automate this and seeing as FNDLOAD is pretty standard with its layout i placed the data into the table and made some fields that I change using replace. Not that important but when running the program using a HOST concurrent I was running into trouble. All the fields can be setup using replace except for the apps password that you can see here as $APPLPWD. Not a problem I thought I would just use variable 1 of the HOST program as this is what it is there for.

The Problem
P_COMPILE_COMMAND=`sqlplus -s $APPSPWD << ENDOFSQL
set line 1000 heading off TAB OFF
select xds_cust_obj_pkg.get_compile_command($P_OBJECT_ID) from dual;
exit;
ENDOFSQL`

echo "Compile:" $P_COMPILE_COMMAND
What I would normally do here is a simple echo `$P_COMPILE_COMMAND`
For the life of me it just wouldn't work, the parameter within the parameter just wasn't being executed or converted.

The Solution
 I called our DBA Arty Borulia and he came to the rescue:
eval `echo $P_COMPILE_COMMAND`

Comments

Popular posts from this blog

Cancel or abort adop session

ADOP is in my opinion still pretty half baked. This is a critical tool that just isn't as intuitive as the old adpatch was. However we move with the times and get the hang of the new way of doing things. Along the way you might want to abort or cancel a patching cycling. With the two file systems and db editioning this can be a bit more to manage. I have learnt the hard way so you need to use the full cleanup after aborting a session. adop phase=abort adop phase=cleanup cleanup_mode=full

Creating new WLS domain ends with exit code 255

Cloning the instance I ran into this weird error. Was not sure what to do but after learning my lesson I dug through the error logs after seeing this in the adcfgclone log file. START: Creating new WLS domain. Running /u03/APPLYES/YES/fs2/FMW_Home/oracle_common/bin/pasteConfig.sh -javaHome /u03/APPLYES/YES/fs2/EBSapps/comn/util/jdk64 -al /u03/APPLYES/YES/fs2/EBSapps/comn/clone/FMW/WLS/EBSdomain.jar -tdl /u03/APPLYES/YES/fs2/FMW_Home/user_projects/domains/EBS_domain_YES -tmw /u03/APPLYES/YES/fs2/FMW_Home -mpl /u03/APPLYES/YES/fs2/EBSapps/comn/clone/FMW/WLS/plan/moveplan.xml -ldl /u03/APPLYES/YES/fs2/inst/apps/YES_erpapyes/admin/log/clone/wlsT2PApply -silent true -debug true -domainAdminPassword /u03/APPLYES/YES/fs2/EBSapps/comn/clone/FMW/tempinfo.txt Script Executed in 1903 milliseconds, returning status 255 ERROR: Script failed, exit code 255 Dig a bit deeper into the log files cd /u03/APPLYES/YES/fs2/inst/apps/YES_erpapyes/admin/log/clone/wlsT2PApply cat CLONE2016-01-10_04-37-

Error during rapid clone on pasteBinary.sh, exit code 255

I needed to run a clone and was running into a really head scratcher. As is Oracle\'s way they sometimes enjoy giving us DBA's a bit of detective work to do. As usual I kept knocking my head into various brick walls instead of tracking back through the logs. Eventually I came up with the problem Start to configure the run filesystem. You can do a dualfs from AD-TXK Delta 7 but for now I just needed to get this up and running: perl adcfgclone.pl appsTier START: Creating FMW Home. Running /u03/APPLUAT/UAT/fs1/EBSapps/comn/clone/FMW/ pasteBinary.sh -javaHome /u03/APPLUAT/UAT/fs1/EBSapps/comn/util/jdk64 -al /u03/APPLUAT/UAT/fs1/EBSapps/comn/clone/FMW/FMW_Home.jar -tl /u03/APPLUAT/UAT/fs1/FMW_Home -invPtrLoc /etc/oraInst.loc -ldl /u03/APPLUAT/UAT/fs1/inst/apps/UAT_erpapp05/admin/log/clone/fmwT2PApply -silent true -debug true -executeSysPrereqs false Script Executed in 21933 milliseconds, returning status 255 ERROR: Script failed, exit code 255 Oracle has left me a cryptic