Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
Solved

Executing PRO*C binary from crontab

Posted on 1998-10-14
9
321 Views
Last Modified: 2013-12-26
We have a Pro*C executable which we are trying to execute from the cron. But the process execution goes into an infinite loop. The crontab entry is as below :

05 12 * * 0-6 /oracle/autopo

The Pro*C binary should be run at 12:05 a.m., do the needful and exit. But instead no updations take place and the process keeps on running forever.
0
Comment
Question by:vaid
  • 3
  • 2
  • 2
  • +2
9 Comments
 

Author Comment

by:vaid
ID: 1293694
Pro*C is an Oracle 7.1 Product.
0
 
LVL 2

Expert Comment

by:seedy
ID: 1293695
Typical Pro*C executables need a lot of environment variables (like, ORACLE_HOME, ORACLE_SID, etc) need to be set to function correctly.  Normally they are set from your shell start up files like .profile and so the program will work fine.

But when you run any executable from the cron, they are run directly - no shell is run.  This may be the problem. Create a shell script as below:

export ORACLE_HOME=...
export ORACLE_SID=...
.
/oracle/autopo
.

Then call the script from the crontab as

05 12 * * 0-6 /oracle/autopo.sh

(I am assuming that the shell script is named as autopo.sh)
0
 
LVL 2

Expert Comment

by:seedy
ID: 1293696
Oops!  You may have to have the cron entry as

05 12 * * 0-6 /usr/bin/ksh /oracle/autopo.sh

0
Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

 
LVL 2

Expert Comment

by:seedy
ID: 1293697
Again, I spoke little too soon - without verifying.  Cron runs all commands using /usr/bin/sh. with a limited environment variables set.  
0
 
LVL 2

Expert Comment

by:kellyjj
ID: 1293698
Seedy  

I think that the using a shell script is still the best way to go.  that way he can make sure all the env he needs is properly shet.  
0
 
LVL 1

Expert Comment

by:vulkanr
ID: 1293699
i agree with seedy and kellyjj,
probably the user's default shell is not "sh" but "csh" or
"tcsh" and therefore, when it logins , the .cshrc runs.

however, cron runs with "sh" so that .cshrc will not be run.
you should either make a script to run the program or change
the program so it will "putenv" the needed variable as it starts.
0
 

Accepted Solution

by:
jbarsug earned 50 total points
ID: 1293700
Try this shell:

# shell program /export/home/CRONUSER/autopo.sh
set -ua

# path per 'env'

PATH=/usr/bin::/opt/contrib/bin:/opt/local/bin:/opt/SUNWspro/bin:/usr/ccs/bin:/usr/ucb:/usr/bin/nsr/:.:/opt/oracle/product/7.3.4/bin

# go to cron user home
cd /export/home/"YOURUSERNAME"

# define other env ; I changed umask to overide system defaults

umask 000
PATH=$PATH:.

# insert your SID and oracle stuff
ORACLE_SID=XXXXX
ORAENV_ASK=NO
 oraenv
SQLPATH=/opt/local/sql
LD_LIBRARY_PATH=/usr/dt/lib:/usr/openwin/lib

# run autopo executable
cd /oracle
 autopo

------------------- Crontab

05 12 * * 0-6 ${HOME}/autopo.sh 1>/dev/null 2>/dev/null

0
 

Expert Comment

by:jbarsug
ID: 1293701
a few dots and spaces didn't cut and paste  like dot space oraenv
and dot space autopo but you get the idea
0
 

Author Comment

by:vaid
ID: 1293702
I have seen jbarsug's answer in my mail, but have not been able to try it out. But, I have been able to find a solution to my problem after great R&D. The solution is :-
             1) I am executing the Pro*C binary from within a shell
             2) I have exported the required Oracle environment
                variables within the shell.
             3) After export I am executing the binary using the
                 following command :-
                 su oracle "-c /oracle/autopo -9 -u"
                 exit
Through the above command the execution from crontab is perfect.
Thanks,
Vaid
0

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Include multiple hostnames in this command? 3 55
Separate into files by filename 12 87
WinWaitActive parameters 12 31
dog bark java program 15 105
Here is how to use MFC's automatic Radio Button handling in your dialog boxes and forms.  Beginner programmers usually start with a OnClick handler for each radio button and that's just not the right way to go.  MFC has a very cool system for handli…
Exception Handling is in the core of any application that is able to dignify its name. In this article, I'll guide you through the process of writing a DRY (Don't Repeat Yourself) Exception Handling mechanism, using Aspect Oriented Programming.
This video will show you how to get GIT to work in Eclipse.   It will walk you through how to install the EGit plugin in eclipse and how to checkout an existing repository.
This video shows how to quickly and easily add an email signature for all users on Exchange 2016. The resulting signature is applied on a server level by Exchange Online. The email signature template has been downloaded from: www.mail-signatures…

807 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question