I did below testing:

1. User A login to sqlplus , do
select * from t1 where c1 = 1 for update nowait

2. User B login to sqlplus , do
update t1 set c2 = 2 where c1 = 1 ( it has to wait ,good)

3. Disconnect UserA 's network with oracle server .
I expect that oracle release the lock which holded by UserA as the connection is lost .

4. But the update statement still waiting !
5. I manuall kill session ( inactive session of UserA) , the update statement from userB can continue .

It seems oracle can not claim the lock back even the session is lost !

Can anyone explain about that ?