Eduardo,
   Talvez na sua base de desenvolvimento só você esteja usando?
   Quando está em produção, o primeiro usuário que roda o select, bloqueia os 
registros. Se fizer uma query que volta vários registros, vai bloqueando todos 
eles.
   O segundo usuário que tentar consultar a mesma coisa vai ter esse 
comportamento de "travar".
   Para liberar o lock tem que fazer o rollback ou commit assim que for feita a 
próxima consulta ou fechada a tela, mesmo que não tenha sido feita nenhuma 
alteração (update). Ou seja, se o usuário fizer outra consulta, mesmo após 
fechar os cursores, as linhas consultadas anteriormente continuam bloqueadas.
   Existe o "select ... for update nowait", pode-se informar um tempo em 
segundos para esperar também, "select ... for update nowait 5" por exemplo. 
Esse em vez de travar vai retornar um erro, mas não deve resolver o seu 
problema ai.
   Você pode consultar a v$locked_object, v$lock, dba_blockers ou dba_waiters 
para ver os bloqueios, quais tabelas são e quais as sessões que estão 
bloqueando. O problema é que elas não vão indicar quais linhas das tabelas 
estão bloqueadas. Se seguir o caminho das transações ativas usando outras views 
se chega até o numero dos blocos, mas para achar as linhas não conheço outro 
meio além de fazer um "block dump" e analisar a "interested transaction list" 
no trace gerado, o que não é uma coisa simples de fazer.
Atc,
Luis Freitas

 

   

 On Tuesday, September 19, 2017 9:45 PM, "Eduardo Perdomo panc...@gmail.com 
[oracle_br]" <oracle_br@yahoogrupos.com.br> wrote:
 

     Obrigado pelo retorno.Eu uso o select for update, commit quando o usuário 
confirma e rollback quando cancela.Na minha base de desenvolvimento funciona 
normal, mas em produção o cliente/dba alega que o programa está travando um 
módulo especifico aleatóriamente.Qual select eu poderia verificar se deixei 
algum registro locado ao fechar o programa ?

On Tue, Sep 19, 2017 at 12:12 PM, Luis Freitas lfreita...@yahoo.com [oracle_br] 
<oracle_br@yahoogrupos.com.br> wrote:

     Eduardo,
   Não trabalho com Delphi, mas as ferramentas de 4a geração usam duas formas 
de lock:
Lock otimista:
   Usa algum campo com o numero da alteração, e quando você tenta salvar um 
registro alterado em outro lugar ou outra sessão, o provedor de dados retorna 
um erro. O lock é feito apenas entre a verificação do numero de alteração e o 
update dos dados, quando é disparada alguma ação de salvamento.
Lock pessimista:
   Faz o bloqueio no banco de dados, usando um comando "SELECT .... FOR UPDATE" 
ou coisa parecida. Outras sessões que tentem alterar algum registro lido irão 
"travar", como você está descrevendo.
   Se você está vendo esse travamento dentro da mesma instancia da aplicação, 
num mesmo computador, o provedor de dados que está usando no Delphi deve estar 
abrindo sessões de banco separadas para cada "modulo" que você está abrindo.
   Tem duas soluções para esse problema:
- Fazer o Delphi compartilhar uma sessão unica para todos os módulos, talvez 
haja alguma configuração no seu provedor de dados para isso. Você não mencionou 
se está usando o BDE, ou ODBC, ou outra coisa.
- Efetuar explicitamente um "commit" ou "rollback", o que irá liberar o lock no 
banco de dados. É preciso efetuar o commit ou rollback mesmo que você não tenha 
alterado dados. Pode ter alguma forma de fazer isso implicitamente também, com 
algum comando do provedor de dados.
Atc,
Luis Freitas  



 On Tuesday, September 19, 2017 5:32 AM, "Eduardo Perdomo panc...@gmail.com 
[oracle_br]" <oracle_br@yahoogrupos.com.br> wrote:
 

     Bom dia.
Alguém trabalha com Delphi?
Preciso de ajuda para entender como deslocar um registro, pois aparentemente 
estou conseguindo lockar, mas outros módulos estão travando devido ao lock. 
Algum problema na parte de liberar o registro. Posso remunerar se for o caso.
Me add no WhatsApp 21968458592.
Obrigado.   

      



-- 

