programing

오라올레디비로컬 시스템에 Oracle 제공자가 등록되어 있지 않습니다.

subpage 2023. 4. 4. 21:17
반응형

오라올레디비로컬 시스템에 Oracle 제공자가 등록되어 있지 않습니다.

XP에서 Windows 7로 이행한 지 얼마 되지 않았습니다.이 오류는 운영체제 전환과 관련이 있는 것 같습니다.기본적으로 대량의 데이터를 관리한 후 데이터베이스에 연결하여 테이블을 삽입/업데이트하는 .net 어플리케이션을 작성했습니다.

데이터베이스 연결 버튼을 누르면 로컬 머신에 오라클 프로바이더가 등록되어 있지 않다는 오류가 발생합니다.

이 문제를 어떻게 빨리 해결할 수 있는지 명확하고 단계적인 개요를 알려주시면 감사하겠습니다.

정확한 오류 메시지는 다음과 같습니다.

'OraOLEDB'Oracle.1' 제공자가 로컬 시스템에 등록되어 있지 않습니다.

64비트 Oracle 클라이언트를 Windows 7 64비트에 설치한 후에도 같은 문제가 발생하였습니다.나에게 효과가 있던 솔루션:

  1. 관리자 모드에서 명령 프롬프트 열기
  2. cd \oracle\product\11.2.0\client_64\BIN
  3. c:\Windows\system32\regsvr32.exe OraOLEDB11.dll

IIS에서도 같은 문제가 발생.

응용 프로그램 풀의 고급 구성에서 '32비트 응용 프로그램 사용' 옵션이 true로 설정되어 있는지 확인합니다.

  1. 내 컴퓨터를 오른쪽 클릭합니다.
  2. 속성을 클릭합니다.
  3. [시스템 상세 설정]을 클릭합니다.
  4. "환경 변수" 버튼을 클릭합니다.
  5. 시스템 변수 섹션에서 "PATH" 변수를 찾습니다.
  6. 하고 "PATH" 변수와 같이 합니다.;C:\oracle\product\10.2.0\client_1\bin

다음 테스트를 수행합니다.

명령 프롬프트를 열고 tnsping instance_name을 입력합니다.

instance_name은 연결할 인스턴스의 이름입니다(XE 데이터베이스인 경우 "tnsping xe" 사용).

OK가 반환되면 Der Wolf의 답변 단계를 따릅니다.정상적으로 돌아오지 않으면 Annjawn의 답변 절차를 따릅니다.

두 경우 다 해결됐어요.

Windows 64 비트를 사용하고 있는 경우는, 우선 oracle 드라이버 32 비트를 인스톨 하고 나서, 64 비트 드라이버를 인스톨 해 주세요.그것이 제가 하고 있는 일이고, 동작하고 있습니다.

'Platform Target'을 'x64'로 변경한 후에만 작동했습니다(Oracle 12c 64비트를 사용하는 것을 고려).

그러기 위해서, 다음과 같이 했습니다.

  1. 프로젝트 이름 오른쪽 클릭(일반적으로 왼쪽에 있는 솔루션 탐색기 패널에서)

  2. 새로 열린 창에서 '빌드' 클릭

  3. '플랫폼 타깃'을 '모든 CPU'에서 'x64'로 변경.

그것으로 문제가 해결되었다.

같은 문제가 발생했지만 해결방법은 Platform Target을 Any CPU로 유지하고 32bit 체크박스를 꺼야 합니다.선택을 해제한 후 공급자와의 연결을 열 수 있었습니다.

우선 32비트 끄기

수정에 몇 시간이 걸리고, 올바르게 인스톨 하지 않은 경우는, 현재의 버전을 언인스톨 해, Administrator여기에 이미지 설명 입력 로서 재인스톨 할 필요가 있습니다.

드라이버를 인스톨 한 아키텍처를 확인해 주세요.

Powershell을 32와 64(별도의 인스턴스)로 열고 부팅합니다.

# OLEDB-drivers
(New-Object System.Data.OleDb.OleDbEnumerator).GetElements() | select SOURCES_NAME, SOURCES_DESCRIPTION

