Oracle PL/SQL Tutorial/System Tables Data Dictionary/dba locks

Материал из SQL эксперт
Перейти к: навигация, поиск

Check for locks held after starting the transaction

   <source lang="sql">

SQL> SQL> CREATE TABLE emp (

 2    id         NUMBER PRIMARY KEY,
 3    fname VARCHAR2(50),
 4    lname  VARCHAR2(50)
 5  );

Table created. SQL> SQL> INSERT INTO emp (id, fname, lname)VALUES (1, "A", "B"); 1 row created. SQL> INSERT INTO emp (id, fname, lname)VALUES (2, "C", "D"); 1 row created. SQL> INSERT INTO emp (id, fname, lname)VALUES (3, "E", "F"); 1 row created. SQL> INSERT INTO emp (id, fname, lname)VALUES (4, "G", "H"); 1 row created. SQL> INSERT INTO emp (id, fname, lname)VALUES (5, "G", "Z"); 1 row created. SQL> SQL> UPDATE emp

 2  SET fname = "Ronald"
 3  WHERE id = 44;

0 rows updated. SQL> SQL> SQL> SELECT d.session_id sid, d.lock_type, d.mode_requested,

 2         d.mode_held, d.blocking_others
 3  FROM dba_locks d, v$session v
 4  WHERE v.username = "PLSQL"
 5  AND d.session_id = v.sid;

no rows selected SQL> SQL> SQL> drop table emp; Table dropped.</source>


Get the name and type of object locked

   <source lang="sql">

SQL> SQL> CREATE TABLE emp (

 2    id         NUMBER PRIMARY KEY,
 3    fname VARCHAR2(50),
 4    lname  VARCHAR2(50)
 5  );

Table created. SQL> SQL> SQL> SQL> SELECT dbl.lock_type, dbl.mode_held, dbl.blocking_others,

 2         dbo.object_name object_locked, dbo.object_type
 3  FROM dba_locks dbl, v$session v, dba_objects dbo
 4  WHERE v.username = "PLSQL"
 5  AND dbl.session_id = v.sid
 6  AND dbo.object_id = dbl.lock_id1;

no rows selected SQL> SQL> SQL> drop table emp; Table dropped. SQL></source>