LOCKS
Locks are
the mechanisms used to prevent destructive interaction between users accessing
same resource simultaneously. Locks provides high degree of data concurrency.
TYPES
Ø Row level
locks
Ø Table level
locks
ROW LEVEL LOCKS
In the row
level lock a row is locked exclusively so that other cannot modify the row until
the transaction holding the lock is committed or rolled back. This can be done
by using select..for update clause.
Ex:
SQL> select * from
emp where sal > 3000 for update of comm.;
TABLE LEVEL LOCKS
A table
level lock will protect table data thereby guaranteeing data integrity when
data is being accessed concurrently by multiple users. A table lock can be held
in several modes.
Ø Share lock
Ø Share update
lock
Ø Exclusive
lock
SHARE LOCK
A share lock
locks the table allowing other users to only query but not insert, update or
delete rows in a table. Multiple users can place share locks on the same
resource at the same time.
Ex:
SQL> lock table
emp in share mode;
SHARE UPDATE LOCK
It locks
rows that are to be updated in a table. It permits other users to concurrently
query, insert , update or even lock other rows in the same table. It prevents
the other users from updating the row that has been locked.
Ex:
SQL> lock table emp in share update mode;
EXCLUSIVE LOCK
Exclusive
lock is the most restrictive of tables locks. When issued by any user, it
allows the other user to only query. It is similar to share lock but only one
user can place exclusive lock on a table at a time.
Ex:
SQL> lock table
emp in share exclusive mode;
NOWAIT
If one user
locked the table without nowait then another user trying to lock the same table
then he has to wait until the user who has initially locked the table issues a
commit or rollback statement. This delay could be avoided by appending a nowait
clause in the lock table command.
Ex:
SQL> lock table emp in exclusive mode nowait.
DEADLOCK
A deadlock
occurs when tow users have a lock each on separate object, and they want to
acquire a lock on the each other’s object. When this happens, the first user has
to wait for the second user to release the lock, but the second user will not
release it until the lock on the first user’s object is freed. In such a case,
oracle detects the deadlock automatically and solves the problem by aborting
one of the two transactions.
No comments:
Post a Comment