PL/SQL Rowlock bleibt bestehen bei einem DeadLock?

DerAskTyp

Mitglied
Hallo ich hätte eine Frage zum Thema Row(x)-Locks.

Hier auf dem Bild welches unser Lehrer gegeben hat steht das nach einer DeadLock situation einfach ein RowLock setzen kann (select for update unterhalb wo steht deadlock).

upload_2017-10-8_19-37-52.png

Das soll angeblich die Lösung sein. Jedoch als ich das bei PL/SQL dieses Beispiel ausprobiert habe stellte ich fest das ich bei select for update ganz unten wieder warten muss und ein deadlock wieder entsteht.

Heißt das der rowlock bei einem deadlock noch immer bestehen bleibt weil bei dem Bild wird das so dargestellt als würde der Rowlock entsperrt sein und man könnte einen neuen setzten. ?
 
Code:
Hallo
ich nehme mal an, dass Du Schüler auf einer Berufsvorbereitende KlassenstuffenSchule
bist.
So wie es ausschaut, wollte der Lehrer testen, inwieweit man Euch Schülern das Thema
Buchführung im Fach Rechnungswesen beibringen kann.
Eigentlich ganz einfach:

Merke Dir einfach den Spruch:  "SOLL an HABEN"  - immer!!!

Bei Banken schaut das anders aus: "HABEN an SOLL"  - wichtig!

Für das Buchen (in Deinen Fall, das COMMIT von Vorgängen) von Abrechnungen
werden sogenannte T-Konten verwendet.
Das T steht hierbei für Transaktion.
T-Konten sind also ein Hilfswerk, den Geldfluß einer Wirtschaftseinheit zu dokumentieren.

Für das verständnis von T-Konten würde ich Dir empfehlen, auf ein Blatt Pappier mehrere
T-Konten zu Zeichnen.
Das ist nichts schlimmes - einfach das Blatt Pappier in 3 gleiche Teile einteilen.
Links teilst Du nochmals um die Hälfte
Rechts ebenfalls
die Mitte bleibt frei.
Rechts SOLL
Links HABEN

Über jedem T-Konto notierst Du dessen Name (z.B. Bank)
Das könnte dann so aussehen:

SOLL      Bank  HABEN
-------------------------------
         |
         |

Jetzt kannst Du sicherlich erkennen, warum T-Konten TKonten genannt werden.
- weil sie eben aussehen wie ein T.
Ok, das war die Einleitung.

Auf der SOLL werden nun alle Konten mit den entsprechenden Werten
bestückt - Vorkontierung.
Also letzendlich ist die SOLL Seite erstmal das, was wir besitzen.
Manche mögen die SOLL auch als positive + Seite bezeichen und die HABEN Seite als
negative - Seite bezeichnen - kleine Denkstütze.

Mal angenommen ein Verein hat 100 Euro in seinen Stock (Stock = Vereinsvermögen).
Nun werden für die MitgliederGrillParty 20 Würstchen gekauft, wobei jede Wurst 2 Euro kostet.

1. Schritt: Eröffnung des Bank-Kontos - hier gilt HABEN an SOLL, bei Buchungen gilt aber wie
    gehabt SOLL an HABEN.
2. Schritt; Einlage der 100 Euro auf die rechte HABEN Seite, des Bankkontos

3. Schritt: die 100 Euro werden auf der SOLL Seite (T-Konto: Bank) notiet
    Gedankenstütze: Es "sollen" 100 Euro auf dem Bankkonto sein

4. Schritt: wir entnehmen nun 20 Euro vom Konto - nun muss dieser Wert auf die HABEN - Seite
    des T-Kontos der Vereinskasse notiert und abgerechnet werden
    Merke: "Keine Buchung, ohne Beleg!!!"

5. Schtitt: Konten müssen immer "ausgeglichen" (man spricht auch manchmal über "balanciert") sein
    um dies zu bewerkstelligen nehmen wir uns das Prinzip der doppelten Buchführung an und notieren
    ebenfalls 20 Euro auf die SOLL - Seite des Bankkontos.

a) Bank(100,00) AN VereinsStock(100,00)
b) VereinsStock (100,00) AN Bank (20,00)

Bei den Schritten A und B kann man sicherlich schon erkennen, das hier ein Geldkreislauf entstanden
ist, der aber geschlossen in sich "balanciert" ist.

All das schaut dann etwa so aus:

SOLL   Bank   HABEN              SOLL   VereinStock   HABEN
------------------------------        ---------------------------------------
20,00      |         100,00         20,00            |              100,00


Das obige Schaubild ist etwas ungünstig gewählt, da der Laie nicht sofort sehen kann, das bei
Buchungen mit der Bank, der Reziproke Geldfluß herrscht.

Damit sind wir aber mit der Buchung/Abrechnung noch lange nicht fertig (im obigen Beispiel).
Wir müssen nun die Konten ausgleichen, und überprüfen ob alles Stimmt.
Beim Bankkonto daran Denken:  HABEN = negativ = Abzug  und SOLL = positiv = Einlage !!!

Das schaut dann so aus;

