› Fóruns › Banco de dados Oracle › URGENTE – LOCK de sessões › URGENTE – LOCK de sessões
Graça e Paz Juracy! Tudo bom?
*Segue algumas orientações para evitar/eliminar esses lock’s:
1º – Verifique junto ao desenvolvedor da ferramenta se o usuário do banco utilizado pela aplicação possui limite de tempo de transação configurado e se a instrução está comitando normalmente. Pois ao realizar esses ‘2 procedimentos’ o usuário da aplicação pode está realizando algum DML/Procedure que bloqueia tabelas/registros importantes para outras sessões, e se não for bem configurado o tempo limite de transação na aplicação/commit os dados alterados poderão correr o risco de não comitar em um tempo hábil e o oracle irá mantê-los bloqueados até o momento do commit. Gerando assim lock’s e até picos no banco.
2º – Para localizar as últimas instruções de um determinado usuário do banco, você pode utilizar a view V$SQLAREA:
SELECT SQL_TEXT “QUERY”,SQL_ID,PARSING_SCHEMA_NAME “USUARIO”,MODULE “PROGRAMA”,EXECUTIONS “EXECUÇÕES”
,FIRST_LOAD_TIME “PRIMEIRA CARGA”, LAST_LOAD_TIME “ULTIMA CARGA” FROM V$SQLAREA
WHERE PARSING_SCHEMA_NAME = ‘NOME_DO_USUÁRIO’
3º – Ou para localizar a query corrente de um usuário:
SELECT T.SQL_TEXT
FROM V$SQLTEXT T, V$SQLAREA A
WHERE (A.ADDRESS, A.HASH_VALUE) IN
(SELECT SQL_ADDRESS, SQL_HASH_VALUE
FROM V$SESSION
WHERE USERNAME LIKE ‘NOME_DO_USUARIO’)
AND A.HASH_VALUE = T.HASH_VALUE
ORDER BY T.PIECE
4º – E para localizar o usuário que está gerando os locks:
SELECT BLOCKING_INSTANCE,BLOCKING_SESSION,SID,SERIAL#,USERNAME,OSUSER,MACHINE
FROM V$SESSION WHERE BLOCKING_SESSION IS NOT NULL
—
Grande abraço,
Fica com Deus!
Antonio Campos