Oracle ODP.NET BulkCopy 到临时表问题

Posted

技术标签:

【中文标题】Oracle ODP.NET BulkCopy 到临时表问题【英文标题】:Oracle ODP.NET BulkCopy to temporary table issue 【发布时间】:2011-02-08 10:21:55 【问题描述】:

我正在使用 ODP.NET 中的 BulkCopy 方法将 DataTable 插入到临时表中。 如果临时表很简单(没有触发器或索引),它可以正常工作,但是一旦我创建索引或触发器,我就会在 BulkCopy.WriteToServer() 方法中收到“通信通道上的文件结束”错误。 知道我该如何解决这个问题吗?

谢谢!

【问题讨论】:

【参考方案1】:

如果出现 ORA-03113:通信通道上的文件结尾,专用于您的会话的服务器进程由于错误或错误而死亡。客户端进程检测到服务器进程丢失并引发 ORA-03113。服务器进程已将其错误消息写入警报文件。检查服务器上的此文件以找出问题所在。您可能需要请您的 DBA 为您执行此操作。

问候, 抢。

【讨论】:

ORA-03113 和 ORA-00600 都是您无法真正指出并说“这样做,你会解决它”的错误。对这些人的建议是,'你必须真正挖掘,因为这可能是 Oracle 中的一个错误'。 当我遇到 ORA-03113 时,真正的错误信息在警报文件中等待着我。当然,在发现真正的信息后,修复可能很难甚至不可能,但在我看来,“真正挖掘”的措辞太强了。【参考方案2】:

我同意上面的海报。检查您的警报日志文件。如果您在那里看到 ORA-600,您(或您的 DBA)应该联系 Oracle 支持,因为您可能需要补丁。

克里斯蒂安·谢伊 甲骨文

【讨论】:

【参考方案3】:

Oracle 中的临时表几乎总是一个坏主意。您能否重新设计程序以使用常规表或 PL/SQL 集合?

【讨论】:

【参考方案4】:

我已就此联系过 Oracle。显然这是一个错误,已在 11g 中修复。他们现在正在尝试发布补丁

【讨论】:

以上是关于Oracle ODP.NET BulkCopy 到临时表问题的主要内容,如果未能解决你的问题,请参考以下文章

将 System.Data.OracleClient 替换为 Oracle.DataAccess (ODP.NET)

ODP.NET Oracle.ManagedDataAcess 随机 ORA-12570 错误

在 odp.net 上使用带有 number 属性的 oracle 对象类型

ODP.Net 中的连接字符串

使用 ODP.NET 访问 Oracle(.net如何访问Oracle)详解转

.NET(C#) Dapper Oracle(ODP.NET)或SQL Server 执行多条查询(select)语句的方法代码