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-11PM.log

Failed to initialize the application 'EBSDataSource' due to error weblogic.application.ModuleException after FNDCPASS apps change

Started testing password changes in our clone environments. Weblogic seems to love throwing you curve balls and when I changes the apps password with the below:
FNDCPASS apps/$APPS_PASS 0 Y system/system SYSTEM APPLSYS $APPS_PASS
I was not able to start the weblogic managed servers. A look in the log an I found this:

weblogic.application.ModuleException:
        at weblogic.jdbc.module.JDBCModule.prepare(JDBCModule.java:327)
        at weblogic.application.internal.flow.ModuleListenerInvoker.prepare(ModuleListenerInvoker.java:199)
        at weblogic.application.internal.flow.DeploymentCallbackFlow$1.next(DeploymentCallbackFlow.java:517)
        at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
        at weblogic.application.internal.flow.DeploymentCallbackFlow.prepare(DeploymentCallbackFlow.java:159)
        at weblogic.application.internal.flow.DeploymentCallbackFlow.prepare(DeploymentCallbackFlow.java:45)
        at weblogic.application.internal.BaseDep…