【发布时间】:2019-04-14 12:59:48
【问题描述】:
我有 2 台笔记本电脑(A 和 B)在同一个本地网络 (Wi-Fi) 上。
我在笔记本电脑 A 上安装了 Oracle 数据库 12c r2。
在笔记本电脑 A 中,我使用 Visual Studio 2017 创建了一个可以连接到 Oracle 数据库的 VB.NET 应用程序。
该应用程序在笔记本电脑 A 上运行良好。它连接到数据库,这是我的应用程序表单,以及我使用的连接字符串(192.168.20.98 是我的笔记本电脑 A 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)
我还编辑了位于C:\app\mustafa\product\12.2.0\dbhome_1\network\admin 的listener.ora 和tnsnames.ora
如下:
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 上的数据库时,我收到了以下错误:
System.Data.OracleClient 需要 Oracle 客户端软件版本 8.1.7 或更高版本。
我找不到任何解决方案。是否需要在我的笔记本电脑 B 上也安装 Oracle 数据库 12c r2?
【问题讨论】:
-
不,这不是所需的整个 oracle 客户端软件。它只需要足够的 oracle 客户端接口就可以连接到您的服务器。按照堆栈跟踪的要求执行 - 即安装 oracle 客户端界面。
-
@shahkalpesh 我只是觉得有点困惑,我必须在 B 笔记本电脑上安装 oracle 客户端界面对吗?你能给我确切的下载链接吗? oracle网站有很多下载链接,下载的非常相似
-
将两台计算机连接到同一个 wifi 并不意味着您有本地网络。尝试使用
ping 192.168.20.98命令从笔记本电脑 B ping 笔记本电脑 A,并告诉我们结果如何。 -
hello @PedroGaspar 我从 B ping 到 A 并获得 0% 的数据包丢失
-
所以你可能必须按照@shahkalpesh 的建议去做,并在笔记本电脑 B 上安装 OracleClient。问题是 System.Data.OracleClient 现在是 obsolete 有一段时间了,所以你最好使用 Oracle 本身的 ODP.NET。看看这个3 steps migration article。
标签: vb.net oracleclient system.data.oracleclient