Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VB.NET:无法从客户端应用程序连接到Oracle数据库服务器_Vb.net_Oracleclient_System.data.oracleclient - Fatal编程技术网

VB.NET:无法从客户端应用程序连接到Oracle数据库服务器

VB.NET:无法从客户端应用程序连接到Oracle数据库服务器,vb.net,oracleclient,system.data.oracleclient,Vb.net,Oracleclient,System.data.oracleclient,我有两台笔记本电脑(A和B)在同一个本地网络(Wi-Fi)上 我已经在笔记本电脑A上安装了Oracle数据库12c r2 在笔记本电脑A中,我使用Visual Studio 2017创建了一个VB.NET应用程序,可以连接到Oracle数据库 该应用程序在笔记本电脑A上运行良好。它连接到数据库,这是我的应用程序表单,我使用的连接字符串(192.168.20.98是我的笔记本电脑A IP地址): 我还编辑了我的listener.ora和tnsnames.ora,它们位于C:\app\mustaf

我有两台笔记本电脑(A和B)在同一个本地网络(Wi-Fi)上

我已经在笔记本电脑A上安装了Oracle数据库12c r2

在笔记本电脑A中,我使用Visual Studio 2017创建了一个VB.NET应用程序,可以连接到Oracle数据库

该应用程序在笔记本电脑A上运行良好。它连接到数据库,这是我的应用程序表单,我使用的连接字符串(192.168.20.98是我的笔记本电脑A IP地址):

我还编辑了我的
listener.ora
tnsnames.ora
,它们位于
C:\app\mustafa\product\12.2.0\dbhome\u 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 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)
)
)
tnsnames.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 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主文件夹权限,以授予经过身份验证的用户完全访问权限

因此,当我将我的应用程序移动到笔记本电脑B并运行它以连接到笔记本电脑A上的数据库时,我遇到了以下错误:

System.Data.OracleClient需要Oracle客户端软件版本8.1.7或更高版本


我找不到任何解决办法。它是否也需要在我的笔记本电脑B上安装Oracle database 12c r2?

System.Data.OracleClient命名空间是Oracle的.NET Framework数据提供程序,但它仍然需要在目标计算机上安装Oracle客户端软件:

用于Oracle的.NET Framework数据提供程序提供了使用Oracle调用接口(OCI)访问Oracle数据库的功能,该接口由Oracle Client软件提供

以及:

对于Oracle数据源。用于Oracle的.NET Framework数据提供程序支持Oracle客户端软件版本8.1.7及更高版本,并使用System.Data.OracleClient命名空间

但是,正如文件中所述:

System.Data.OracleClient中的类型已弃用。这些类型在当前版本的.NET Framework中仍然受支持,但在将来的版本中将被删除。Microsoft建议您使用第三方Oracle提供程序

因此,最好使用,而不是弃用的
System.Data.OracleClient
。在这个过程中,有一个方法可以帮助你

无论如何,Microsoft或Oracle数据提供商仍然需要在目标计算机上安装Oracle客户端软件。Oracle客户端软件名为Oracle Instant Client,可以找到

如果目标计算机上已经安装了Oracle Instant Client,则可以尝试以下方法之一(我认为问题的作者已经这样做了):


不,需要的不是整个oracle客户端软件。它只需要足够的oracle客户端接口就可以连接到您的服务器。按照stacktrace的要求执行-即安装oracle客户端接口。@shahkalpesh我只是觉得有点困惑,我必须在B笔记本电脑上安装oracle客户端接口,对吗?你能给我确切的下载链接吗?oracle网站上有很多下载链接,与下载非常相似,两台计算机连接到同一个wifi并不意味着你有一个本地网络。尝试使用
ping 192.168.20.98
命令从笔记本电脑B ping笔记本电脑A,并告诉我们结果是什么。hello@Pedrogaspra I从B ping到A并获得0%的数据包丢失。您可能必须按照@shahkalpesh的建议,在笔记本电脑B上安装OracleClient。问题是System.Data.OracleClient已经存在一段时间了,因此,您最好使用Oracle本身的ODP.NET。看看这个。嗨@PedroGaspar,很抱歉回复晚了,因为我正忙着看大量的编程教程,但是我已经改成了ODP.NET,可以说它非常好,不过,非常感谢您为我提供的这些很棒的信息