SOLL   Bank   HABEN                   SOLL   VereinStock   HABEN
------------------------------------        ---------------------------------------
    0,00      |          + 100,00           + 100,00        |             0,00
  80,00      |          -    20,00            -   20,00        |           80,00
---------..----+---------------------      ---------------------------+-------------------
= 80,00    |                80,00            =  80,00        |          80,00


Falls da irgendwo Fehler sind, bitte melden.
Für Diskussion offen

cyu
 
Meines wissens ist ein Bank Konto immer ein aktives Konto, dazu kommt, dass ich der Meinung bin, dass das T-Konto Bank bei deinem Beispiel wie folgt aussehen müsste:

Code:
Soll     Bank         Haben
---------------------------
100        |             20

Hier ist die Eröffnung mit dabei und die Buchung wegen der Würste.

Um das Konto nun abzuschliessen, würde die Tabelle dann wie folgt aussehen

Code:
Soll     Bank         Haben
---------------------------
100        |             20
           |             80
---------------------------
100                     100

Dein Beispiel ist meiner Meinung nach falsch.

Ich bin mir auch nicht ganz sicher, ob das dem Fragensteller hilft. Mich verwirrt deine Antwort eher etwas, in Bezug auf die Frage.
 
Code:
Hallo maljlan,

Die normale Buchung hat ja einmal die Passiva (Links) und Aktiva (Rechts).
Heißt: Alles was auf die Bank reinkommt (als Einlage) wird im Haben (also das was Realles Geld
ist - ich habe 100 Euro auf der Bank.
werden nun 20 Euro abgehoben, wird die Buchung auf der Soll seite eingetragen.
Man kann sich das so vorstellen:
Alles was vom Bankkonto weggenommen wird ist erstmal ein Minus.
Wie ich bereits weiter oben beschrieben habe:

Soll an Haben (normale Buchung im Verein)
Haben an Soll (auf Sichtweise der Bank)

Du kannst das auch daran erkennen, wenn Du Mutters oder Vaters KontoAuszug mal betrachtest:
Alles was angeblich sein SOLL ist mit S und alles was Du HAST ist mit einen H gekennzeichnet.

Jetzt werden die Würstchen für gekauft:
Dafür gibt es einmal die Kundenkonten (Debitoren) sowie die Gläubiger (also Leute, die denken,
dass Du Geld für Waren/Genussmittel hast), dass sind dann die Kreditoren (Lieferanten, ...)
Dazu gibt es auch ein Konto, ich nenne es mal Kunde1. Sowie Lieferant1
Da wir das Geld von der Bank nehmmen (SOLL), buchen wir die 20 Euro nochmals auf die
HABEN Seite des Lieferanten1 Kontos.

Also haben wir 2 Buchungen vorliegen
1. Das Geld was wir von den Vereinsmitgliedern eingesammelt haben (100,00 Euro) legen wir
    auf das Bankkonto:
    SOLL - Vereinskasse  an  Bank - HABEN

2. Rechnung bezahlen (Würstchen beim Lieferanten) - 20,00 Euro
   SOLL - Bank  an  Lieferantenkonto - HABEN

3. Jetzt müssen wir noch die Konten abschließen:

SOLL   Vereinskassee  HABEN
----------------------------------
M1: 100,00      |  B1:    100,00
----------------------------------
=   100,00      |         100,00
----------------------------------
M1 = Stock = aus Mitgliedsbeiträgen
B1 = Stock wird auf Bank transferiert, Kasse ist nun aufgelöst

Jetzt aufpassen:
HABEN      Bank           SOLL
---------------------------------
B0:    0,00    |  B1:     100,00
B2: - 20,00    | LS1:   -  20,00
               | BS2:   -  20,00
---------------------------------
A3= + 80,00    |        +  80,00
---------------------------------
B2 = Geld für Würstchen werden dem Lieferanten
     gutgeschrieben, und vom Bankkonto abgezogen, und gebucht
A3 = Restliches Geld zur Verfügung auf Bank

SOLL      Lieferant1   HABEN
-------------------------------
S1:   0,00     |   LS1   +20,00
B2  -20,00     |
-------------------------------
=    20,00     |          20,00
-------------------------------
LS1 = Kredit(or) = Lieferantenschulden
B2  = Bankausgleich (Schulden buchen - wir bezahlen gleich)


Was das nun mit der eigentlichen Frage zu tun hat...

Der Lehrer stellt die Aufgabe, dass seine Schüler einen Transfer
machen sollen. Dieser Transfer soll in eine Datenbank gespeichert
werden und mit einen COMMIT zum Abschluß gebracht werden.
Das commit ist hier das Gleichsetzen/Ausgleichen der Konten.

Bei einer EDV-Anwendung ist es wichtig, wie Daten gespeichert werden
und bei einen Stromausfall/Creash ... wieder rückgängig gemacht werden
können - das entspricht einen ROLLBACK (auch bekannt als Kassensturz).

Um das Thema nicht so trocken darzustellen (Schüler ermüden schnell :)
wird hier Rechnungswesen und Informatik in einem gelehrt.
 
Zuletzt bearbeitet:
Zurück