Se você quiser apenas impedir que qualquer outra sessão modifique os dados, você pode emitir
LOCK TABLE whatever
/
Isso impede que outras sessões atualizem os dados, mas não podemos impedir que outras pessoas os leiam.
Observe que no Oracle esse bloqueio de tabela raramente é necessário, pois o Oracle opera uma política de consistência de leitura. O que significa que se executarmos uma consulta que leva quinze minutos para executar, a última linha retornada será consistente com a primeira linha; em outras palavras, se o conjunto de resultados tivesse sido classificado na ordem inversa, ainda veríamos exatamente as mesmas linhas.
editar
Se você deseja implementar uma fila (sem realmente usar o funcionalidade integrada de enfileiramento avançado ) então
SELECT ... FOR UPDATE
é o caminho a seguir. Essa construção permite que uma sessão selecione e bloqueie uma ou mais linhas. Outras sessões podem atualizar as linhas desbloqueadas. No entanto, implementar uma fila genuína é bastante complicado, a menos que você esteja usando 11g. É apenas na versão mais recente que a Oracle tem suportado o SKIP LOCKED
cláusula. Saiba mais
.