programing

Oracle Managed Data Access - 연결 요청 시간 초과 - 풀링

lastmoon 2023. 7. 26. 22:22
반응형

Oracle Managed Data Access - 연결 요청 시간 초과 - 풀링

저는 마침내 패배를 인정하고 도움을 요청합니다.저는 이 문제를 해결하기 위해 제가 생각할 수 있는 모든 것을 했지만, 제가 그것을 할 수 없는 것 같습니다.

저는 VS2010 C# Oracle 12c ODP와 함께 일하고 있습니다.NetManaged121012

관리되는 데이터 액세스 dll과 관리되지 않는 데이터 액세스 dll을 모두 사용하는 앱을 상속했습니다.오라클을 제거하기 전까지는 작동했습니다.그런 다음 64비트 시스템에 11g 클라이언트를 다시 설치했습니다.프레임워크 2에 대한 data access dll만 설치되어 있다는 것을 바로 알 수 있었지만, 어쨌든 계속했습니다.그런 다음 모든 oci와 oradll을 client_1 폴더에서 내 앱의 bin 디렉터리와 오라클로 복사했습니다.내 bin 디렉토리에도 DataAccess.dll이 있습니다.오라클도 복사했습니다.이 폴더에 ManagedDataAccess.dll이 있습니다.

데이터셋에서 아무것도 변경하지 않는 한 애플리케이션이 성공적으로 실행되었습니다.더 많은 데이터 세트를 만들어야 하는 경우를 제외하고는 이렇게 계속할 수 있었을 것입니다.새 데이터 집합을 추가하려고 할 때 데이터 원본 연결 마법사 드롭다운 목록이 비어 있었습니다.그런 다음 연결을 다시 생성하려고 시도했지만 을(를) 볼 수만 있었습니다.NetFramework D 제공업체.관리되는 공급자를 볼 수 없습니다."현재 선택된 데이터 공급자가 없습니다."라는 오류도 발생했습니다.

관리 공급자가 설치되지 않았기 때문이라고 생각하여 11g 클라이언트를 제거하고 64bit 12c 클라이언트를 설치한 후 관련 파일을 모두 앱의 빈에 복사했습니다.다음 행을 app.config 파일에 추가했습니다.

      <configSections>
    <section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess" />

  <system.data>
<DbProviderFactories>
  <remove invariant="Oracle.DataAccess.Client" />
  <remove invariant="Oracle.ManagedDataAccess.Client" />
  <add name="ODP.NET, Managed Driver" invariant="Oracle.DataAccess.Client"
         description="Oracle Data Provider for .NET, Managed Driver"
         type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />     
</DbProviderFactories>

이제 이전 데이터 원본 중 일부를 볼 수 있지만 "연결 요청 시간 초과됨" 메시지가 표시되어 데이터베이스에 연결할 수 없습니다.수동으로 새 연결을 만들 때 관리되지 않는 공급자와 연결할 수 있지만 연결 요청 시간 초과 오류가 발생합니다.

저는 정말로 한계에 다다랐고 밧줄을 사용하기 전에 신선한 눈을 해주면 정말 감사할 것입니다.

잘 부탁드립니다.

매니지드 드라이버로 전환한 후에도 동일한 문제가 발생했습니다.기본 드라이버와 관리 드라이버를 모두 사용하여 테스트 앱을 작성하기도 했습니다.결론적으로 관리되는 드라이버는 기본 드라이버보다 새 연결을 여는 데 훨씬 더 많은 시간이 필요합니다.우리에게 효과적인 해결책은 연결 문자열을 사용하여 큰 연결 제한 시간을 설정하는 것이었습니다.

<connectionStrings>
    <add name="ConnectionString" connectionString="data source=xxxx;user id=xxxx;password=xxxx;persist security info=false;Connection Timeout=120;" />

</connectionStrings>

mono 4.8에서 실행할 때 이 문제로 고통받는 사람이 있을 경우를 대비하여.동기화 버그가 있어 모든 연결이 사용되면 Oracle 클라이언트가 연결 풀을 확장할 수 없습니다. 버그 보기

Visual Studio에서 바로 연결된 창을 사용하여 테스트를 수행할 때 동일한 오류가 발생했습니다.우리가 코드를 정상적으로 실행할 때까지(즉시 창을 사용하지 않음) 한동안 정말 혼란스러웠고 문제가 사라졌습니다.따라서 Oracle Managed Data Access 및 Visual Studio의 바로 옆 창과 상호 작용하여 이러한 오류가 발생할 수 있습니다.

이것이 여러분 대부분에게 답이 되지 않을 것이라는 것을 알지만, 저는 이것이 누군가에게 유용하기를 바랍니다.

Oracle 출력 매개 변수를 확인하십시오.왜냐하면 제 애플리케이션도 같은 시나리오에 직면하고 있었기 때문입니다.

우리는 오라클 출력 파라미터를 Refcursor로 변경했습니다.아마도 이 해결책은 유용할 것입니다.

Oracle로 돌아갑니다.관리 데이터 액세스.Core.dll 버전 3.21.1

네임스페이스는 Oracle을 사용해도 동일합니다.관리 데이터 액세스.고객

언급URL : https://stackoverflow.com/questions/30955745/oracle-manageddataaccess-connection-request-timed-out-pooling

반응형