Eduardo PerdomoConsultor de ImplantaçãoGrupo PC Sistemas - www.grupopc.com.br 
(21) 6845-8592pancary@gmail.comeduardo.perd...@pcinformatica.com.brBlog: 
eduardo.perdomo.nom.br  #yiv3381933495 -- #yiv3381933495ygrp-mkp {border:1px 
solid #d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv3381933495 
#yiv3381933495ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv3381933495 
#yiv3381933495ygrp-mkp #yiv3381933495hd 
{color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 
0;}#yiv3381933495 #yiv3381933495ygrp-mkp #yiv3381933495ads 
{margin-bottom:10px;}#yiv3381933495 #yiv3381933495ygrp-mkp .yiv3381933495ad 
{padding:0 0;}#yiv3381933495 #yiv3381933495ygrp-mkp .yiv3381933495ad p 
{margin:0;}#yiv3381933495 #yiv3381933495ygrp-mkp .yiv3381933495ad a 
{color:#0000ff;text-decoration:none;}#yiv3381933495 #yiv3381933495ygrp-sponsor 
#yiv3381933495ygrp-lc {font-family:Arial;}#yiv3381933495 
#yiv3381933495ygrp-sponsor #yiv3381933495ygrp-lc #yiv3381933495hd {margin:10px 
0px;font-weight:700;font-size:78%;line-height:122%;}#yiv3381933495 
#yiv3381933495ygrp-sponsor #yiv3381933495ygrp-lc .yiv3381933495ad 
{margin-bottom:10px;padding:0 0;}#yiv3381933495 #yiv3381933495actions 
{font-family:Verdana;font-size:11px;padding:10px 0;}#yiv3381933495 
#yiv3381933495activity 
{background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv3381933495
 #yiv3381933495activity span {font-weight:700;}#yiv3381933495 
#yiv3381933495activity span:first-child 
{text-transform:uppercase;}#yiv3381933495 #yiv3381933495activity span a 
{color:#5085b6;text-decoration:none;}#yiv3381933495 #yiv3381933495activity span 
span {color:#ff7900;}#yiv3381933495 #yiv3381933495activity span 
.yiv3381933495underline {text-decoration:underline;}#yiv3381933495 
.yiv3381933495attach 
{clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 
0;width:400px;}#yiv3381933495 .yiv3381933495attach div a 
{text-decoration:none;}#yiv3381933495 .yiv3381933495attach img 
{border:none;padding-right:5px;}#yiv3381933495 .yiv3381933495attach label 
{display:block;margin-bottom:5px;}#yiv3381933495 .yiv3381933495attach label a 
{text-decoration:none;}#yiv3381933495 blockquote {margin:0 0 0 
4px;}#yiv3381933495 .yiv3381933495bold 
{font-family:Arial;font-size:13px;font-weight:700;}#yiv3381933495 
.yiv3381933495bold a {text-decoration:none;}#yiv3381933495 dd.yiv3381933495last 
p a {font-family:Verdana;font-weight:700;}#yiv3381933495 dd.yiv3381933495last p 
span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv3381933495 
dd.yiv3381933495last p span.yiv3381933495yshortcuts 
{margin-right:0;}#yiv3381933495 div.yiv3381933495attach-table div div a 
{text-decoration:none;}#yiv3381933495 div.yiv3381933495attach-table 
{width:400px;}#yiv3381933495 div.yiv3381933495file-title a, #yiv3381933495 
div.yiv3381933495file-title a:active, #yiv3381933495 
div.yiv3381933495file-title a:hover, #yiv3381933495 div.yiv3381933495file-title 
a:visited {text-decoration:none;}#yiv3381933495 div.yiv3381933495photo-title a, 
#yiv3381933495 div.yiv3381933495photo-title a:active, #yiv3381933495 
div.yiv3381933495photo-title a:hover, #yiv3381933495 
div.yiv3381933495photo-title a:visited {text-decoration:none;}#yiv3381933495 
div#yiv3381933495ygrp-mlmsg #yiv3381933495ygrp-msg p a 
span.yiv3381933495yshortcuts 
{font-family:Verdana;font-size:10px;font-weight:normal;}#yiv3381933495 
.yiv3381933495green {color:#628c2a;}#yiv3381933495 .yiv3381933495MsoNormal 
{margin:0 0 0 0;}#yiv3381933495 o {font-size:0;}#yiv3381933495 
#yiv3381933495photos div {float:left;width:72px;}#yiv3381933495 
#yiv3381933495photos div div {border:1px solid 
#666666;min-height:62px;overflow:hidden;width:62px;}#yiv3381933495 
#yiv3381933495photos div label 
{color:#666666;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}#yiv3381933495
 #yiv3381933495reco-category {font-size:77%;}#yiv3381933495 
#yiv3381933495reco-desc {font-size:77%;}#yiv3381933495 .yiv3381933495replbq 
{margin:4px;}#yiv3381933495 #yiv3381933495ygrp-actbar div a:first-child 
{margin-right:2px;padding-right:5px;}#yiv3381933495 #yiv3381933495ygrp-mlmsg 
{font-size:13px;font-family:Arial, helvetica, clean, sans-serif;}#yiv3381933495 
#yiv3381933495ygrp-mlmsg table {font-size:inherit;font:100%;}#yiv3381933495 
#yiv3381933495ygrp-mlmsg select, #yiv3381933495 input, #yiv3381933495 textarea 
{font:99% Arial, Helvetica, clean, sans-serif;}#yiv3381933495 
#yiv3381933495ygrp-mlmsg pre, #yiv3381933495 code {font:115% 
monospace;}#yiv3381933495 #yiv3381933495ygrp-mlmsg * 
{line-height:1.22em;}#yiv3381933495 #yiv3381933495ygrp-mlmsg #yiv3381933495logo 
{padding-bottom:10px;}#yiv3381933495 #yiv3381933495ygrp-msg p a 
{font-family:Verdana;}#yiv3381933495 #yiv3381933495ygrp-msg 
p#yiv3381933495attach-count span {color:#1E66AE;font-weight:700;}#yiv3381933495 
#yiv3381933495ygrp-reco #yiv3381933495reco-head 
{color:#ff7900;font-weight:700;}#yiv3381933495 #yiv3381933495ygrp-reco 
{margin-bottom:20px;padding:0px;}#yiv3381933495 #yiv3381933495ygrp-sponsor 
#yiv3381933495ov li a {font-size:130%;text-decoration:none;}#yiv3381933495 
#yiv3381933495ygrp-sponsor #yiv3381933495ov li 
{font-size:77%;list-style-type:square;padding:6px 0;}#yiv3381933495 
#yiv3381933495ygrp-sponsor #yiv3381933495ov ul {margin:0;padding:0 0 0 
8px;}#yiv3381933495 #yiv3381933495ygrp-text 
{font-family:Georgia;}#yiv3381933495 #yiv3381933495ygrp-text p {margin:0 0 1em 
0;}#yiv3381933495 #yiv3381933495ygrp-text tt {font-size:120%;}#yiv3381933495 
#yiv3381933495ygrp-vital ul li:last-child {border-right:none 
!important;}#yiv3381933495 

   

Responder a