17 Copyright © Oracle Corporation, 2002. All rights reserved. Monitoring and Detecting Lock Contention 17-2 Copyright © Oracle Corporation, 2002. All rights reserved. Objectives After completing this lesson, you should be able to do the following: • Define levels of locking • Identify causes of contention • Prevent locking problems • Use Oracle utilities to detect lock contention • Resolve contention in an emergency • Resolve deadlock conditions 17-3 Copyright © Oracle Corporation, 2002. All rights reserved. Locking Mechanism • Automatic management • High level of data concurrency – Row-level locks for DML transactions – No locks required for queries • Multi-version consistency • Exclusive and Share lock modes • Locks held until commit or rollback operations are performed 17-4 Copyright © Oracle Corporation, 2002. All rights reserved. Data Concurrency Transaction 1 SQL> SELECT salary 2 FROM employees 3 WHERE id = 10; SALARY 1000 SQL> UPDATE employees 2 SET salary=salary*1.1 3 WHERE id= 24878; 1 row updated. SQL> UPDATE employees 2 SET salary=salary+1200; 13120 rows updated. SQL> UPDATE employees 2 SET salary=salary*1.1 3 WHERE id= 24877; 1 row updated. Transaction 2 17-6 Copyright © Oracle Corporation, 2002. All rights reserved. Two Types of Locks • DML or data locks: – Table-level locks – Row-level locks • DDL or dictionary locks (TM) (TX) 17-8 Copyright © Oracle Corporation, 2002. All rights reserved. DML Locks A DML transaction gets at least two locks: • A shared table lock • An exclusive row lock 17-9 Copyright © Oracle Corporation, 2002. All rights reserved. Enqueue Mechanism The enqueue mechanism keeps track of: • Users waiting for locks • The requested lock mode • The order in which users requested the lock 17-10 Copyright © Oracle Corporation, 2002. All rights reserved. Table Lock Modes These table lock modes are automatically assigned by the Oracle server: • Row Exclusive (RX): INSERT, UPDATE, DELETE • Row Share (RS): SELECT FOR UPDATE 17-12 Copyright © Oracle Corporation, 2002. All rights reserved. Manually Locking a Table Manually acquired in LOCK TABLE statement: • Share (S) – No DML operations allowed – Implicitly used for referential integrity SQL> LOCK TABLE hr.employees IN share MODE; 17-13 Copyright © Oracle Corporation, 2002. All rights reserved. Manually Locking a Table • Share Row Exclusive (SRX) – No DML operations or Share mode allowed – Implicitly used for referential integrity – No index is required on the foreign key column in the child table • Exclusive (X) – No DML or DDL operations allowed by other sessions – No manual locks allowed by other sessions – Queries are allowed [...]...DML Locks in Blocks Block Header TX slot 1 TX slot 2 1 Row 6 Lock bytes 2 17-14 Row 1 Copyright © Oracle Corporation, 2002 All rights reserved DDL Locks • Exclusive DDL locks are required for: – DROP TABLE statements – ALTER TABLE statements – (The lock is released when the DDL statement completes.) • Shared DDL locks are required for: – CREATE PROCEDURE statements – AUDIT statements – (The lock. .. Breakable parse locks are used for invalidating statements in the shared SQL area Copyright © Oracle Corporation, 2002 All rights reserved Possible Causes of Lock Contention • • • • 17-17 Unnecessarily high locking levels Long-running transactions Uncommitted changes Other products imposing higher-level locks Copyright © Oracle Corporation, 2002 All rights reserved Diagnostic Tools for Monitoring Locking... Deadlocks Server process ORA-00060: Deadlock detected while waiting for resource SID_ora_PID.trc UNIX Trace file in USER_DUMP_DEST directory 17-25 Copyright © Oracle Corporation, 2002 All rights reserved Summary In this lesson, you should have learned to do the following: • Define levels of locking • Identify causes of contention • Prevent locking problems • Use Oracle utilities to detect lock contention. .. employees SET salary = salary x 1.1; UPDATE employees SET salary = salary x 1.1 WHERE empno = 1000; v $lock v$locked_object dba_waiters dba_blockers 17-18 UPDATE employees SET salary = salary x 1.1 WHERE empno = 2000; Copyright © Oracle Corporation, 2002 All rights reserved Guidelines for Resolving Contention Transaction 1 UPDATE employees SET salary = salary x 1.1 WHERE empno = 1000; Transaction 2... 2002 All rights reserved Performance Manager: Locks 17-22 Copyright © Oracle Corporation, 2002 All rights reserved Deadlocks Transaction Transaction 1 2 UPDATE employees SET salary = salary x 1.1 WHERE empno = = 1000; UPDATE employees SET salary = salary x 1.1 WHERE empno = 2000; 9:15 UPDATE employees SET manager = 1342 WHERE empno = 1000; ORA-00060: Deadlock detected while waiting for resource 17-23... should have learned to do the following: • Define levels of locking • Identify causes of contention • Prevent locking problems • Use Oracle utilities to detect lock contention • Resolve contention in an emergency • Resolve deadlock conditions 17-26 Copyright © Oracle Corporation, 2002 All rights reserved . following: • Define levels of locking • Identify causes of contention • Prevent locking problems • Use Oracle utilities to detect lock contention • Resolve contention in. following: • Define levels of locking • Identify causes of contention • Prevent locking problems • Use Oracle utilities to detect lock contention • Resolve contention in