• Index
  • Visitenkarte
  • Kontakt
  • Impressum
Patrick Wessel

grep -i stuff /dev/brain | weblog

Oracle Locks

11. März 2013 by

Manchmal kann es hilfreich sein direkt auf Datenbankebene zu schauen welche Session welchen Lock hält um zu sehen warum es wo genau klemmt und zum Beispiel ein Workprozess nicht weiter arbeiten kann oder die erwarteten Updates noch immer nicht fertig gestellt wurden.

Ich persönlich finde folgenden Statements dabei hilfreich.

Mit diesem Statement kann man schnell und einfach sehen, welche Session einen Lock hält und welche andere Session genau auf diesen Lock wartet:

SQL> set pages 200 lines 200
SQL> select HOLDING_SESSION, MODE_HELD, WAITING_SESSION from DBA_WAITERS order by HOLDING_SESSION;

HOLDING_SESSION MODE_HELD WAITING_SESSION
--------------- ---------------------------------------- ---------------
147 Exclusive 918
147 Exclusive 4621
147 Exclusive 4626
147 Exclusive 428
428 None 918
428 None 4621
428 None 4626
428 None 428
4621 None 4626
4621 None 4621
4621 None 918
4621 None 428
4626 None 4626
4626 None 4621
4626 None 918
4626 None 428

16 rows selected.

SQL>

Oracle liefert ein Standard Script mit aus, mit dem man sich die Locks als Tree anzeigen lassen kann. Dies vereinfacht das visuelle Erkennen von umfangreichen Abgängigkeiten enorm. Das Script legt eine temporäre Tabelle an und dropt diese auch wieder:

SQL> @?/rdbms/admin/utllockt
drop table lock_holders
*
ERROR at line 1:
ORA-00942: table or view does not exist

Table created.

drop table dba_locks_temp
*
ERROR at line 1:
ORA-00942: table or view does not exist

Table created.

4 rows created.

Commit complete.

Table dropped.

1 row created.

Commit complete.

WAITING_SESSION LOCK_TYPE MODE_REQUESTED MODE_HELD LOCK_ID1 LOCK_ID2
----------------- ----------------- -------------- -------------- ----------------- -----------------
147 None
428 Transaction Exclusive Exclusive 19857416 2624382
918 Transaction Exclusive Exclusive 19857416 2624382
4621 Transaction Exclusive Exclusive 19857416 2624382
4626 Transaction Exclusive Exclusive 19857416 2624382

Table dropped.

SQL>

Folgendes Statement gibt die beteiligten OS User und das Schema mit aus:

select SID, SERIAL#, USERNAME, OSUSER , o. owner, o.object_name ,ROW_WAIT_BLOCK# , ROW_WAIT_FILE#, ROW_WAIT_ROW# FROM v$session , dba_objects o WHERE lockwait is not null AND object_id = ROW_WAIT_OBJ#;

SID SERIAL# USERNAME OSUSER OWNER
---------- ---------- ------------------------------ ------------------------------ ------------------------------
OBJECT_NAME ROW_WAIT_BLOCK# ROW_WAIT_FILE# ROW_WAIT_ROW#
-------------------------------------------------------------------------------------------------------------------------------- --------------- -------------- -------------
4626 7 SAPSCHEMA sidadm SAPSCHEMA
TABELLE 3581556 388 36

4621 1 SAPSCHEMA sidadm SAPSCHEMA
TABELLE 3575278 388 6

918 5 SAPSCHEMA sidadm SAPSCHEMA
TABELLE 527538 4 29

428 3 SAPSCHEMA sidadm SAPSCHEMA
TABELLE 3056920 392 11

SQL>

Mit diesem Statement werden die SIDs, Objekte, LOCK Modes und Requests angezeigt:

SQL> SELECT
SID, CTIME, substr(OBJECT_NAME,1,30), SUBOBJECT_NAME, LMODE, REQUEST, BLOCK
FROM
( SELECT L.INST_ID, O.OBJECT_NAME, O.SUBOBJECT_NAME, L.SID, L.CTIME, L.LMODE, L.REQUEST, L.BLOCK, ROW_NUMBER () OVER (PARTITION BY O.OBJECT_NAME, O.SUBOBJECT_NAME ORDER BY CTIME DESC) RN FROM GV$LOCK L, DBA_OBJECTS O WHERE L.TYPE = 'TM' AND L.ID1 = O.OBJECT_ID ORDER BY OBJECT_NAME, SUBOBJECT_NAME, CTIME DESC );

SID CTIME SUBSTR(OBJECT_NAME,1,30) SUBOBJECT_NAME LMODE REQUEST BLOCK
---------- ---------- ------------------------------------------------------------------------------------------ ------------------------------ ---------- ---------- ----------
147 607100 TABELLE1 3 0 0
428 381060 TABELLE1 3 0 0
4626 367493 TABELLE1 3 0 0
4621 287233 TABELLE1 3 0 0
918 256501 TABELLE1 3 0 0
147 607100 TABELLE2 3 0 0
428 381060 TABELLE2 3 0 0
4626 367493 TABELLE2 3 0 0
4621 287233 TABELLE2 3 0 0
918 256501 TABELLE2 3 0 0
428 381060 TABELLE3 3 0 0
4626 367493 TABELLE3 3 0 0
4621 287233 TABELLE3 3 0 0
918 256501 TABELLE3 3 0 0

