ORA-03111 break error on communication channel
I have error ORA-03111 Timeout received over communication channel after changing from oracle 11g to oracle 10g R1 on another server.
I am using DotNet framework 4.5.
I have google but couldn't find any solution.
In my case (getting an exception on connection.Open()
) the problem turned out to be that the Oracle server was too old to use the Managed Provider.
According to: https://community.oracle.com/thread/2528641
ODP.NET managed driver supports connection to Oracle DB Server 10.2 or higher. It does not support DB 10.1.
In my case, the reason was that the NVL function input was returning more than one row - a blabla subquery in the following:
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;
Interestingly, running the query directly in SQL Developer returns the correct error code - "ORA-01427: single-line subquery returns more than one row".
My problem was a missing column in the database. It was created in a different environment. It was difficult to find the real problem because this error doesn't tell us anything.
There was a real problem while debugging on another computer.
Hope this helps someone.
In my case Oracle doesn't like the parameters in this query.
select 0 AS id, object_name name from user_objects where object_type in(:table,:view)
changed this to:
select 0 AS id, object_name name from user_objects where object_type in('TABLE','VIEW')
and it works.
My ORM by default forces queries to use parameters,
Typical strange oracle ...