2009-10-16 10 views
1

배경 : Oracle 데이터베이스를 쿼리하는 ASP.NET으로 작성된 웹 서비스를 호출하고 있습니다. 다른 응용 프로그램보다 먼저 사용했기 때문에 웹 서비스 자체가 작동한다는 것을 알고 있습니다. 그래서 Visual Studio에서 'DEV'웹 서비스에서 테스트를 위해 동일한 웹 서비스의 프로덕션 구성 버전을 가리 키도록 앞뒤로 전환 한 웹 애플리케이션이 있습니다. 난 항상 서비스 호출 예외가 문제가 'DEV'구성 웹 서비스입니다 포인팅 없지만, 생산 버전을 호출 :웹 서비스에서 ORA-12571 오류 (TNS : 패킷 작성기 오류)가 의미하는 것은 무엇입니까?

SoapException was unhandled by user code 
Server was unable to process request. ---> could not execute query 
[ SELECT this_.FIELD1 as FIELD1_18_0_, this_.FIELD2 as FIELD12_18_0_ FROM ABC.TABLE_A this_ WHERE this_.FIELD1 like :p0 ORDER BY this_.FIELD1 asc ] 
Positional parameters: #0>00073% 
[SQL: SELECT this_.FIELD1 as FIELD1_18_0_, this_.FIELD2 as FIELD12_18_0_ FROM ABC.TABLE_A this_ WHERE this_.FIELD1 like :p0 ORDER BY this_.FIELD1] ---> ORA-12571: TNS:packet writer failure 

을 나는 적절한 데이터베이스에 대해 SQL 쿼리 (절단을 달리고에서 바로 붙여 넣기 예외 메시지) 및 쿼리가 예상 된 데이터와 함께 돌아 왔습니다. 업데이트 및 웹 서비스 참조를 "서비스 참조"(.NET 3.0 이상) 및 "웹 참조"(이전 .NET 방식) 모두로 다시 추가하고 두 가지 모두 동일한 오류가 발생했습니다.

질문 : 웹 서비스의 컨텍스트에서 "ORA-12571 : TNS : packet writer failure"오류의 의미는 무엇입니까? 오라클 오류 번호를 찾는 것은 "느슨한 케이블 연결"또는 "IP 주소 충돌"과 같은 매우 모호한 가능한 원인을 제공합니다. 나는 다른 응용 프로그램이 현재 해당 웹 서비스를 성공적으로 사용하고 있기 때문에 이들 중 어느 것도 아닙니다. 어쩌면 어떤 종류의 구성 오류, 또는 뭔가 더 미묘한? 이 웹 서비스와 관련된 Oracle 오류 번호를 본 사람은 누구입니까?

+0

아마도 도움이되는 링크 : http://www.cryer.co.uk/brian/oracle/ORA12571.htm –

+0

네가 처음 발견 한 링크였습니다. "느슨한 케이블 연결"과 "IP 주소 충돌 "에서 토끼 흔적에 대한 답변. –

답변

1

호출이 ws 클라이언트에서 ws 서버로 oracle 데이터베이스로 이동합니다.

오류는 데이터베이스에서 생성 된 ORA 오류입니다. 그래서 문제는 아마도 ws 서버와 데이터베이스 사이에 있습니다.

"적절한 데이터베이스에 대한 SQL 쿼리"를 실행할 때 웹 서버에서 수행 했습니까? 그렇지 않으면 당신은 그것을 시도 할 수 있습니다. 동일한 연결 구성을 사용하고 있는지 확인하십시오.

편집 아래의 주석 사항에 따라

, 진짜 문제는 드라이버 불일치이었다.

+0

이것은 실제 솔루션에 가장 가깝고 올바른 경로로 생각하게 만듭니다. 실제 문제는 프로덕션 서버의 Oracle 드라이버가 Oracle 8.x 드라이버 일 뿐이었지만 웹 서비스가 통신을 시도한 데이터베이스는 Oracle 9.2 데이터베이스였습니다. 따라서 데이터베이스 버전이 일치하지 않으면 ORA-12571 오류가 발생할 수 있습니다.가능한 원인으로 드라이버 버전 불일치를 포함하도록 답안을 편집하려는 경우 향후 유사한 사람을 찾는 데 도움이 될 수 있습니다. :-) –

+2

다른 누구도이 문제를 놓치지 않는 경우를 대비하여 몇 가지 추가 정보. 위의 수정 (Oracle 드라이버를 9.2로 업데이트)은 "테스트"서버에서 도움이되었지만 프로덕션 서버를 수정하지 않았습니다. 우리는 ORM 솔루션으로 NHibernate를 사용하고 있으며 결국 테스트 서버와 프로덕션 서버에는 .NET의 다른 버전 (.NET 3.5 SP1과 .NET 3.5 SP/없음 SP)이 있음을 발견했습니다. 우리는 prod 서버를 .NET 3.5 SP1로 업데이트했습니다. 문제는 그곳에서 사라졌습니다. 짧은 이야기 : (NHibernate를 사용하는 웹 서비스) Oracle을 9.2로, .NET을 3.5 SP1로 업데이트해야했습니다. –

1

이것은 웹 서비스 대화 상자에서 db와 분명히 동일하며 w/s 호출자와 완전히 독립적이어야하므로 가정을 더 자세히 검토하는 것이 좋습니다.

w/s 호출이이 특정 예외를 생성하는 경우 다른 모든 호출에 대해 그렇게해야하므로 웹 서비스를 성공적으로 사용하는 '다른 응용 프로그램'이 단순히 동일한 코드를 실행하지 않거나 외부 요인 놀 때.

어느 쪽이든 그것은 서비스가 등록되거나 호출되는 방법과 관련이 없습니다.

+0

아하, 당신은 대단히 정확합니다! 클라이언트가 웹 서비스에 대해 잘못 구성되었다고 생각했지만 실제 문제는 웹 서비스 자체가 오라클과 올바르게 통신하지 못했기 때문입니다. –

관련 문제