ORA-00060: 리소스를 기다리는 동안 교착 상태가 감지됨
Oracle 10g을 호스팅하는 AIX 서버에서 Nohup으로 병렬로 실행되는 일련의 스크립트가 있습니다.이 스크립트는 다른 사용자가 작성한 것이며 동시에 실행됩니다.모든 스크립트가 테이블에서 업데이트를 수행하고 있습니다.오류가 발생했습니다.
ORA-00060: 리소스를 기다리는 동안 교착 상태가 감지됨
이것을 검색해보니, http://www.dba-oracle.com/t_deadly_perpetual_embrace_locks.htm .
스크립트가 동일한 테이블에 대해 동시에 업데이트를 수행하더라도 스크립트는 다음과 같이 결정된 테이블의 서로 다른 레코드에 대해 업데이트를 수행합니다.WHERE
레코드가 중복되지 않는 절입니다.
그래서 이것이 오류를 일으켰을까요?
테이블에서 업데이트가 수행되는 위치에 관계없이 이 오류가 발생합니까?
항상 테이블에서 동시 업데이트를 피해야 합니까?
이상하게도 나는 nohup.out 로그에서도 발견했습니다.PL/SQL successfully completed
위의 인용된 오류 후에
즉, Oracle이 교착 상태에서 복구되어 업데이트를 성공적으로 완료했다는 의미입니까? 아니면 이러한 스크립트를 연속적으로 다시 실행해야 합니까?
저는 최근에 비슷한 문제로 어려움을 겪고 있었습니다.데이터베이스에 외부 키의 인덱스가 없는 것으로 나타났습니다.이로 인해 Oracle은 필요한 것보다 더 많은 레코드를 잠그게 되었고, 이로 인해 높은 동시성이 유지되는 동안 신속하게 교착 상태에 빠졌습니다.
여기 교착 상태를 해결하는 방법에 대한 많은 좋은 세부사항, 제안 및 세부사항이 포함된 훌륭한 기사가 있습니다. http://www.oratechinfo.co.uk/deadlocks.html#unindex_fk
행 잠금 이상의 데드록을 얻을 수 있습니다. 예를 들어, 다음을 참조하십시오.이 스크립트는 인덱스 블록과 같은 다른 리소스와 경쟁할 수 있습니다.
과거에는 병렬 처리를 통해 여러 인스턴스가 서로 가까운 블록에 영향을 줄 가능성이 적은 워크로드 부분에서 작업하도록 설계했습니다. 예를 들어, 큰 테이블을 업데이트하는 경우와 같이 병렬 처리를 사용하여 이 문제를 해결했습니다.MOD(n,10)
제가 쓰겠습니다.TRUNC(n/10)
즉, 각 노예가 연속적인 데이터 세트에서 작업했다는 것입니다.
물론 병렬 처리를 위해 작업을 분할하는 훨씬 더 나은 방법이 있습니다(예: DBMS_PARALL_EXECUTE).
PL/SQL이 성공적으로 완료된 이유를 잘 모르겠습니다. 스크립트가 예외를 처리하고 있는 것이 아닐까요?
저도 이 문제에 부딪혔습니다.저는 실제로 무슨 일이 일어났는지에 대한 기술적인 세부 사항을 알지 못합니다.그러나 제 상황에서 근본 원인은 Oracle 데이터베이스에 계단식 삭제 설정이 있었고 JPA/Hibernate 코드도 계단식 삭제 호출을 시도하고 있었기 때문입니다.그래서 저의 조언은 여러분이 무슨 일이 일어나고 있는지 정확히 알도록 하는 것입니다.
는 다중 ▁that▁had▁function다▁a▁i가 있는 함수를 테스트하고 있었습니다.UPDATE
내부진 내의 .IF-ELSE
블록들
한 모든 경로를 하고 있었기 에 '로 표를 했습니다.UPDATE
명령문을 사용할 수 있습니다.
는 그 가 바로 .UPDATE
진술;
추가했습니다.COMMIT;
에 UPDATE
테이블을 재설정할 때 사용한 설명으로 문제가 해결되었습니다.
그러니까, 조심해요, 문제는 기능 자체가 아니었어요...
언급URL : https://stackoverflow.com/questions/3074827/ora-00060-deadlock-detected-while-waiting-for-resource
'programing' 카테고리의 다른 글
인스턴트 기사 - 트윗 포함 (0) | 2023.06.21 |
---|---|
VBA 없이 Excel에서 두 어레이를 연결할 수 있는 방법이 있습니까? (0) | 2023.06.21 |
PowerShell의 여러 줄 댓글 (0) | 2023.04.22 |
'[DBContext의 이름]' 형식의 개체를 만들 수 없습니다.설계 시 지원되는 다양한 패턴에 대하여 (0) | 2023.04.22 |
스위프트: 가드렛 vs if let (0) | 2023.04.22 |