The articles on Metalink point to the following:

If it's happening consistently,
incorrect entries in the TNSNAMES.ORA file(s)
specifically the service_name (sid)

If it's random .. and a listener restart fixes it temporarily, it's a bug.

Can you connect with another client app (access/golden/etc.)?

-Ken