The clients connect via sqlnet to a remote database server, but we have 2 entries for IPC connections in the listener.ora:
(ADDRESS = (PROTOCOL = IPC)(KEY = oracle.world))
(ADDRESS = (PROTOCOL = IPC)(KEY = ORCL))
We also have automatic_ipc=off in the sqlnet.ora on the server and on all the client's. Can I remove the IPC entries in the listener.ora? Or should I set up IPC for any local connections (if any)?
According to the doc, automatic_ipc does nothing from 8.0 onwards.
IPC is only relevent if you have a client process on the server - e.g. an application server running on the same box as the rdbms server and making requests to it. In this case IPC should be more efficient than TCP (fewer layers in the OSI stack).
You should check the tnsnames.ora on the server to see if any services use the IPC protocol - e.g.
When a process is on the same machine as the server, use the IPC protocol for connectivity instead of TCP. Inner Process Communication on the same machine does not have the overhead of packet building and deciphering that TCP has. I've seen a SQL job that runs in 10 minutes using TCP on a local machine run as fast as one minute using an IPC connection. The difference in time is most dramatic when the Oracle process has to send and/or receive large amounts of data to and from the database. For example, a SQL*Plus connection that counts the number of rows of some tables will run about the same amount of time, whether the database connection is made via IPC or TCP. But if the SQL*Plus connection spools much data to a file, the IPC connection will often be much faster -- depending on the data transmitted and the machine workload on the TCP stack.
You can set up your tnsnames file like this on a local machine so that local connection with use IPC connections first and then TCP connection second.
Well, I suppose that defining two protocols protects you from some "idiot" deleting IPC from the listener ( JOKING!).
In real life I would expect that TCP would not work if IPC was failing somehow (more layers) - though I could imagine IPC being OK while TCP was failing (messed up hosts file, dead DNS, corrupt routing table). Anyone with any better idea?