使用Bequeath协议使用ManagedDataAccess连接到C#Windows应用程序中的Oracle数据库

时间:2017-05-17 13:43:39

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

我尝试使用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文档并不是真的有用。它概述了没有任何例子的Bequeath。

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

我可以使用SQLPLUS使用上述BEQ条目通过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

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

1 个答案:

答案 0 :(得分:0)

看起来不可能。

12c Data Provider for .NET Developer's Guide

的dataSources部分
  

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