네트워크 중단은 DB 링크를 통해 저장된 프로 시저 쿼리를 원인으로 영원히 교수형을 일으 킵니다.

StackOverflow https://stackoverflow.com/questions/331114

문제

WAN을 통해 쿼리 원격 데이터베이스를 지원하는 여러 저장된 절차. 네트워크는 때때로 감소하지만, 최악의 상황은 절차가 실패했으며 다시 시작해야했습니다.

지난 몇 주 동안 그것은 불길한 회전을했습니다. 절차가 실패하는 대신 더 이상한 잠긴 상태에 매달려 있습니다. 그들은 오라클 내부에서 죽일 수 없으며 절차의 다른 사본을 실행하려는 시도도 있습니다. 우리가 찾은 유일한 해결책은 OS에서 "킬 -9"로 불쾌한 절차를 죽이는 것입니다. 이러한 절차 중 일부는 몇 달, 심지어 몇 년 동안 변경되지 않았으므로 DB 또는 DB 구성의 근본 원인이 의심됩니다.

문제를 해결하기 위해 우리가 할 수있는 일에 대한 아이디어가 있습니까? 또는 PL/SQL은 프로그램 적으로 처리 할 수있는 예외를 만들 수 있도록 코드에 추가 할 수있는 타임 아웃 메커니즘을 가지고 있습니까?

도움이 되었습니까?

해결책 2

우리는 이것이 일어난 원인을 결정할 수 없었습니다. 우리는 그것이 2008 년 10 월 누적 패치에서 결함이라고 생각합니다. 아마도 고정 된 나중에 패치 일 것입니다. 그것은 몇 달 동안 일어나지 않았으며 (우리는 네트워크 중단을 겪었습니다) 문제가 사라 졌기를 바랍니다.

다른 팁

어떤 데이터베이스 버전? SQL을 실행하거나 PL/SQL로 갇혀 있습니까? 최근에 예외 처리를 최근에 추가 한 사람이 있습니까? 9IR2에서 우리는 대신 전화 루틴에 대한 예외를 제기하거나 모든 예외를 포착하고 계속 실행해야한다고 들었습니다 (기본적으로 일부는 실패하더라도 작업의 모든 항목을 처리하려고 시도합니다). 우리는 필연적으로 일자리가 SQL이 실패하여 무한 루프에 갇히고 예외 핸들러에 갇히고 다시 시도했습니다. 그리고 다른 사람들이 '당신의 세션이 죽었습니다'예외를 발견했을 때 그들은 죽일 수 없었습니다. 후자는 10G에서 바뀌 었다고 생각하여 예외가 잡히지 않았다고 생각합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top