The most common cause of lock conflicts is an uncommitted change, but there are a few other possible causes:
· Long-running transactions: Many
applications use batch processing to perform bulk updates. These batch jobs are
usually scheduled for times of low or no user activity, but in some cases, they
may not have finished or may take too long to run during the low activity
period. Lock conflicts are common when transaction and batch processing are
being performed simultaneously.
·
Unnecessarily high locking levels: Not
all databases support row-level locking (Oracle added support for row-level
locks in 1988 with release 6). Some databases still lock at the page or table
level. Developers writing applications that are intended to run on many
different databases often write their applications with artificially high
locking levels so that Oracle Database behaves similarly to these less capable database
systems. Developers who are new to Oracle also sometimes unnecessarily code in
higher locking levels than are required by Oracle Database.