代码之家  ›  专栏  ›  技术社区  ›  mustafa-naeem

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

  •  0
  • mustafa-naeem  · 技术社区  · 6 年前

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

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

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

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

    App working screen, from laptop A

    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 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

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

    Error screen from laptop B

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

    1 回复  |  直到 6 年前
        1
  •  1
  •   Pedro Gaspar    6 年前

    这个 System.Data.OracleClient

    Oracle and ADO.NET | Microsoft Docs

    用于Oracle的.NET Framework数据提供程序使用Oracle调用接口(OCI)提供对Oracle数据库的访问,如 软件。

    以及:

    .NET Framework Data Providers | Microsoft Docs

    Oracle客户端软件版本8.1.7及更高版本

    但是,正如文件中所述:

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

    所以,最好使用 Oracle Data Provider for .NET (ODP.NET) . 这里有一个 3 steps migration article 在这个过程中提供帮助。

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

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

    推荐文章