VB.NET: невозможно подключиться к серверу базы данных Oracle из клиентского приложения
У меня 2 ноутбука (A и B) в одной локальной сети (Wi-Fi).
Я установил базу данных Oracle 12c r2 на ноутбук A.
В ноутбуке A I создали приложение VB.NET с Visual Studio 2017, которое может подключаться к базе данных Oracle.
Приложение отлично работает на ноутбуке A. Оно подключается к базе данных, и это форма моего приложения и строка подключения, которую я использую (192.168.20.98 - это IP-адрес моего ноутбука):
oracle_connection = New OracleConnection(
"Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=" & protocol.Text &
")(HOST=" & host.Text & ")(PORT=" & port.Text &
")))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=" & db_name.Text &
")));User Id=" & user_id.Text & ";Password=" & pswd.Text)
Я также отредактировал мой listener.ora
а также tnsnames.ora
находится в C:\app\mustafa\product\12.2.0\dbhome_1\network\admin
в дальнейшем:
listener.ora
:
# listener.ora Network Configuration File:
C:\app\mustafa\product\12.2.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = C:\app\mustafa\product\12.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS =
"EXTPROC_DLLS=ONLY:C:\app\mustafa\product\12.2.0\dbhome_1\bin\oraclr12.dll")
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.20.98)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
tnsnames.ora
:
# tnsnames.ora Network Configuration File:
C:\app\mustafa\product\12.2.0\dbhome_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.
DB1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.20.98)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = db1)
)
)
LISTENER_DB1 =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.20.98)(PORT = 1521))
ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)
Я отредактировал разрешение моей домашней папки Oracle, чтобы дать authenticated users
полный доступ.
Поэтому, когда я перемещаю свое приложение на ноутбук B и запускаю его для подключения к базе данных на ноутбуке, A I получает эту ошибку:
System.Data.OracleClient требует клиентского программного обеспечения Oracle версии 8.1.7 или выше.
Я не могу найти никакого решения. Требуется ли также, чтобы на моем ноутбуке B была установлена база данных Oracle 12c r2?
1 ответ
System.Data.OracleClient
Пространство имен - это поставщик данных.NET Framework для Oracle, но для него все же требуется программное обеспечение Oracle Client, установленное на целевой машине:
Oracle и ADO.NET | Документы Microsoft
Поставщик данных.NET Framework для Oracle обеспечивает доступ к базе данных Oracle с помощью интерфейса вызова Oracle (OCI), как это предусмотрено программным обеспечением клиента Oracle.
А также:
Поставщики данных.NET Framework | Документы Microsoft
Для источников данных Oracle. Поставщик данных.NET Framework для Oracle поддерживает клиентское программное обеспечение Oracle версии 8.1.7 и новее и использует пространство имен System.Data.OracleClient.
Но, как указано в документации также:
Заметка
Типы в System.Data.OracleClient устарели. Типы поддерживаются в текущей версии.NET Framework, но будут удалены в следующем выпуске. Microsoft рекомендует использовать стороннего поставщика Oracle.
Поэтому лучше использовать поставщик данных Oracle для.NET (ODP.NET), а не устаревший System.Data.OracleClient
, Здесь есть статья о переходе в 3 этапа, чтобы помочь в процессе.
В любом случае поставщикам данных Microsoft или Oracle по-прежнему потребуется программное обеспечение Oracle Client, установленное на целевом компьютере. Программное обеспечение Oracle Client называется Oracle Instant Client, и его можно найти здесь.
Если у вас уже установлен Oracle Instant Client на целевом компьютере, вы можете попробовать один из них (что, я думаю, автор вопроса уже сделал):