Pobrałem ODAC121021Xcopy_32bit ze strony Oracle i rozpakował archiwum zip i zainstalował za pomocą pliku install.bat.
Zmierzyłem się z tym samym problemem. Dzięki Omaraguirre. Jak stwierdził Omaraguirre, odniósł się do Oracle.ManagedDataAccess.dll i problem został naprawiony. Mogę bez problemu otworzyć połączenie.
Ale chciałem dowiedzieć się, dlaczego Oracle.DatAccess.dll zgłasza wyjątek odwołania Null podczas próby otwarcia połączenia. Odkryłem, że wspierające biblioteki dll, takie jak (oci.dll, ociwin32.dll itp.) są wymagane do otwarcia połączenia bez błędów. Skopiowałem więc wszystkie pliki dll z instantclient_12_1 (ten folder znajduje się w wyodrębnionym folderze ODAC121021Xcopy_32bit) do katalogu bin zainstalowanego w Oracle (C:\oracle\bin w mojej maszynie). Teraz Oracle.DataAccess.dll nie zgłasza błędu podczas otwierania połączenia.
Jeszcze jedną rzeczą jest to, że Oracle.ManagedDataAccess.dll załaduje wewnętrznie wszystkie obsługujące pliki dll. Ale Oracle.DataAccess.dll wymaga, aby pomocnicze biblioteki dll były obecne w katalogu wykonywanej aplikacji (w przypadku aplikacji konsolowych/WinForm) lub w katalogu bin zainstalowanym w systemie Oracle (w przypadku aplikacji sieci Web). Różnica między Oracle.DataAccess.dll i Oracle. Biblioteki dll ManagedDataAccess.dll można znaleźć @ https://docs.oracle .com/database/121/ODPNT/intro003.htm#ODPNT131