在.NET中连接到Oracle DB-11g和12c之间的区别?

时间:2018-06-20 06:37:04

标签: .net oracle oracle11g oracle12c odp.net

我正在开发一个应该连接到任何OracleDB的.NET应用程序,但我有些困惑,试图使其在不同版本上运行。

我最初是从Oracle 11g(Express)开始的,尝试连接实际上相当容易,我只是使用了以下连接字符串就可以了:

Data Source=hostname:port;User Id=myUsername;Password=myPassword;

然后我尝试连接到12c,它告诉我我没有指定服务名称。这让我感到很困惑,因为我不必在11中指定服务名称,但我在网上查找并找到了以下格式的另一个连接字符串:

SERVER=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort))
(CONNECT_DATA=(SERVICE_NAME=MyOracleSID))); uid=myUsername; pwd=myPassword;

它仍然不起作用。一位同事给了我小费,建议他们使用“全局数据库名称”而不是SID(ORCL.domainname.local而不是ORCL),在我们将ORCL.domainname.local添加到域控制器的DNS服务器的转发中之后,该技巧就起作用了查找区域。

然后我回到11g那里做了同样的事情,但结果发现使用新的Connection String无效。

尽管我们可以在连接字符串生成器中(用户指定数据)实现某种“尝试直到起作用”功能,但这似乎是一个糟糕的解决方案,我认为这不是一个好主意。同样在这一点上,我们真的很想知道为什么,所以我们可以判断是配置问题还是绝对版本问题。

有人在乎给我一些见识吗?我特别想知道要使不同的数据源属性(TNSNAMES.ora样式,host:port / sid,host:port / fully.qualified.sid ...)工作需要做什么。

0 个答案:

没有答案