14 rows selected.

SQL>

Ähnliche Beiträge:

  1. Invaild Objects nach einem Oracle Upgrade
    Während eines Oracle Upgrades kann es vorkommen, dass nach dem Upgrade Objekete ungültig sind. Das...
  2. SAP BDLS Umsetzungen direkt über Oracle mit sqlplus – schneller gehts immer!
    Beim Umsetzen von logischen Systemnamen im SAP mittels der Transaktion BLDS kann es trotz Indizes...
  3. Oracle! Wie lange brauchst du denn noch?
    Wenn eine Aktion im Oracle mal wieder länger dauert (select, update, insert, delete, rman-Backup etc.)...
  4. Nützliche Sybase Helferlein
    Hier eine kleine Sammlung an nützlichen Tipps rund um die Sybase Datenbank für die alltägliche...
  5. Oracle Datenbankupgrade und das Backup danach
    Nach dem erfolgten Upgrade einer 10er Oracle Datenbank auf die Version 11g wollte ich zur...

Posted in: SAP Tagged: Benutzer, Block, Blockmode, CTIME, Datenbank, Datenbankschema, DBA_WAITERS, halten, Index, Locks, Oralce, OS, OSUSER, Request, SAP, Schema, Script, select., serial#, Session, sid, Sperre, sqlplus, Tabelle, User, utllockt, utllockt.sql, v$session

Kategorien

  • Allgemein
  • Politik und Soziales
  • Projekt Linux Server
  • SAP

Ähnliche Artikel

  1. Invaild Objects nach einem Oracle Upgrade
  2. SAP BDLS Umsetzungen direkt über Oracle mit sqlplus – schneller gehts immer!
  3. Oracle! Wie lange brauchst du denn noch?
  4. Nützliche Sybase Helferlein
  5. Oracle Datenbankupgrade und das Backup danach

Zu den Kommentaren:

Die Kommentare auf der Seite werden erst nach manueller Prüfung freigeschaltet. Es kann daher mehrere Stunden dauern, bis der entsprechende Kommentar auf der Seite veröffentlicht ist. Bitte nicht mehrfach posten.

Verschiedenes

Spaß Windows Download PHP Webserver Artikel Homepage Script Howto select. Tabelle postfix Installation User Verbindung sqlplus Speicher sid Blog Backup Wesselonline Debian Datenbank IP Email Problem Linux Oracle SAP Server

Archive

  • Juni 2013
  • Mai 2013
  • April 2013
  • März 2013
  • Februar 2013
  • Januar 2013
  • Dezember 2012
  • November 2012
  • Oktober 2012
  • September 2012
  • August 2012
  • Juli 2012
  • Juni 2012
  • Mai 2012
  • Januar 2012
  • Mai 2011
  • April 2011
  • März 2011
  • Januar 2011
  • Dezember 2010
  • November 2010
  • Oktober 2010
  • September 2010
  • August 2010
  • Juli 2010
  • Juni 2010
  • Juli 2009
  • Juni 2009
  • Mai 2009
  • Februar 2009
  • Januar 2009
  • Dezember 2008
  • August 2008
  • Juli 2008
  • Mai 2008
  • April 2008
  • August 2007
  • Juli 2007
  • Juni 2007
  • Mai 2007
  • April 2007
  • März 2007
  • Februar 2007
  • Januar 2007
  • Dezember 2006
  • Oktober 2006
  • September 2006
  • August 2006

Copyright © 2019 Patrick Wessel.

Omega WordPress Theme by ThemeHall

Internetseiten verwenden teilweise so genannte Cookies. Cookies richten auf Ihrem Rechner keinen Schaden an und enthalten keine Viren. Cookies dienen dazu, meine Internetseite nutzerfreundlicher, effektiver und sicherer zu machen. Cookies sind kleine Textdateien, die auf Ihrem Rechner abgelegt werden und die Ihr Browser speichert. Die meisten der von mir verwendeten Cookies sind so genannte „Session-Cookies“. Sie werden nach Ende Ihres Besuchs automatisch gelöscht. Andere Cookies bleiben auf Ihrem Endgerät gespeichert, bis Sie diese löschen. Diese Cookies ermöglichen es, Ihren Browser beim nächsten Besuch wiederzuerkennen. Sie können Ihren Browser so einstellen, dass Sie über das Setzen von Cookies informiert werden und Cookies nur im Einzelfall erlauben, die Annahme von Cookies für bestimmte Fälle oder generell ausschließen sowie das automatische Löschen der Cookies beim Schließen des Browser aktivieren. Bei der Deaktivierung von Cookies kann die Funktionalität dieser Website eingeschränkt sein.AkzeptierenDatenschutzerklärung