Hi All,
Can you please let me know what I missed in the below function? Whenever I try to execute the script i am getting
syntax error at line 101 : `fi' unexpected
Function is
function DELNWE5O {
export ORACLE_HOME=/ora00/app/oracle/product/11.2.0/grid_1
export ORACLE_SID=+ASM
export PATH=${ORACLE_HOME}/bin:${PATH}
DG=`sqlplus -s '/as sysasm' <<EOF
set pagesize 0 feedback off verify off heading off echo off;
select NAME from v\$asm_client ac ,v\$asm_diskgroup ad where ac.GROUP_NUMBER=ad.GROUP_NUMBER and ac.INSTANCE_NAME like 'nwe5o' and NAME like '%ARCH3';
exit;
EOF`
export ORACLE_HOME=/ora01/app/oracle/product/11.2.0/db_1
export ORACLE_SID=$ORACLE_SID
export PATH=${ORACLE_HOME}/bin:${PATH}
LIBPATH=${ORACLE_HOME}/lib
sqlplus -s '/as sysdba' <<EOF
SET PAGES 0 LINES 175 HEAD OFF FEED OFF
spool /users/oracle/Mani/delete_list_ods_nwe5o.sql
SELECT --+ NO_MERGE(C)
'ALTER DISKGROUP ${DG} DROP FILE '''||R.NAME||'''; '
FROM DBA_REGISTERED_ARCHIVED_LOG R, DBA_CAPTURE C, V\$ASM_FILE F
WHERE R.CONSUMER_NAME = C.CAPTURE_NAME
AND R.NEXT_SCN < C.REQUIRED_CHECKPOINT_SCN
AND F.FILE_NUMBER = SUBSTR(R.NAME,INSTR(R.NAME,'.',1,1)+1,INSTR(R.NAME,'.',1,2)-INSTR(R.NAME,'.',1,1)-1)
AND F.INCARNATION = SUBSTR(R.NAME,INSTR(R.NAME,'.',1,2)+1);
spool off
EXIT
EOF
}
I call the above function from a while loop. The below code is not the complete one, i took a portion from the while loop
if [[ ! -z ${STREAMS_ODS_DB_LIST[@]} ]]; then
echo ${STREAMS_ODS_DB_LIST[@]}
for ORACLE_SID in `echo ${STREAMS_ODS_DB_LIST[@]}`; do
if [[ `ps -ef | grep "ora_smon_${ORACLE_SID}" | grep -v 'grep' | wc -l |awk '{ print $1 }'` != 0 ]]; then
ORAENV_ASK=NO
export ORACLE_HOME=/ora01/app/oracle/product/11.2.0/db_1
export ORACLE_SID=$ORACLE_SID
export PATH=${ORACLE_HOME}/bin:${PATH}
LIBPATH=${ORACLE_HOME}/lib
echo "Deleting Logs For SID : ${ORACLE_SID} ...."
if [[ ${ORACLE_SID} == "nwe5o" ]]
then
DELNWE5O
fi
sqlplus -s '/as sysdba' <<EOF
SET PAGES 0 LINES 175 HEAD OFF FEED OFF
spool /users/oracle/Mani/delete_list_ods.sql
SELECT --+ NO_MERGE(C)
'ALTER DISKGROUP ${ORACLE_SID}ARCH3 DROP FILE '''||R.NAME||'''; '
FROM DBA_REGISTERED_ARCHIVED_LOG R, DBA_CAPTURE C, V\$ASM_FILE F
WHERE R.CONSUMER_NAME = C.CAPTURE_NAME
AND R.NEXT_SCN < C.REQUIRED_CHECKPOINT_SCN
AND F.FILE_NUMBER = SUBSTR(R.NAME,INSTR(R.NAME,'.',1,1)+1,INSTR(R.NAME,'.',1,2)-INSTR(R.NAME,'.',1,1)-1)
AND F.INCARNATION = SUBSTR(R.NAME,INSTR(R.NAME,'.',1,2)+1);
spool off
EXIT
EOF
I tried just putting return 0 in the function and the script runs. So i believe the issue in the function code.
function DELNWE5O {
return 0
}
Please let me know your suggestion.
Thanks,
Mani