VB.NET:无法从客户端应用程序连接到Oracle数据库服务器
我有两台笔记本电脑(A和B)在同一个本地网络(Wi-Fi)上 我已经在笔记本电脑A上安装了Oracle数据库12c r2 在笔记本电脑A中,我使用Visual Studio 2017创建了一个VB.NET应用程序,可以连接到Oracle数据库 该应用程序在笔记本电脑A上运行良好。它连接到数据库,这是我的应用程序表单,我使用的连接字符串(192.168.20.98是我的笔记本电脑A IP地址): 我还编辑了我的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
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,则可以尝试以下方法之一(我认为问题的作者已经这样做了):
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,可以说它非常好,不过,非常感谢您为我提供的这些很棒的信息