1.(セッションA) 子レコードを更新。
update child set foo='bar' where id='C01';
2.(セッションB) 親レコードを削除。(セッションBはWAIT)
delete from parent where id='P01';
3.(セッションA) 子レコードのFKが貼られたカラムを更新。
(デッドロック発生。いずれかのセッションでORA-00060)
update child set fk_column='anyvalue' where id='C01';
追記
SQL*Plusだとデッドロックが起きるけど、Javaプログラムだとデッドロックは起きない(2.で参照整合性エラー)。なぜ?
追記2
2つのスレッドで同じコネクションを使っていたせいだった…orz