问题标签 [odp.net]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
786 浏览

visual-studio-2008 - ODP.Net 9.2和11在同一台机器上,使用VS2008

我目前正在开发应用程序,一个使用 ODP.Net 9.2,另一个应该使用 ODP.Net 11。我正在使用 VS2008 的服务器资源管理器添加新连接,但每次都失败并出现错误“ORA -12154: TNS: 无法解析指定的连接标识符”。我无法调试正在使用的 ODP VS2008。有人遇到过这种问题吗?

我在 Windows XP SP3 机器上使用 ODP.net 9.2 和 11,以及 Visual Studio 2008。

谢谢

0 投票
2 回答
12309 浏览

oracle - 只有一个活动会话随机获取 ORA-08177

我正在运行一个创建表然后插入一些数据的程序。
这是访问数据库的唯一程序。
我随机得到 ORA-08177。
实际代码有些复杂,但我编写了一个简单的程序来重现这种行为。

此代码运行无限循环。
在每次迭代中,它执行以下操作 10 次:

  • 公开课

  • 插入 100 行随机数据

  • 关闭会话

  • 显示一条消息说没有发生错误

如果发生错误,则捕获异常并打印其消息,然后执行下一次迭代。

这是示例输出。如您所见,ORA-08177 与成功的交互随机交错。

我正在运行 Oracle 11.1.0.6.0 并使用 ODP.NET 2.111.6.20。
更改隔离级别以ReadCommited解决问题,但我真的想在Serializable级别上运行它。
看起来我并不孤单 ,但没有给出答案,所以我再次询问。
我做错了什么,我该如何解决这个问题?

由 APC 编辑

为防止其他人发现错误的树,发布的代码示例只是 ORA-8177 错误的生成器。显然实际的代码是不同的;具体来说,删除和重新创建表格是一条红鲱鱼。

0 投票
1 回答
1243 浏览

oracle - How do I use Oracle's ClientId property with Enterprise Library?

Just stumbled across the new ClientId (aka client_identifier) variable that is available in Oracle 10g onwards, and would love to incorporate that into an app to assist with audit trails.

The app is using a generated Enterprise Library DAAB based layer (netTiers) that is wired to use the ODP.NET drivers with EntLibContrib, so CRUD functions create an OracleDatabase object and then retrieve generic DbCommand objects from it

It looks like the OracleConnection class has the ClientId property, so what is the cleanest way to get to the Connection object within that pattern? Should I be grabbing the connection out of every DbCommand I create and setting it there, or is that overkill?

Because EntLib is doing much of the connection management behind the scenes, I'm not sure whether I can set the ClientId somewhere outside of the CRUD functions and expect it to persist?

0 投票
2 回答
3112 浏览

oracle - ODP.NET 和参数

我已经构建了一个适用于 PostgreSQL 并且应该适用于 Oracle 的通用应用程序。

但是,通过参数化查询插入记录时,我遇到了奇怪的错误。

我的格式化查询如下所示:

“插入图层映射值(@lm_id,@lm_layer_name,@lm_layer_file);”

与记录如何使用参数的 Npgsql 不同,我找不到 Oracle 如何“更喜欢”使用它们。例如,我只能找到:1、:2、:3。

我不想使用顺序参数,我想以命名方式使用它们。

有没有办法做到这一点?难道我做错了什么?

谢谢

0 投票
1 回答
2654 浏览

oracle - Odp.net 中来自 Oracle 的多个结果集,没有引用

SQL Server 能够在一次往返中返回多个查询的结果,例如:

Oracle 不喜欢这种语法。可以使用参考游标,如下所示:

但是,您在打开/关闭游标时会受到惩罚,并且您可以长时间持有数据库锁。我想做的是使用 Odp.net 一次性检索这两个查询的结果。可能吗?

0 投票
2 回答
14710 浏览

odp.net - 在同一服务器中有两个 ODP.NET (ODAC) 版本

几个月前,我的一位同事使用 XCOPY 在服务器中安装了 ODAC 11.106.21,然后他开发了许多使用该客户端没有问题的应用程序(在测试和生产 Windows 服务器中)。

上周,我在 ODAC 11.1.07.20 下开发了一个应用程序。当我要求他使用 XCOPY 将这些新的 ODAC 版本安装在不同的文件夹中,然后将我的应用程序包含在测试服务器中时,他回答我应该使用 ODAC 11.106.21,因为他的应用程序可能会遇到问题。

