【问题标题】:Connecting to an Oracle Database in a C# Windows application with ManagedDataAccess using Bequeath Protocol使用 Bequeath 协议通过 ManagedDataAccess 在 C# Windows 应用程序中连接到 Oracle 数据库
【发布时间】:2017-05-17 13:43:39
【问题描述】:

我正在尝试使用 Visual Studio C# Windows 应用程序,该应用程序使用 Bequeath 协议连接到本地 Oracle 12.2 数据库(使用 Oracle.ManagedDataAccess.Client),这样我就不必通过 Oracle 侦听器,因为这样仅用于本地数据库连接。

我知道 sqlplus 在不指定连接字符串或 TNS 条目时本机使用 Bequeath 协议:

sqlplus scott/tiger

*connected* 

SID 和 service_names 都是“mydb”:

select instance from v$thread;
-----
mydb

show parameter service_names;
VALUE
-----
mydb

通过SQL Developer连接时我也可以使用Bequeath协议(使用Local/Bequeath的连接类型)。

但是,我一直找不到在有效的连接字符串中使用 Bequeath 的示例(至少对我而言)。

Oracle Net Services 的 12.1 文档并没有真正的帮助。它在没有任何示例的情况下对遗赠进行了概述。


tnsnames.ora:

MYDB =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SID = MYDB)
    )
  )

MYDB_BEQ = 
  (DESCRIPTION = 
    (ADDRESS_LIST = 
      (ADDRESS = (PROTOCOL = BEQ)(PROGRAM = oracle)(ARGV0 = oracleMYDB)
      )
    )
    (CONNECT_DATA = (SID = MYDB)
    )
  )

以下工作使用 TCP(通过侦听器):

new OracleConnection(@"User Id=scott; Password=tiger
;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(
HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)
(SERVICE_NAME=MYDB)))");

*connected*

或使用 TNSNAMES 条目:

new OracleConnection("User Id=scott;Password=tiger;Data Source=MYDB")

*connected*

我可以使用上面的 BEQ 条目使用 SQLPLUS 通过 TNSNAMES 进行连接:

sqlplus scott/tiger@mydb_beq

*connected*

但是,我似乎无法通过 Oracle.ManagedDataAccess 来解决这个问题:

new OracleConnection(@"User Id=scott; Password=tiger
                                      ;Data Source = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = BEQ)(PROGRAM = oracle)(ARGV0 = oracleMYDB)))(CONNECT_DATA = (SID = MYDB)))")

ORA-12533: Network Session: Connect transport address syntax error

还尝试使用上面的 TNSNAMES 条目:

new OracleConnection("User Id=scott;Password=tiger;Data Source=MYDB_BEQ")

ORA-12533: Network Session: Connect transport address syntax error

我可能在这里遗漏了一些基本的东西,但我不确定还有什么可以尝试的......

【问题讨论】:

    标签: c# oracle visual-studio oracle12c oracle-manageddataaccess


    【解决方案1】:

    这似乎是不可能的。

    12c Data Provider for .NET Developer's Guide 的数据源部分中:

    没有遗赠 (beq) 支持。默认地址改为 TCP 环回 使用端口 1521 和环境中的 Oracle 服务名称 (ORACLE_SID)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-30
      • 2013-10-23
      • 1970-01-01
      • 2021-12-16
      • 2019-06-21
      • 2018-08-15
      • 2012-04-18
      • 2011-11-12
      相关资源
      最近更新 更多