Re: PART II: - Beyond a basic Oracle EXP/IMP shell script: Error Handling & Exit Status?

  • From: oracle@xxxxxxxxxxxx
  • To: cmarquez@xxxxxxxxxxxxxxxx
  • Date: Wed, 31 Aug 2005 11:53:46 -0400

Marquez, Chris wrote:

I think I get it.
The idea is to put conditional logic around the calling of (my) imp_script.sh?
I think that is what Ron is suggesting too?



yep - essentially you're stuffing the errorlevel of the last program that ran into a variable and then comparing that value - if it's 0, typically that implies that everything was ok. Well written programs exit with a non-zero errorlevel when there is a problem. Oracle's utilities exit with a non-zero errorlevel when things go wrong so you're safe there.



imp and exp are good candidates for this because you can automate the entire process (within reason) into a script and as long as the errorlevels are 0, AND as long as your logic for going from one process to the next is sound you'll be ok. The entire environmental maintenance here (several databases on several different servers) is 80% automated as cron jobs. Easy and simple - I find that the commenting parts of the scripts are the most tedious than the actual work being done - I write comments in scripts so that the receptionist up front could read it and have a basic understanding of the logic. Makes it simpler to delegate work to others because they can (hopefully) read the scripts and figure it out for themselves instead of requiring weeks of my time doing a bunch of hand-holding.



hope this helps

Chris Marquez
Oracle DBA


-----Original Message-----
From: oracle@xxxxxxxxxxxx [mailto:oracle@xxxxxxxxxxxx]
Sent: Wed 8/31/2005 11:37 AM
To: Marquez, Chris
Cc: oracle-l@xxxxxxxxxxxxx
Subject: Re: PART II: - Beyond a basic Oracle EXP/IMP shell script: Error Handling & Exit Status?




There's a million ways to do what you're wanting to do.  Here's some
cutesy things I do within bash scripts....   $? is your friend.

BCVStatus=0
/opt/emc/WideSky/V5.3.0/bin/symmir -g DBNAME verify DB1-DBNAME BCV ld
BCV-DBNAME -synched > /dev/null 2>&1
BCVStatus=$?
until [ "$BCVStatus" = 0 ]
do
        sleep 5;
        /opt/emc/WideSky/V5.3.0/bin/symmir -g DBNAME verify DB1-DBNAME
BCV ld BCV-DBNAME -synched > /dev/null 2>&1
        BCVStatus=$?;
done





Copious output for reading cron output after getting to the office...

echo "`/bin/date +%H:%M:%S` Export D_S tables"
$ORACLE_HOME/bin/exp / file=/e07/oracle/export/exp_das_$TSTAMP.dmp
TABLES=BLAH1,BLAH2
LOG=/d02/app/oracle/admin/DBNAME/adhoc/logs/exp_das_$TSTAMP.log
STATUS=$?
 if [ $STATUS -gt 0 ]; then
  echo "*** Export encountered errors - errorlevel $STATUS"
  echo "*** Export encountered errors - errorlevel $STATUS" |
/usr/ucb/mail -s "DBNAME refresh failed:  Export D_S encountered errors"
dba@xxxxxxxx
  exit 1
 fi
echo "`/bin/date +%H:%M:%S` Export D_S tables complete"




hope this helps






--
//www.freelists.org/webpage/oracle-l

Other related posts: