그동안 Oracle 11g를 사용하다가 최근 Oracle 19c로 오라클 데이터베이스 마이그레이션을 하였습니다.
해당 오라클 DB를 윈폼(C#.NET Winform) 및 웹폼(ASP.NET)에서 모두 사용하고 있습니다.
.NET 프로젝트에서 Oracle 데이터베이스 연결을 위해 최신 ODAC 19.23 버전을 다운 받아 사용하였습니다.
윈폼 프로젝트에서는 별 문제가 없었는데 웹폼(ASP.NET)에서만 유독 OracleConnection의 Open에서 예외가 발생하고 실행이 되지 않는 문제가 발생하였습니다.
오류 내용 : 예외가 발생함 System.NullReferenceException: ‘개체 참조가 개체의 인스턴스로 설정되지 않았습니다.’
이번 글에서는 ASP.NET Oracle 19c Connection 에러 – NullReferenceException 오류 발생에 대한 해결 방법에 대해 설명해 보겠습니다.
Oracle 11g에서 Oracle 19c로 마이그레이션 후 윈폼은 정상 동작
C#.NET 윈폼 프로젝트에서는 최신 ODAC 19.23의 참조 라이브러리(DLL)만 교체해서 별 다른 문제 없이 빌드 및 실행을 할 수 있었습니다.
참조만 ODAC19.23의 Oracle.DataAccess를 새롭게 참조하고, oci.dll, oraOps19.dll 등 관련 dll 파일을 실행 폴더에 복사해 줌으로서 정상적인 실행이 되었습니다.
Oracle 11g에서 Oracle 19c로 마이그레이션 후 웹폼(ASP.NET)은 예외 발생
윈폼과 동일한 로직으로 웹폼에서 오라클 DB를 Open 하는 로직에서 예외 발생 오류가 발생하였습니다.
프로젝트 빌드는 정상적으로 빌드됩니다.
하지만 실행 중에 OracleConnection을 Open 하는 단계에서 예외가 발생하고, 프로그램이 멈추게 됩니다.
윈폼과 동일하게 ODAC19.23의 Oracle.DataAccess를 새롭게 참조하고, oci.dll, oraOps19.dll 등 관련 dll 파일을 bin 폴더에 복사해 줬음에도 오류가 지속적으로 발생합니다.
Oracle 11g에서 Oracle 19c로 마이그레이션 후 웹폼(ASP.NET)은 정상 동작
웹폼에서 Oracle 19c의 OracleConnection Open 단계에서 System.NullReferenceException 예외가 발생하는 문제를 해결하는 방법은 의외로 간단합니다.
Oracle.DataAccess 대신 Oracle.ManagedDataAccess를 참조하고, using Oracle.ManagedDataAccess.Clinet를 사용하면 Open 오류가 해결됩니다.
마무리
참고로 Oracle.ManagedDataAccess를 사용할 때 Oracle.DataAccess에서 지원하는 Method나 Property 중에서 지원하지 않는 메서드/속성/이벤트 들이 있습니다.
아래 Link 주소에서 확인해 보시기 바랍니다.
Differences between the ODP.NET Drivers (oracle.com)
이상으로 웹 폼에서 OracleConnection을 Open할 때 System.NullReferenceException 오류 발생에 대한 해결 방법에 대한 설명이었습니다.
※ 함께 읽으면 도움이 될 만한 다른 포스팅 글입니다.
- C#에서 MySQL, MariaDB 데이터베이스 연결해서 사용하는 방법
- Unable to find specified column in result set 오류 원인 및 해결 방법
- ‘형식 이니셜라이저에서 예외를 throw했습니다.’ 오류 해결 방법
- IIS(인터넷 정보 시스템)에서 Oracle.DataAccess 오류 발생 원인 및 해결 방법
- 오라클 ORA-00904: invalid identifier 오류 발생 원인 및 오류 해결 방법
- 오라클 ORA-01789:query block has incorrect number of result columns 오류해결
♥ 이 글이 도움이 되었기를 바랍니다. ^-^
댓글로 흔적을 남겨 주세요.