shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Shell Script


From: saghui
Subject: Shell Script
Date: Thu, 28 Feb 2002 11:22:37 -0000
User-agent: eGroups-EW/0.82

Olá.

Estou com um problema que espero que um de voces me possa ajudar.
:)

Eu tenho uma shell script (R.SH) que chama outras duas (R1.sh e 
R2.sh) para fazer o seguinte:

A primeira rotina (R1) chama o sql*loader para que este carregue uma 
tabela no oracle.

A segunda rotina (R2)tem instruções sql para fazer o rebuild dos 
índices da tabela que está a ser carregada na R1.

É aqui que começa o meu problema ... 
:(

O unix lança a instrução do rebuild (R2.sh) sem antes ter terminado o 
load dos dados na tabela (R1.sh).

Claro que depois não faz o rebuild porque a tabela oracle está a ser 
acedida pelo sql*loader....
:(

A única solução que eu arranjei foi executar o sql*loader, e depois 
pesquisar se existe algum processo 
sqldr a correr no unix e, enquanto existir, fazer sleeps de 300 
segundos !
Mas esta solução não me agrada muito ... porque vou ter de correr 
esta rotina várias vezes e, umas vezes 300 segundos é muito
tempo e, outras vezes, 300 segundos é pouco ... 

O que eu gostaria de saber é se existe algum parâmetro (tipo wait) 
que eu possa colocar na rotina unix de forma
a que a minha rotina R2.sh só seja executada quando a rotina R1.sh 
termine ...
Alguém sabe se existe ? Podem ajudar-me ?

Obrigada!


Teresa



As rotinas são estas:

### R.SH ###
DIR_KSH=/net/dev-utdad1/Desenv_UTDAD001/ksh
. $DIR_KSH/R1.sh
. $DIR_KSH/R2.sh


### R1.sh ###

DATE=`(date '+%Y%m%d')`
USER=tmc
PASSWORD=:)
BD=sa
DIR_INP=/net/dev-utdad1/Desenv_UTDAD001/inp/ff_tratados
FICH_CTL=dwtrmostl.ctl
FICH_DAT=dwtrmostl.dat
DIR_LOG=/net/dev-utdad1/Desenv_UTDAD001/logs


sqlldr $USER/$PASSWORD@$BD control=$DIR_INP/$FICH_CTL data=$DIR_INP/
$FICH_DAT log=$DIR_LOG/dwtrmostl.log bad=$DIR_LOG/dwtrmostl.bad 
DIRECT=TRUE SILENT=FEEDBACK  SKIP_INDEX_MAINTENANCE=TRUE SKIP=0 & 


i=1
while [ $i -ne 30 ] ; do

   if [ `ps -futmc | grep "sqldr" | grep -v "grep" | wc -l` != 0 ] 
   then

        sleep 300
        i=0
        echo dormi 300
   fi

   i=`expr $i + 1`
echo $i no while
done

#### R2.sh #####
spool /net/dev-utdad1/Desenv_UTDAD001/logs/DWTrmostlRebuildIndex.log
set timing on
ALTER TABLE dw_t_rmo_stl MODIFY PARTITION dw_t_rmo_stl_p1 REBUILD 
UNUSABLE LOCAL INDEXES;
spool off
exit



reply via email to

[Prev in Thread] Current Thread [Next in Thread]