Re: cannot spool the mounted standby database through cron job shell script. Any other suggestions?

  • From: Mayen.Shah@xxxxxxxxxx
  • To: sundarmahadevan82@xxxxxxxxx
  • Date: Tue, 28 Jun 2011 10:54:16 -0400

Hi Sundar,

Glad to know that your issue is resolved, but I am curious why does it 
matter?

Thanks
Mayen 



From:   "sundar mahadevan" <sundarmahadevan82@xxxxxxxxx>
To:     Oracle-L@xxxxxxxxxxxxx
Date:   06/27/2011 04:29 PM
Subject:        Re: cannot spool the mounted standby database through cron 
job shell script. Any other suggestions?
Sent by:        oracle-l-bounce@xxxxxxxxxxxxx



Hi All,
changing sqlplus -s /nolog << EOF to "$ORACLE_HOME"/bin/sqlplus -s /nolog 
<< EOF did the trick. Many Thanks for all your help. I am very happy to be 
part of this list. I was making sure that i set my environment right but 
never thought that the complete path of using sqlplus would do the trick. 
I will include the complete path of sqlplus from now on. Good learning.

On Mon, Jun 27, 2011 at 4:21 PM, Guillermo Alan Bort <cicciuxdba@xxxxxxxxx
> wrote:
Just to see what is happening, please do the following:

1: modify the cron entry to 
40 15 * * * /app/oracle/sm/test.sh invest1 > > <full_path>/<name>.log 2>&1

2: add set -x at the top of the script (right after #!/bin/bash), this 
will set debug mode.

then post all the logs.

cheers




Alan.-



On Mon, Jun 27, 2011 at 4:46 PM, sundar mahadevan <
sundarmahadevan82@xxxxxxxxx> wrote:
Hi All,
Thanks for the response. Here is the complete script. I did set the 
oracle_sid and oracle_home. There are no error messages. The spool file 
does not get created. If i run it from command prompt, i am able to get 
the spool file created. I tested this on 11gse1(linux) as well as 10gr2 
EE(AIX). Also i tested this on a open database and even it does not create 
the file. So this has nothing to do with the status of the database. Can 
someone try it out for me and let me know if you are facing the same 
issue. I have all permissions to write/create files on the directory.

This is how my cronjob looks: 40 15 * * * /app/oracle/sm/test.sh invest1

#!/bin/bash
#sqplus will return last archive log applied result to the screen if 
manually run

SCRIPT_DIR=/u01/app/oracle/admin/escenic/standby
FULL_LOG_NAME=${SCRIPT_DIR}/test.log

export TARGET_SID="$1"
export TARGET_SID=`echo ${TARGET_SID} | sed -e 's/ //g'`
export TARGET_SID=`cat /etc/oratab | grep -i "${TARGET_SID}:"  | grep -v 
"^#" | cut -d : -f 1`
export ORACLE_SID=${TARGET_SID}
export ORACLE_HOME=`cat /etc/oratab | grep ${TARGET_SID}: | grep -v "^#" | 
cut -d : -f 2`

echo "OS->${ORACLE_SID} OH->${ORACLE_HOME}" >> ${FULL_LOG_NAME}
cd ${SCRIPT_DIR}
echo "PWD"`pwd` >> ${FULL_LOG_NAME}
echo "" >> ${FULL_LOG_NAME}

sqlplus -s /nolog << EOF
set head off
connect / as sysdba
spool abcd.log
select max(sequence#) max_seq from v\$log_history;
spool off
quit
EOF


cat test.log
OS->escenic OH->/u01/app/oracle/11gse1
PWD/u01/app/oracle/admin/escenic/standby


On Mon, Jun 27, 2011 at 2:48 PM, Bill Zakrzewski <bill@xxxxxxxxxxxx> 
wrote:
What is the exact error you are getting?

On Jun 27, 2011, at 2:10 PM, sundar mahadevan wrote:

> Hi All,
> Greetings. I have a standby in mount state. I would like to query the 
latest archive log applied on standby (in mount state) to apply the 
archive logs from primary with a cron job shell script. When i query 
"select max(sequence#) from v\$log_history;" from a shell script it works. 
But if i set it up as cron job as below, it does not work. I cannot assign 
the output to a shell variable since the database is not open and it would 
crap out. Any other suggestions? And the reason for this behaviour? Thanks 
a lot in advance.
>
> test.sh
> #!/bin/bash
> sqlplus -s /nolog << EOF
> set head off
> connect / as sysdba
> spool last_applied_on_standby.log
> select max(sequence#) from v\$log_history;
> spool off
> quit
> EOF




Other related posts: