通过 odp.net 通过 dblink 大小限制插入 blob

发布于 2024-10-31 23:35:57 字数 483 浏览 5 评论 0原文

我正在使用 ODP.NET(版本 2.111.7.0)和 C#、OracleCommand & OracleParameter 对象和 OracleCommand.ExecuteNonQuery 方法

我想知道是否有一种方法可以通过 DB 链接将大字节数组插入到驻留在另一个数据库中的 oracle 表中。我知道通过数据库链接进行 lob 处理通常是有问题的,但我对修改代码和添加另一个连接有点犹豫。

创建一个以 blob 作为参数并通过 dblink 进行内部对话的存储过程会有什么不同吗?不这么认为..

我目前的情况是,只要我通过 OracleCommand 传递的参数是长度为 0 或长度 > 的字节数组,Oracle 就会给我“ORA-22992:无法使用从远程表中选择的 LOB 定位器” ; 32KB(我怀疑,因为 20KB 有效,35KB 无效)

我使用 OracleDbType.Blob 作为此参数。

谢谢。

有什么想法吗?

i am using ODP.NET (version 2.111.7.0) and C#, OracleCommand & OracleParameter objects and OracleCommand.ExecuteNonQuery method

i was wondering if there is a way to insert a big byte array into an oracle table that resides in another database, through DB link. i know that lob handling through DB links is problematic in general, but i am a bit hesitant to modify code and add another connection.

will creating a stored procedure that takes blob as parameter and talks internally via dblink make any difference? don't think so..

my current situation is that Oracle will give me "ORA-22992: cannot use LOB locators selected from remote tables" whenever the parameter i pass with the OracleCommand is a byte array with length 0, or with length > 32KB (i suspect, because 20KB worked, 35KB didn't)

I am using OracleDbType.Blob for this parameter.

thank you.

any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

笑咖 2024-11-07 23:35:57

我最终使用了第二个连接,同步两个事务,以便提交和回滚始终联合执行。我实际上还相信通过 dblink 处理 BLOB 存在一个普遍问题,因此第二个连接是更好的选择,尽管在我的情况下,我的应用程序的设计略有破坏 - 需要引入第二个连接和第二个连接交易。另一种选择是尝试使用 PL/SQL 块和某种形式的 DBMS_LOB.WRITEAPPEND 以 32k 块的形式插入 blob,但这需要对我的代码进行更深入的更改(就我而言),因此我选择了更简单的方法第一个解决方案更简单。

i ended up using a second connection, synchronizing the two transactions so that commits and rollbacks are always performed jointly. i also ended up actually believing that there's a general issue with handling BLOBs through a dblink, so a second connection was a better choice, although in my case the design of my application was slightly disrupted - needed to introduce both a second connection and a second transaction. other option was to try and insert the blob in chunks of 32k, using PL/SQL blocks and some form of DBMS_LOB.WRITEAPPEND, but this would require more deep changes in my code (in my case), therefore i opted for the easier and more straightforward first solution.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文