I'll answer my own question in case anyone else has the same problem. According to Oracle it's possible to deadlock doing inserts on tables with bitmap indexes. The above trace indicates this happend because the Rows waited on are "no row". It turns out acs_objects has a bitmap index on object_type ( I think this has been removed in openacs ). It't not clear to me why object_type should be a bitmap index anyway since there could be many different types. At any rate use bitmap indexes with care.