所以我想知道:

1)如果真的有可能在一台服务器上有两个不同的 ODAC 版本。

2) 如果答案是肯定的,我怎样才能坚定地向我的同事保证他的申请不会遇到麻烦?

3)如果答案是肯定的,是否有必要在服务器中进行某种配置?

谢谢!!

0 投票
1 回答
1629 浏览

ado.net - Oracle .NET 数据提供程序和转换

我使用 Oracle 的特定数据提供程序 (11g),而不是正在停止使用的 Microsoft 提供程序。我发现关于 ODP.NET 的一点是它对数据类型的挑剔程度。在 JDBC 和其他 ADO 提供程序只是转换并使其正常工作的情况下,ODP.NET 将抛出一个无效的强制转换异常,除非您完全正确。

考虑这段代码:

由于 ODP.NET 对转换的挑剔,这不起作用。我通常的选择是:

1) 检索到 Decimal 并将它的强制转换为 Int64 (我不喜欢这样,因为 Decimal 只是矫枉过正,至少有一次我记得读过它已被弃用......)

2) 或者在 SQL 语句中进行强制转换以确保它适合 Int64,例如 NUMBER(18)

我这样做(2),因为当我的域类型是 Int32 或 Int64 时,我觉得将数字拉入 .NET Decimal 是不干净的。我使用的其他提供程序非常好(智能),可以即时进行转换。

ODP.NET 专家有什么建议吗?

0 投票
1 回答
6927 浏览

oracle - 如何使用 FailOver 为 ODP.NET 连接字符串配置连接字符串?

从 System.Data.OracleClient 转换为 ODB.NET,需要帮助转换我的连接字符串。这是我与 System.Data.OracleClient 一起使用的内容。

SERVER=(DESCRIPTION_LIST=(LOAD_BALANCE=yes)(FAILOVER=ON)(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=172.26.140.80)(PORT=9960))(ADDRESS=(PROTOCOL=TCP) (HOST=172.26.140.81)(PORT=9960)))(CONNECT_DATA=(SERVICE_NAME=tactota))));uid=XXXXXXX;pwd=XXXXXXXX"

这是我使用 ODB.NET 得到的,但没有实现上述连接字符串的其他功能。

数据源=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=172.26.140.80)(PORT=9960)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=tactota)));用户ID= XXXXXXXX;密码=XXXXXXXX;

这是我尝试将它们卷在一起时得到的结果,但不用说它不起作用。

数据源=(LOAD_BALANCE=yes)(FAILOVER=ON)(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=172.26.140.80)(PORT=9960))(ADDRESS=(PROTOCOL=TCP)(HOST =172.26.140.81)(PORT=9960)))(CONNECT_DATA=(SERVICE_NAME=tactota))); 用户 ID=XXXXXX;密码=XXXXXX;

谢谢!

戴夫

0 投票
1 回答
2216 浏览

.net - 使用 odp .net 命令对象执行 oracle sql 脚本:互斥错误消息

我正在尝试构建一个测试环境来测试针对 oracle 和 sql server 的应用程序。目的是为两个测试场景提供相同的代码库,唯一的区别应该是存储在脚本文件中的一些 SQL/DDL/... 语句。问题是oracle的ODP不支持脚本的执行,只支持单个命令。

我找到了一种解决方法,但仍有一个问题我无法解决:

我的 Oracle Drop 脚本如下所示:

问题是 END 之后的最后一个分号:

如果我没有在末尾提供分号,oracle 数据库会抱怨:

如果我提供分号,我会收到 oracle ODP .Net 命令对象引发的异常:

有没有办法同时满足 oracle 数据库和 ODP .Net?

0 投票
2 回答
1191 浏览

c# - 我可以在 odp.net 和 Oracle 8i 中使用绑定变量吗?

由于缺乏测试环境,我需要知道以下场景是否可行:

我已经为 .Net 版本 9.2.0.4 安装了 Oracle 数据提供程序。在生产中,我必须从我的 C# 应用程序与两个数据库(Oracle 8i 和 9i)进行通信。

Oracle 8i 在这种情况下是否支持绑定变量?

我可能会使用类似于以下的代码:

提前致谢!