2012-02-28 2 views
-1

나는 Oracle에서 함수를 호출하는 수정 보고서를 가지고 있습니다. 이 함수는 뷰를 테이블 중 하나로서 선택하는 select를 사용합니다. 이 뷰는 다른 데이터베이스에 대한 다중 링크를 사용합니다 (뷰는 여러 쿼리의 합집합입니다). 이 함수가 실행될 때마다 뷰에 대한 쿼리가 실행되고 뷰를 생성하는 모든 링크가 enq- DX 경합 상태에있는 것처럼 보입니다.함수가 enq- DX 충돌을 야기 함

이 알려진 문제와 관련이 있습니까? http://surachartopun.com/2008/12/dbink-hangs-enq-dx-contention.html

물어 이유는 내 연구는 오라클의 다른 versiions에 연결하지만 내가 사용하고있는 사람의 모든 이제까지 일 10.2

+0

실제 증상은 무엇입니까? 보고서가 멈추거나 오류 메시지가 표시됩니까? – kevinsky

+0

크리스탈이 멈 춥니 다. 그러면 오라클 그리드에 들어가면 링크 프로세스가 enq- DX 경합에 있음을 알 수 있습니다. 이 함수는 pragma autonomous_transaction입니다. – user1023993

+0

설명은 어떻게 되가고 있는지를 어떻게 든 말하고 있습니다 : 설명에서 원격 선택에 대해 이야기하지만 의견에서 자율 트랜잭션에 대해 이야기합니까? 너는 완전한 묘사를 줄 수 있니? – steve

답변

0

있는이 방법이있는 경우에만이 문제가 발생해야 함을 표시하는 것이다? 그것은 일을하는 좋은 방법처럼 들리지 않습니다. 각 행을 처리 할 때 막대한 양의 왕복을 초래하는 함수를 상상할 수 있습니다.

다른 방법으로는 가능한 한 가장 큰 데이터 테이블에 함수를 넣고 해당 데이터베이스에서 처리를 유지하는 방법이 있습니다. 함수에서 필요한 것을 반환하십시오.

매일 아침 쿼리에서 원하는 데이터 집합을 나타내는 테이블을 만들고 Crystal를 사용하여 직접 쿼리 할 수 ​​있습니다. 저장 프로 시저 또는 고급 대기열을 사용하여 필요에 따라 데이터를 새로 고침하십시오.

새로 고치기를 사용하여 데이터베이스 소스 중 하나의 구체화 된보기가 다른 접근 방법이 될 수 있습니다.

편집 : 예, 데이터베이스 링크를 사용하면 리소스를 많이 사용하고 본 적이있는 문제의 원인이 될 수 있습니다. 이것은 이제까지 효과가 있었거나 해결책이 필요한 새로운 요구 사항이 있습니까? 변경된 사항을 사용하는 경우? 이것이 새로운 경우 나는 제안한 것처럼 다른 접근 방식을 겸허하게 제안합니다.

+0

문제없이 SQL 구문으로 개별 기능을 실행할 수 있습니다. 문제는 함수 내에서 선택의 일부로보기를 포함하지 않을 때 함수를 실행할 수 있습니다 (이 방법으로 내 기준을 일부 풀어 놓음). 나는 구체화 된 견해가 효과가있을 것이라고 생각한다. 조각들이 작동하지만 전체는 이상하지 않은 것 같습니다. 나는 링크가없는 뷰 (이것은 프로덕션이 아닌 dev에 있음)에 대해 실행하면 함수를 실행해도된다. 이 기능은 링크가 포함되지 않은 경우 매우 빠르게 실행되며 링크가 포함되어 있지 않은 경우 즉시 중지됩니다. – user1023993

관련 문제