Archive for July 7th, 2011
Operating System Interaction
The excellent Madrid from the otn forums has a nice post here on a particular listener error caused by not following the install instructions precisely. I thought that I’d dig in a little further to illustrate the interplay between the O/S and our wonderful C program that is oracle.exe
The message Hector got was
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=echo.world)(PORT=15 21))) TNS-12535: TNS:operation timed out TNS-12560: TNS:protocol adapter error TNS-00505: Operation timed out 32-bit Windows Error: 60: Unknown error
what has happened here is that our program (oracle.exe) has made an o/s call and got an o/s error message that it doesn’t know about. That doesn’t mean that the code is undocumented though. You can find the Windows system error codes at this useful page on MSDN. Here you will find that error 60 means
ERROR_BAD_REM_ADAP – The adaptor is not capable.
Which is a pretty clear indication that there is a network adapter issue. What is slightly more surprising is the error message shown in the trace file. The relevant output is
2011-07-05 15:09:59.249389 : nsc2addr:(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=echo.oracle.com)(PORT=1521))) 2011-07-05 15:09:59.249561 : snlinGetAddrInfo:getaddrinfo() failed with error 11001
The initial line is the Oracle Net function to extract a host address from the net service name the second line is the actual failure, However the return code 11001 corresponds to a windows socket error in name resolution
The main point to make here is that where Oracle calls os functions and gets unexpected results, then it maybe time to dig into the os calls. MSDN is a great resource for this as is the Windows Internals book.