Temos um script ksh que copia arquivos de um diretório NAS. Esses arquivos são gerados por meio de um procedimento armazenado do Oracle usando UTL_FILE.put_line
e UTL_FILE.fclose
.
A questão é que temos uma verificação no script ksh da seguinte forma:
if [[ -s $download_file ]] then
cp $download_file $processdir
fi
Estamos com problemas em que os arquivos que aparecem no $processdir
são inesperadamente de tamanho zero. Suspeitávamos que poderia estar relacionado ao UTL_FILE.fclose
e à liberação do arquivo, mas nossos testes não confirmaram isso.
Para testar, confirmamos que o arquivo gerado pelo procedimento armazenado do Oracle não contém conteúdo (isto é, comprimento zero) até que o UTL_FILE.fclose
seja executado. Ainda assim, apesar disso, a if
check acima funciona conforme o esperado em nossos testes.
Observe que também consideramos as discrepâncias entre o bloqueio de arquivos, já que esses são sistemas de arquivos diferentes. O procedimento armazenado do Oracle grava em um diretório do Windows montado no sistema Linux.
Há algo errado em esperar usar essa if
check específica ou outro pensamento sobre por que essa cópia de arquivo é bem-sucedida?
Encontrei uma postagem no blog sobre "alocação atrasada" que eu estou querendo saber se poderia ser o culpado?
Por que vale a pena, estes são os dados do comando cat /proc/mounts
nfs rw,relatime,vers=3,rsize=65536,wsize=65536,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=10.1.249.30,mountvers=3,mountport=1234,mountproto=udp,local_lock=none,addr=10.1.249.30 0 0