ORA-03126 error - 11.2

From: Albatross <älbätross_at_dätäbäsix.cöm>
Date: Thu, 12 Jan 2012 03:22:11 +0000 (UTC)
Message-ID: <Xns9FD7E38D1245stillnolawsuitedmo_at_88.198.244.100>

A bit of background:

Oracle AIX 6.1 SP5.

ORA-03126:	network driver does not support non-blocking operations
Cause: 	A non-blocking operation was attempted and the network driver 
does not support non-blocking operations.
Action: 	Use default blocking operations or use a driver supporting 
non-blocking operations.


This is occurring sporadically. The application code doesn't know exactly how to handle this. You really don't want to know what it does as it's a sad story. I've been through Metalink and various other sources and it's not reported to occur except through bad application code on the client side on 11G. I might just be the lucky one to get this bug first!

First level Oracle support suggests tracing at the client level. They also suggested a 10046 level 12 trace (!) which is a bit much for a problem that may not occur for a week at a time. I had the idea to put this in the SPFILE/init<SID>.ora at the database level as well rather than trying to worry about someone doing this via oradebug. It'll also help locating when it occurs to help find out where it would be in the client-side trace file.

I'm just not sure about how I'd properly code this as the syntax isn't really all that documented. I really don't want to have to try to do this per session as I have no guarantee that I won't miss a process or that one is generated that will not be covered. Before you ask, it's vendor code and I can't see it. So I'm trying to see if I can get any information from the error and hope it contains the call information from the client.

I realize I might be quite wrong in my approach but I can't tell until I try. Obviously I'm very open to suggestions. Even flames would be entertaining.

I've seen examples of this which indicate that something like the below is what I want but the options aren't exactly documented. Obviously I'm a bit confused about the "level", whether I need it and if so which level.

event = '3126 immediate trace name SYSTEMSTATE LEVEL 10'


event = '3126 immediate trace name context forever, LEVEL 10'


event = '3126 immediate trace name ERRORSTACK LEVEL 3'


event = "3126 trace name error stack"

I'm hoping the latter should dump the process when the error is signalled. Obviously the syntax above isn't quite right as my spfile has multiple events already and I'm not trying to get the quotes right but you get the idea. So I'm thinking the latter example is possibly the correct one.

If anyone has come across this before and can shed a biot of light on this it would be helpful. Received on Wed Jan 11 2012 - 21:22:11 CST

Original text of this message