# ODBC-drivers
Get-OdbcDriver | select Name,Platform

C# 프로제트에서 이 기능을 사용할 경우 다음 코드를 사용하여 64비트모드 또는 32비트모드로 동작하고 있는지 확인합니다.

        if (IntPtr.Size == 4)
        {
            Console.WriteLine("This is 32-Bit!");
        }
        else if (IntPtr.Size == 8)
        {
            Console.WriteLine("This is 64 Bit!");
        }

64비트 모드로 동작하고 있는 경우는, 32비트로의 전환을 시도할 수 있습니다(또는 그 반대). 안내에 따라 응용 프로그램을 64비트 또는 32비트(각각 X64 및 X86)로 실행할 수 있습니다.확실히 해야 돼Platform Target이 로로 있지 않습니다.Any CPU그리고 그것은 명시적인 설정이다.

여기에 이미지 설명 입력

에서 그 의 전환Any CPU로로 합니다.X86에러가 해결되어 오라클 프로바이더에 접속할 수 있었습니다.

저희 팀은 플랫폼을 설치하려고 하는 랜덤 머신에서 이 문제를 종종 발견하곤 했습니다(오라클 드라이버 12c ver 12.2.0.4를 사용하지만 다른 버전에서도 이 오류를 발견했습니다).

많은 실험을 거쳐 무엇이 문제인지 알게 되었습니다.

머신 전체의 오라클 드라이버를 사용하고 있는 애플리케이션을 사일런트 록 해, 업그레이드/재인스톨을 시도하는 오라클 드라이버 인스톨러에 의한 매직의 동작을 방해한다고 하는 것입니다.가장 작은 "앱"은 IIS 등에서 실행되는 웹 사이트일 것입니다. 이러한 앱은 기본적으로 재부팅 시 자동으로 시작되기 때문입니다.이에 대응하기 위해 다음 작업을 수행합니다.

  1. 재시작 시 IIS가 자동으로 시작되지 않도록 설정합니다.재부팅 시 자동으로 시작되는 다른 모든 앱/서비스에 대해서도 동일한 작업을 수행합니다.
  2. 이전 Oracle 드라이버를 제거하고 레지스트리 또는 폴더에 트레이스가 남아 있지 않은지 다시 확인합니다.
  3. 머신을 재기동합니다.
  4. (재) Oracle 드라이버를 설치하고 IIS 및 기타 자동 시작 앱을 다시 활성화합니다.
  5. 머신을 재기동합니다<- 이것은 매우 중요합니다.컴퓨터를 재부팅하지 않으면 Oracle의 OLE DB 드라이버가 작동하지 않습니다.

그래도 작동하지 않으면 OLE DB 드라이버가 작동할 때까지 반복하십시오.이게 무슨 일인지 알아내려고 애쓰는 누군가에게 도움이 되길 바라.

cmd를 Administrator로 실행하는 것을 잊지 마십시오.그렇지 않으면 다음과 같은 잘못된 오류 메시지가 나타납니다.

"OraOLEDB12.dll" 모듈은 현재 실행 중인 Windows 버전과 호환되지 않을 수 있습니다.모듈이 regsvr32.exe의 x86(32비트) 또는 x64(64비트) 버전과 호환되는지 확인합니다.

Der Wolfs 팁을 기반으로 Oracle 클라이언트를 제거했다가 다시 설치하고 설치 프로그램을 마우스 오른쪽 버튼으로 클릭하여 Administrator로 실행했습니다.됐다.

컴파일 사용을 변경할 수 없는 경우 x64 버전의 odac을 제거한 후 32비트 버전을 설치하십시오.그런 다음 C:\oracle 등의 설치 디렉토리 및 하위 디렉토리 C:\oracle\bin을 PATH 환경 변수에 추가하는 것을 잊지 마십시오.이것은 .net 4 어플리케이션에서 동작했습니다.

언급URL : https://stackoverflow.com/questions/12903366/oraoledb-oracle-provider-is-not-registered-on-the-local-machine

반응형