在通信信道上收到错误ORA-03111中断

时间:2015-04-30 06:20:25

标签: asp.net asp.net-mvc oracle entity-framework oracle10g

我收到错误ORA-03111在不同服务器上从oracle 11g更改为oracle 10g R1后,通信通道收到了中断。

我使用DotNet framework 4.5。

我有谷歌,但没有找到任何解决方案。

5 个答案:

答案 0 :(得分:4)

就我而言(在connection.Open()上获得例外)问题是Oracle服务器的版本太旧而无法使用托管提供商。

根据:https://community.oracle.com/thread/2528641

  

ODP.NET,托管驱动程序支持连接到Oracle DB Server 10.2   或更高。它不支持DB 10.1。

答案 1 :(得分:2)

在我的情况下,原因是NVL函数的输入返回了多行 - 下面的blabla子查询:

PROCEDURE my_procedure(c_my_cursor OUT SYS_REFCURSOR) IS
  p_my_cursor SYS_REFCURSOR;
BEGIN
  OPEN p_my_cursor FOR
  select nvl((select blabla), 0) my_column from my_table;
  c_my_cursor := p_my_cursor;
END smiley_alle_jurenheder;

有趣的是,在SQL Developer中直接运行查询时,会返回正确的错误代码 - “ORA-01427:单行子查询返回多行”。

答案 2 :(得分:0)

我的问题是数据库上缺少列。它是在另一个环境中创建的。 很难找到真正的问题,因为此错误不会告诉我们任何事情。

在其他计算机上调试时,出现了真正的问题。

希望这对某人有所帮助。

答案 3 :(得分:0)

由于这是搜索此错误时Google的第一个匹配项,因此,我还要添加解决方案。这个错误似乎是由于各种原因而出现的,这使得进行故障排除真的很困难。

我在构建同时在MSSQL和Oracle上运行的应用程序时遇到了问题。启动后,它将创建一个简单表。为防止错误,将删除任何现有表。这种多行,多命令脚本可在MSSQL上正常运行,但与Oracle等效的脚本始终返回此错误。

当我一一运行命令(拖放,创建表,创建序列)时,终于解决了。另外,请注意要使用分号(;),因为将其留在DDL语句中还会导致ORA-03111错误。

回想起来,我知道一次运行多个命令在Oracle中是很麻烦的,但是对于那些不是以Oracle神秘方式启动的人来说,这个错误是毫无用处的。

答案 4 :(得分:-1)

就我而言,Oracle不喜欢此查询中的参数。

window.requestAnimationframe()

将其更改为:

select 0 AS id, object_name name from user_objects where object_type in(:table,:view)

它有效。

默认情况下,我的ORM强制查询使用参数,

典型的Oracle怪异...