Killing the session will not clear the locks. The session on the remote database will remain idle waiting for input until the network read times out. Only then the kill session is processed, and locks are released.
Refer to Doc ID: Note:100859.1
If you did not have access to metalink, let me know, I can send a copy of the same.
I've looked on Metalink and read the note (and some others).
It seems the recommended course is to use ORAKILL to remove the Server thread for the user which owns the KILLED process.
ORAKILL seems to be an NT Utility - whereas we're running 8i on HP-UX. I can't locate the utility yet. Don't know if it's NT only.
The other option (which is more for the future than the present) is to set SQLNET.EXPIRE_TIME in SQLNET.ORA which I shall do.
My particular problem is made slighly more tricky in that the client process which the server still thiks is pointing to the Killed Session has itself died, so there will be no further requests by which the server can inform it that it's session has died, thereby killing the thread.
The only solution may have to wait for it to complete or for the network connection to timeout.
Anyway, many thanks for your help. Metalink is a valuable resource.