SlideShare ist ein Scribd-Unternehmen logo
1 von 29
Downloaden Sie, um offline zu lesen
BASEL BERN BRUGG DÜSSELDORF FRANKFURT A.M. FREIBURG I.BR. GENF
HAMBURG KOPENHAGEN LAUSANNE MÜNCHEN STUTTGART WIEN ZÜRICH
Was Sie schon immer über APEX-
Transaktionen wissen wollten
Michael Schmid
Senior Consultant
… und über das Session State Handling erfahren wollten
Unser Unternehmen.
© Trivadis – Das Unternehmen (Kurzpräsentation)2 5/4/2016
Trivadis ist führend bei der IT-Beratung, der Systemintegration, dem Solution
Engineering und der Erbringung von IT-Services mit Fokussierung auf -
und -Technologien in der Schweiz, Deutschland, Österreich und
Dänemark. Trivadis erbringt ihre Leistungen aus den strategischen Geschäftsfeldern:
Trivadis Services übernimmt den korrespondierenden Betrieb Ihrer IT Systeme.
B E T R I E B
KOPENHAGEN
MÜNCHEN
LAUSANNE
BERN
ZÜRICH
BRUGG
GENF
HAMBURG
DÜSSELDORF
FRANKFURT
STUTTGART
FREIBURG
BASEL
WIEN
Mit über 600 IT- und Fachexperten bei Ihnen vor Ort.
© Trivadis – Das Unternehmen (Kurzpräsentation)3 5/4/2016
14 Trivadis Niederlassungen mit
über 600 Mitarbeitenden.
Über 200 Service Level Agreements.
Mehr als 4'000 Trainingsteilnehmer.
Forschungs- und Entwicklungsbudget:
CHF 5.0 Mio.
Finanziell unabhängig und
nachhaltig profitabel.
Erfahrung aus mehr als 1'900 Projekten
pro Jahr bei über 800 Kunden.
Agenda
Was Sie schon immer über APEX-Transaktionen wissen wollten4 20.04.15
1. Transaktionen und das ACID-Prinzip
2. Wie verwaltet APEX Transaktionen?
Was wir erwarten würden…
Was Oracle dazu sagt…
… und wie es im Überblick tatsächlich ist.
3. Wie funktioniert‘s im Detail?
Wie APEX den Session State verwaltet…
… und SQL und PL/SQL ausführt
4. Einige Probleme und wie man sie vermeiden kann
5. Oracles Antwort oder: Das Schicksal eines Service Requests
6. Fazit
Was Sie schon immer über APEX-Transaktionen wissen wollten5 20.04.15
Transaktionen
und das ACID-Prinzip
Transaktionen und das ACID-Prinzip
Die Theorie
Was Sie schon immer über APEX-Transaktionen wissen wollten6 20.04.15
„Als Transaktion […] bezeichnet man […] eine Folge von Programmschritten, die
als eine logische Einheit betrachtet werden, weil sie den Datenbestand nach
fehlerfreier und vollständiger Ausführung in einem konsistenten Zustand
hinterlassen. Daher wird für eine Transaktion insbesondere gefordert, dass sie
entweder vollständig und fehlerfrei oder gar nicht ausgeführt wird.“ (Wikipedia)
Transaktionen müssen dem ACID-Prinzip unterliegen:
– Atomicity (Atomarität)  Transaktionen werden ganz oder gar nicht ausgeführt.
– Consistency (Konsistenz)  Transaktionen überführen das System von einem
konsistenten Zustand in einen neuen konsistenten Zustand.
– Isolation (Isolation)  Gleichzeitige Transaktionen beeinflussen sich nicht
gegenseitig.
– Durability (Dauerhaftigkeit)  Erfolgreiche Transaktionen sind dauerhaft.
Transaktionen und das ACID-Prinzip
Ein praktisches Beispiel
Was Sie schon immer über APEX-Transaktionen wissen wollten7 20.04.15
Der Überweisungsvorgang besteht aus drei
Schritten.
Es dürfen entweder werden alle Schritte oder
keiner durchgeführt.
Bei einem Fehler z.B. zwischen Abbuchung
und Gutschrift wird die gesamte bisherige
Transaktion – und die Abbuchung –
zurückgerollt.
Die erfolgreiche und vollständige Transkation
ist gegen Desaster etc. geschützt und damit
dauerhaft.
Transaktionsbeginn
Buche Betrag vom Quellkonto ab
Schreibe Betrag beim Zielkonto gut
Protokolliere die Überweisung
Transaktionsende
Was Sie schon immer über APEX-Transaktionen wissen wollten8 20.04.15
Wie verwaltet APEX Transaktionen?
Wie verwaltet APEX Transaktionen?
Was wir erwarten würden…
Was Sie schon immer über APEX-Transaktionen wissen wollten9 20.04.15
Eine Transaktion!
… oder:
Mehrere Transaktionen?
Hinsichtlich des DML gegen die
„eigenen“ Tabelle(n)?
Hinsichtlich der Veränderung
des Session State?
Wie verwaltet APEX Transaktionen?
Was Sie schon immer über APEX-Transaktionen wissen wollten10 20.04.15
Im Debug sehen wir für das Page Rendering…
… und im Page Processing:
Wie verwaltet APEX Transaktionen?
Was Oracle dazu sagt…
Was Sie schon immer über APEX-Transaktionen wissen wollten11 20.04.15
Im Application Builder User’s Guide (Version 5.0) findet man kaum Informationen:
„If a validation fails, page processing stops, a rollback is issued, and the page
displays the error.“
Page 16-22
„Error Message - Enter the error message for this process. This message displays if
an unhandled exception is raised. After any error processing stops, a rollback is
issued and an error message displays.“
Page 17-19/20, 25-21
Die offizielle Dokumentation ist deshalb wenig nützlich.
Wie verwaltet APEX Transaktionen?
Was Oracle dazu sagt…
Was Sie schon immer über APEX-Transaktionen wissen wollten12 20.04.15
Im Thread “When commit is executed?” (eröffnet am 19.9.2008) finden wir die
folgenden Aussagen von Scott Spadafore (†), damals ein Entwickler von APEX:
„Commits are performed when you
explicitly issue them or
when you alter session state with assignment statements,
"select into" queries, or
OUT variable assignments to bind-variable notated page- or application-item
names or
when you call apex_util.set_session_state.
If you don't do any of that, no commits happen until the page processing completes.“
(20.9.2008, 11:12)
Wie verwaltet APEX Transaktionen?
Was Oracle dazu sagt…
Was Sie schon immer über APEX-Transaktionen wissen wollten13 20.04.15
In einem weiteren Beitrag zu diesem Thema schreibt Scott:
„… The "returning into" option on a DML process will cause a commit as it is one of
those session state altering actions. …
The session state altering transactions are not autonomous. They should be but
they aren't. …
Commits are not performed at the end of each process. They happen only in the
cases I listed.”
(28.9.2008 21:00)
Den Thread findet man unter:
https://community.oracle.com/thread/710781
Wie verwaltet APEX Transaktionen?
… und wie es im Überblick tatsächlich ist
Was Sie schon immer über APEX-Transaktionen wissen wollten14 20.04.15
COMMIT
Page Processing
Kein Fehler
COMMIT
ROLLBACK
Unbehandelte Exception
Page
Submit
Computations
Validations
Processes
Dynamic
execution of
SQL and
PL/SQL
COMMIT
(wenn Session State geändert)
COMMIT
(wenn Session State geändert)
COMMIT
(wenn Session State geändert)
Itemwerte werden in den Session
State übertragen
Was Sie schon immer über APEX-Transaktionen wissen wollten15 20.04.15
Wie funktioniert‘s im Detail?
Wie funktioniert‘s im Detail?
Wie APEX den Session State verwaltet…
Was Sie schon immer über APEX-Transaktionen wissen wollten16 20.04.15
Neuer Wert für
Page- oder
Application-
Item X
Computation Ergebnis
OUT-Wert eines Prozesses
APEX_UTIL.SET_SESSION_STATE
Session
State
SELECTion des
alten (falls
vorhanden)
Itemwerts aus
dem Session
State
Neuer Wert
=
Alter Wert?
NULL ist gleich NULL
in diesem Fall!
Es wird keine
Aktion
durchgeführt.
(seit 4.1.1)
Ja
Nein
INSERT oder
UPDATE gegen
den Session
State
COMMIT
Ein (momentan) nicht
existierender Wert wird
wie NULL behandelt.
Wie funktioniert‘s im Detail?
Wie APEX SQL und PL/SQL ausführt (I)
Was Sie schon immer über APEX-Transaktionen wissen wollten17 20.04.15
Pro Item
Ermittlung der Bind-Variablen (Items)
Parsing of PL/SQL with DBMS_SYS_SQL.PARSE
Session
State
Abrufen der aktuellen Werte der Items aus dem
Session State, Binden der Werte mit
DBMS_SYS_SQL.BIND_VARIABLE
(und Merken im Speicher, seit 4.1.1).
begin
select ...
into :P1_ITEM_A
...;
:P1_ITEM_B := ...;
end;
P1_ITEM_A, P1_ITEM_B, ...
Ausführung mit DBMS_SYS_SQL.EXECUTE
PROCEDURE anonymous(
P1_ITEM_A IN OUT VARCHAR2,
P1_ITEM_B IN OUT VARCHAR2,
...
) IS
BEGIN
/* your code using
P1_ITEM_A, P1_ITEM_B
etc.
*/
END;
Auslesen der OUT-Werte mit
DBMS_SYS_SQL.VARIABLE_VALUE
Sichern des neuen Werts
im Session State
COMMIT,
falls neuer
Wert != alter
Wert im
Session
State
Seit 4.1.1:
IN != OUT?
Ja
Vor 4.1.1
Keine
Aktion
Nein
Wie funktioniert‘s im Detail?
Wie APEX SQL und PL/SQL ausführt (II)
Was Sie schon immer über APEX-Transaktionen wissen wollten18 20.04.15
Diese Vorgehensweise wird offensichtlich nahezu überall in APEX verwendet:
Computations
(insbesondere Typ “PL/SQL Function Body”)
Validations
(insb. Typen “Function Returning Boolean” und “Function Retuning Error Text”)
Processes:
– PL/SQL Processes,
– On-Demand Page oder Application Processes
– Dynamic Actions vom Typ “Execute PL/SQL Code”
Im Page Rendering läuft es genauso, d.h. wenn der Session State tatsächlich
verändert wird, führt APEX ein COMMIT aus.
Was Sie schon immer über APEX-Transaktionen wissen wollten19 20.04.15
Einige Probleme und wie man sie
vermeiden kann
Einige Probleme und wie man sie vermeiden kann
Computations werden nicht zurückgerollt
Was Sie schon immer über APEX-Transaktionen wissen wollten20 20.04.15
Wenn die Ausführung einer Computation nicht zu einer unbehandelten Exception
führt, dann wird das Ergebnis unmittelbar in den Session State weggeschrieben
und committed – falls der Wert sich dadurch ändert (seit 4.1.1).
Jede Computation läuft dadurch (meist) in ihrer „eigenen“ Transaktion.
Das Scheitern einer Computation beeinflusst folglich nicht die Ergebnisse/Aktionen
vorhergehender Computations.
Nachfolgende, gescheiterte Validations oder Processes, die ein ROLLBACK
auslösen, beeinflussen die Computation nicht mehr.
Kein „transaktionales“ Verhalten von Computations
erwarten oder voraussetzen.
Einige Probleme und wie man sie vermeiden kann
Validations können den Session State verändern und COMMITs auslösen
Was Sie schon immer über APEX-Transaktionen wissen wollten21 20.04.15
Wenn eine Validation vom Typ “Function Returning Boolean” oder “Function
Returning Error Text” erfolgreich ausgefürht wurde und dabei Werte von Items
verändert hat, wird die Änderung unmittelbar in den Session State weggeschrieben
und committed – falls der Wert sich dadurch ändert (seit 4.1.1).
Nachfolgende, gescheiterte Validations oder Processes, die ein ROLLBACK
auslösen, tangieren nicht mehr die Veränderungen, die die Validation durchgeführt
hat.
Vorsicht bei DML in Validations und Veränderungen
am Session State – ist es wirklich notwendig?
Einige Probleme und wie man sie vermeiden kann
Mischen von Bind-Syntax und Prozeduraufrufen zum Ändern des Session State I
Was Sie schon immer über APEX-Transaktionen wissen wollten22 20.04.15
Betrachten wir das folgende PL/SQL eines Prozesses:
Aufrufe von Prozeduren von APEX_UTIL wie SET_SESSION_STATE,
CLEAR_APP_CACHE, CLEAR_PAGE_CACHE und CLEAR_USER_CACHE lösen mglw.
ein COMMIT aus, aber die Änderungen gegen den Session State können (teilweise)
wieder überschrieben werden durch APEX’s Behandlung der OUT-Werte der Bind-
Variablen.
Methoden zum Zugriff auf den Session State nicht mischen.
:P5_ITEM_A := UPPER(:P5_ITEM_A);
IF :P5_ITEM_A = 'ABC' THEN
APEX_UTIL.SET_SESSION_STATE('P5_ITEM_A', 'XXX');
ELSE
APEX_UTIL.SET_SESSION_STATE('P5_ITEM_A', 'WWW');
END IF;
Einige Probleme und wie man sie vermeiden kann
Mischen von Bind-Syntax und Prozeduraufrufen zum Ändern des Session State II
Was Sie schon immer über APEX-Transaktionen wissen wollten23 20.04.15
Betrachten wir z.B. das folgende PL/SQL eines Prozesses:
Der Wert der Bind-Variable für das Items wird u.U. geändert. Dadurch kann sich
der OUT-Wert der Variable vom IN-Wert unterscheiden.
Der Session State der Seite wird im Rahmen des Prozesses in jedem Fall gelöscht
und damit auch der Wert des Items im Session State.
Dies kann jedoch nur vorübergehend sein – im Rahmen der Behandlung der
Verarbeitung der OUT-Werte schreibt APEX u.U. z.B. den Wert „abcWWW“ für das
Item in den Session State.
IF length(:P5_ITEM_A) < 10 THEN
:P5_ITEM_A := :P5_ITEM_A || 'WWW';
END IF;
APEX_UTIL.CLEAR_PAGE_CACHE(5);
Einige Probleme und wie man sie vermeiden kann
Automatic Row Processing mit Return Key führt COMMIT aus
Was Sie schon immer über APEX-Transaktionen wissen wollten24 20.04.15
Dieser Prozess führt ein COMMIT aus, falls
der Wert im Session State sich von dem
(neuen) Schlüsselwert unterscheidet.
Dies wird im Normalfall (z.B. Schlüssel aus
Sequence) praktisch immer der Fall sein.
Folgende Prozesse, die ein ROLLBACK
auslösen, rollen die Modifikationen des
Automatic DML-Prozesses nicht zurück.
Nur verwenden, wenn nötig.
Schlüsselwert vorher z.B. mit Computation
aus Sequence besorgen.
Was Sie schon immer über APEX-Transaktionen wissen wollten25 20.04.15
Oracles Antwort
oder:
Das Schicksal eines
Service Requests
Oracles Antwort
oder: Das Schicksal eines Service Requests
Was Sie schon immer über APEX-Transaktionen wissen wollten26 20.04.15
SR 3-4905002531 : APEX commit behavior
The commit behavior of APEX seems to be pretty strange. It seems to be
committing while page processing whenever a real change is made in the session
cache. The desired behavior would be that the whole page processing is ONE
transaction, i.e. the developer decides if and when to commit.
Und das kam schließlich raus:
Was Sie schon immer über APEX-Transaktionen wissen wollten27 20.04.15
Fazit
Fazit
Was Sie schon immer über APEX-Transaktionen wissen wollten28 20.04.15
Das Transaktionsverhalten von APEX ist nicht (komplett) intuitiv…
– … es ist momentan sicher keine Stärke von APEX. Traurig, aber wahr.
– … es ist fast nicht dokumentiert.
– … es kann zu ernstzunehmenden Fehlern führen, die schwer aufzuspüren, zu
beheben und zu erklären sind.
Wenig ist sicher…
Dinge haben sich verändert, verändern sich und werden sich ändern:
– Z.B. die Modifikation von 4.1.0  4.1.1
– Wenn Sie einen Fall finden, der den Ausführungen hier widerspricht oder neue
Aspekte dieser Problematik beleuchtet – bitte lassen Sie es mich wissen.
Und: Hope for the best… ;-)
– APEX 5.1?
Fragen und Antworten
Michael Schmid
Senior Consultant
Tel. +49-162-291 47 61
michael.schmid@trivadis.com
20.04.15 Was Sie schon immer über APEX-Transaktionen wissen wollten35

Weitere ähnliche Inhalte

Ähnlich wie Was Sie schon immer über APEX-Transaktionen wissen wollten

Forms and Reports 12c - Processes and Automation in Development and Operations
Forms and Reports 12c - Processes and Automation in Development and OperationsForms and Reports 12c - Processes and Automation in Development and Operations
Forms and Reports 12c - Processes and Automation in Development and OperationsTorsten Kleiber
 
Anwendungsmodernisierung mit Oracle Application Express (APEX)
Anwendungsmodernisierung mit Oracle Application Express (APEX)Anwendungsmodernisierung mit Oracle Application Express (APEX)
Anwendungsmodernisierung mit Oracle Application Express (APEX)Niels de Bruijn
 
Schatten IT erfolgreich bekämpfen
Schatten IT erfolgreich bekämpfenSchatten IT erfolgreich bekämpfen
Schatten IT erfolgreich bekämpfenNiels de Bruijn
 
Funktionale Reaktive Programmierung mit Sodium
Funktionale Reaktive Programmierung mit SodiumFunktionale Reaktive Programmierung mit Sodium
Funktionale Reaktive Programmierung mit SodiumTorsten Fink
 
SAP SuccessFactors Architektur und Administration
SAP SuccessFactors Architektur und AdministrationSAP SuccessFactors Architektur und Administration
SAP SuccessFactors Architektur und AdministrationMichael Mueller
 
Schlanke Maschinendatenerfassung für produzierende Unternehmen
Schlanke Maschinendatenerfassung für produzierende UnternehmenSchlanke Maschinendatenerfassung für produzierende Unternehmen
Schlanke Maschinendatenerfassung für produzierende UnternehmenLineMetrics
 
Windows as a Service - Herausforderungen ohne Windows Desktop Analytics
Windows as a Service - Herausforderungen ohne Windows Desktop AnalyticsWindows as a Service - Herausforderungen ohne Windows Desktop Analytics
Windows as a Service - Herausforderungen ohne Windows Desktop AnalyticsFabian Niesen
 
MT AG Rapid Application Development mit APEX 5 (Important: latest version on ...
MT AG Rapid Application Development mit APEX 5 (Important: latest version on ...MT AG Rapid Application Development mit APEX 5 (Important: latest version on ...
MT AG Rapid Application Development mit APEX 5 (Important: latest version on ...Niels de Bruijn
 
2 1a-prozessmodellierung-epk-einfuehrung-200406
2 1a-prozessmodellierung-epk-einfuehrung-2004062 1a-prozessmodellierung-epk-einfuehrung-200406
2 1a-prozessmodellierung-epk-einfuehrung-200406Claus Brell
 
ExsoFlow Workflow & IntegrationServer technische Information
ExsoFlow Workflow & IntegrationServer technische InformationExsoFlow Workflow & IntegrationServer technische Information
ExsoFlow Workflow & IntegrationServer technische InformationEXSO. business solutions GmbH
 
Oracle BAM - Volle Übersicht über Meta- und Prozessdaten - DOAG Konferenz 201...
Oracle BAM - Volle Übersicht über Meta- und Prozessdaten - DOAG Konferenz 201...Oracle BAM - Volle Übersicht über Meta- und Prozessdaten - DOAG Konferenz 201...
Oracle BAM - Volle Übersicht über Meta- und Prozessdaten - DOAG Konferenz 201...OPITZ CONSULTING Deutschland
 
WeWebU OpenWorkdesk bei transactio
WeWebU OpenWorkdesk bei transactioWeWebU OpenWorkdesk bei transactio
WeWebU OpenWorkdesk bei transactioWeWebU Software AG
 
OSMC 2016 | Komponenten Monitoring und Performance Management mit Icinga bei ...
OSMC 2016 | Komponenten Monitoring und Performance Management mit Icinga bei ...OSMC 2016 | Komponenten Monitoring und Performance Management mit Icinga bei ...
OSMC 2016 | Komponenten Monitoring und Performance Management mit Icinga bei ...NETWAYS
 
OSMC 2016 - Komponenten Monitoring und Performance Management mit Icinga bei ...
OSMC 2016 - Komponenten Monitoring und Performance Management mit Icinga bei ...OSMC 2016 - Komponenten Monitoring und Performance Management mit Icinga bei ...
OSMC 2016 - Komponenten Monitoring und Performance Management mit Icinga bei ...NETWAYS
 
OSMC 2013 | Enterprise Platforms Monitoring at s IT Solutions AT by Johannes ...
OSMC 2013 | Enterprise Platforms Monitoring at s IT Solutions AT by Johannes ...OSMC 2013 | Enterprise Platforms Monitoring at s IT Solutions AT by Johannes ...
OSMC 2013 | Enterprise Platforms Monitoring at s IT Solutions AT by Johannes ...NETWAYS
 
Auf gehts in die Cloud: „Das kann doch nicht so schwer sein!“
Auf gehts in die Cloud: „Das kann doch nicht so schwer sein!“Auf gehts in die Cloud: „Das kann doch nicht so schwer sein!“
Auf gehts in die Cloud: „Das kann doch nicht so schwer sein!“OPEN KNOWLEDGE GmbH
 
07 06 Xpertivy (Office 2003)
07 06 Xpertivy (Office 2003)07 06 Xpertivy (Office 2003)
07 06 Xpertivy (Office 2003)soreco
 

Ähnlich wie Was Sie schon immer über APEX-Transaktionen wissen wollten (20)

Forms and Reports 12c - Processes and Automation in Development and Operations
Forms and Reports 12c - Processes and Automation in Development and OperationsForms and Reports 12c - Processes and Automation in Development and Operations
Forms and Reports 12c - Processes and Automation in Development and Operations
 
Anwendungsmodernisierung mit Oracle Application Express (APEX)
Anwendungsmodernisierung mit Oracle Application Express (APEX)Anwendungsmodernisierung mit Oracle Application Express (APEX)
Anwendungsmodernisierung mit Oracle Application Express (APEX)
 
CWMC Insights 2020|07 - Technischer Überblick SAP MII
CWMC Insights 2020|07 - Technischer Überblick SAP MIICWMC Insights 2020|07 - Technischer Überblick SAP MII
CWMC Insights 2020|07 - Technischer Überblick SAP MII
 
Schatten IT erfolgreich bekämpfen
Schatten IT erfolgreich bekämpfenSchatten IT erfolgreich bekämpfen
Schatten IT erfolgreich bekämpfen
 
CWMC Insights 2020|15 - Einführung SAPMEINT-Konfiguration
CWMC Insights 2020|15 - Einführung SAPMEINT-KonfigurationCWMC Insights 2020|15 - Einführung SAPMEINT-Konfiguration
CWMC Insights 2020|15 - Einführung SAPMEINT-Konfiguration
 
Funktionale Reaktive Programmierung mit Sodium
Funktionale Reaktive Programmierung mit SodiumFunktionale Reaktive Programmierung mit Sodium
Funktionale Reaktive Programmierung mit Sodium
 
SAP SuccessFactors Architektur und Administration
SAP SuccessFactors Architektur und AdministrationSAP SuccessFactors Architektur und Administration
SAP SuccessFactors Architektur und Administration
 
Schlanke Maschinendatenerfassung für produzierende Unternehmen
Schlanke Maschinendatenerfassung für produzierende UnternehmenSchlanke Maschinendatenerfassung für produzierende Unternehmen
Schlanke Maschinendatenerfassung für produzierende Unternehmen
 
20101118 bpm und soa
20101118 bpm und soa20101118 bpm und soa
20101118 bpm und soa
 
Windows as a Service - Herausforderungen ohne Windows Desktop Analytics
Windows as a Service - Herausforderungen ohne Windows Desktop AnalyticsWindows as a Service - Herausforderungen ohne Windows Desktop Analytics
Windows as a Service - Herausforderungen ohne Windows Desktop Analytics
 
MT AG Rapid Application Development mit APEX 5 (Important: latest version on ...
MT AG Rapid Application Development mit APEX 5 (Important: latest version on ...MT AG Rapid Application Development mit APEX 5 (Important: latest version on ...
MT AG Rapid Application Development mit APEX 5 (Important: latest version on ...
 
2 1a-prozessmodellierung-epk-einfuehrung-200406
2 1a-prozessmodellierung-epk-einfuehrung-2004062 1a-prozessmodellierung-epk-einfuehrung-200406
2 1a-prozessmodellierung-epk-einfuehrung-200406
 
ExsoFlow Workflow & IntegrationServer technische Information
ExsoFlow Workflow & IntegrationServer technische InformationExsoFlow Workflow & IntegrationServer technische Information
ExsoFlow Workflow & IntegrationServer technische Information
 
Oracle BAM - Volle Übersicht über Meta- und Prozessdaten - DOAG Konferenz 201...
Oracle BAM - Volle Übersicht über Meta- und Prozessdaten - DOAG Konferenz 201...Oracle BAM - Volle Übersicht über Meta- und Prozessdaten - DOAG Konferenz 201...
Oracle BAM - Volle Übersicht über Meta- und Prozessdaten - DOAG Konferenz 201...
 
WeWebU OpenWorkdesk bei transactio
WeWebU OpenWorkdesk bei transactioWeWebU OpenWorkdesk bei transactio
WeWebU OpenWorkdesk bei transactio
 
OSMC 2016 | Komponenten Monitoring und Performance Management mit Icinga bei ...
OSMC 2016 | Komponenten Monitoring und Performance Management mit Icinga bei ...OSMC 2016 | Komponenten Monitoring und Performance Management mit Icinga bei ...
OSMC 2016 | Komponenten Monitoring und Performance Management mit Icinga bei ...
 
OSMC 2016 - Komponenten Monitoring und Performance Management mit Icinga bei ...
OSMC 2016 - Komponenten Monitoring und Performance Management mit Icinga bei ...OSMC 2016 - Komponenten Monitoring und Performance Management mit Icinga bei ...
OSMC 2016 - Komponenten Monitoring und Performance Management mit Icinga bei ...
 
OSMC 2013 | Enterprise Platforms Monitoring at s IT Solutions AT by Johannes ...
OSMC 2013 | Enterprise Platforms Monitoring at s IT Solutions AT by Johannes ...OSMC 2013 | Enterprise Platforms Monitoring at s IT Solutions AT by Johannes ...
OSMC 2013 | Enterprise Platforms Monitoring at s IT Solutions AT by Johannes ...
 
Auf gehts in die Cloud: „Das kann doch nicht so schwer sein!“
Auf gehts in die Cloud: „Das kann doch nicht so schwer sein!“Auf gehts in die Cloud: „Das kann doch nicht so schwer sein!“
Auf gehts in die Cloud: „Das kann doch nicht so schwer sein!“
 
07 06 Xpertivy (Office 2003)
07 06 Xpertivy (Office 2003)07 06 Xpertivy (Office 2003)
07 06 Xpertivy (Office 2003)
 

Mehr von Trivadis

Azure Days 2019: Azure Chatbot Development for Airline Irregularities (Remco ...
Azure Days 2019: Azure Chatbot Development for Airline Irregularities (Remco ...Azure Days 2019: Azure Chatbot Development for Airline Irregularities (Remco ...
Azure Days 2019: Azure Chatbot Development for Airline Irregularities (Remco ...Trivadis
 
Azure Days 2019: Trivadis Azure Foundation – Das Fundament für den ... (Nisan...
Azure Days 2019: Trivadis Azure Foundation – Das Fundament für den ... (Nisan...Azure Days 2019: Trivadis Azure Foundation – Das Fundament für den ... (Nisan...
Azure Days 2019: Trivadis Azure Foundation – Das Fundament für den ... (Nisan...Trivadis
 
Azure Days 2019: Business Intelligence auf Azure (Marco Amhof & Yves Mauron)
Azure Days 2019: Business Intelligence auf Azure (Marco Amhof & Yves Mauron)Azure Days 2019: Business Intelligence auf Azure (Marco Amhof & Yves Mauron)
Azure Days 2019: Business Intelligence auf Azure (Marco Amhof & Yves Mauron)Trivadis
 
Azure Days 2019: Master the Move to Azure (Konrad Brunner)
Azure Days 2019: Master the Move to Azure (Konrad Brunner)Azure Days 2019: Master the Move to Azure (Konrad Brunner)
Azure Days 2019: Master the Move to Azure (Konrad Brunner)Trivadis
 
Azure Days 2019: Keynote Azure Switzerland – Status Quo und Ausblick (Primo A...
Azure Days 2019: Keynote Azure Switzerland – Status Quo und Ausblick (Primo A...Azure Days 2019: Keynote Azure Switzerland – Status Quo und Ausblick (Primo A...
Azure Days 2019: Keynote Azure Switzerland – Status Quo und Ausblick (Primo A...Trivadis
 
Azure Days 2019: Grösser und Komplexer ist nicht immer besser (Meinrad Weiss)
Azure Days 2019: Grösser und Komplexer ist nicht immer besser (Meinrad Weiss)Azure Days 2019: Grösser und Komplexer ist nicht immer besser (Meinrad Weiss)
Azure Days 2019: Grösser und Komplexer ist nicht immer besser (Meinrad Weiss)Trivadis
 
Azure Days 2019: Get Connected with Azure API Management (Gerry Keune & Stefa...
Azure Days 2019: Get Connected with Azure API Management (Gerry Keune & Stefa...Azure Days 2019: Get Connected with Azure API Management (Gerry Keune & Stefa...
Azure Days 2019: Get Connected with Azure API Management (Gerry Keune & Stefa...Trivadis
 
Azure Days 2019: Infrastructure as Code auf Azure (Jonas Wanninger & Daniel H...
Azure Days 2019: Infrastructure as Code auf Azure (Jonas Wanninger & Daniel H...Azure Days 2019: Infrastructure as Code auf Azure (Jonas Wanninger & Daniel H...
Azure Days 2019: Infrastructure as Code auf Azure (Jonas Wanninger & Daniel H...Trivadis
 
Azure Days 2019: Wie bringt man eine Data Analytics Plattform in die Cloud? (...
Azure Days 2019: Wie bringt man eine Data Analytics Plattform in die Cloud? (...Azure Days 2019: Wie bringt man eine Data Analytics Plattform in die Cloud? (...
Azure Days 2019: Wie bringt man eine Data Analytics Plattform in die Cloud? (...Trivadis
 
Azure Days 2019: Azure@Helsana: Die Erweiterung von Dynamics CRM mit Azure Po...
Azure Days 2019: Azure@Helsana: Die Erweiterung von Dynamics CRM mit Azure Po...Azure Days 2019: Azure@Helsana: Die Erweiterung von Dynamics CRM mit Azure Po...
Azure Days 2019: Azure@Helsana: Die Erweiterung von Dynamics CRM mit Azure Po...Trivadis
 
TechEvent 2019: Kundenstory - Kein Angebot, kein Auftrag – Wie Du ein individ...
TechEvent 2019: Kundenstory - Kein Angebot, kein Auftrag – Wie Du ein individ...TechEvent 2019: Kundenstory - Kein Angebot, kein Auftrag – Wie Du ein individ...
TechEvent 2019: Kundenstory - Kein Angebot, kein Auftrag – Wie Du ein individ...Trivadis
 
TechEvent 2019: Oracle Database Appliance M/L - Erfahrungen und Erfolgsmethod...
TechEvent 2019: Oracle Database Appliance M/L - Erfahrungen und Erfolgsmethod...TechEvent 2019: Oracle Database Appliance M/L - Erfahrungen und Erfolgsmethod...
TechEvent 2019: Oracle Database Appliance M/L - Erfahrungen und Erfolgsmethod...Trivadis
 
TechEvent 2019: Security 101 für Web Entwickler; Roland Krüger - Trivadis
TechEvent 2019: Security 101 für Web Entwickler; Roland Krüger - TrivadisTechEvent 2019: Security 101 für Web Entwickler; Roland Krüger - Trivadis
TechEvent 2019: Security 101 für Web Entwickler; Roland Krüger - TrivadisTrivadis
 
TechEvent 2019: Trivadis & Swisscom Partner Angebote; Konrad Häfeli, Markus O...
TechEvent 2019: Trivadis & Swisscom Partner Angebote; Konrad Häfeli, Markus O...TechEvent 2019: Trivadis & Swisscom Partner Angebote; Konrad Häfeli, Markus O...
TechEvent 2019: Trivadis & Swisscom Partner Angebote; Konrad Häfeli, Markus O...Trivadis
 
TechEvent 2019: DBaaS from Swisscom Cloud powered by Trivadis; Konrad Häfeli ...
TechEvent 2019: DBaaS from Swisscom Cloud powered by Trivadis; Konrad Häfeli ...TechEvent 2019: DBaaS from Swisscom Cloud powered by Trivadis; Konrad Häfeli ...
TechEvent 2019: DBaaS from Swisscom Cloud powered by Trivadis; Konrad Häfeli ...Trivadis
 
TechEvent 2019: Status of the partnership Trivadis and EDB - Comparing Postgr...
TechEvent 2019: Status of the partnership Trivadis and EDB - Comparing Postgr...TechEvent 2019: Status of the partnership Trivadis and EDB - Comparing Postgr...
TechEvent 2019: Status of the partnership Trivadis and EDB - Comparing Postgr...Trivadis
 
TechEvent 2019: More Agile, More AI, More Cloud! Less Work?!; Oliver Dörr - T...
TechEvent 2019: More Agile, More AI, More Cloud! Less Work?!; Oliver Dörr - T...TechEvent 2019: More Agile, More AI, More Cloud! Less Work?!; Oliver Dörr - T...
TechEvent 2019: More Agile, More AI, More Cloud! Less Work?!; Oliver Dörr - T...Trivadis
 
TechEvent 2019: Kundenstory - Vom Hauptmann zu Köpenick zum Polizisten 2020 -...
TechEvent 2019: Kundenstory - Vom Hauptmann zu Köpenick zum Polizisten 2020 -...TechEvent 2019: Kundenstory - Vom Hauptmann zu Köpenick zum Polizisten 2020 -...
TechEvent 2019: Kundenstory - Vom Hauptmann zu Köpenick zum Polizisten 2020 -...Trivadis
 
TechEvent 2019: Vom Rechenzentrum in die Oracle Cloud - Übertragungsmethoden;...
TechEvent 2019: Vom Rechenzentrum in die Oracle Cloud - Übertragungsmethoden;...TechEvent 2019: Vom Rechenzentrum in die Oracle Cloud - Übertragungsmethoden;...
TechEvent 2019: Vom Rechenzentrum in die Oracle Cloud - Übertragungsmethoden;...Trivadis
 
TechEvent 2019: The sleeping Power of Data; Eberhard Lösch - Trivadis
TechEvent 2019: The sleeping Power of Data; Eberhard Lösch - TrivadisTechEvent 2019: The sleeping Power of Data; Eberhard Lösch - Trivadis
TechEvent 2019: The sleeping Power of Data; Eberhard Lösch - TrivadisTrivadis
 

Mehr von Trivadis (20)

Azure Days 2019: Azure Chatbot Development for Airline Irregularities (Remco ...
Azure Days 2019: Azure Chatbot Development for Airline Irregularities (Remco ...Azure Days 2019: Azure Chatbot Development for Airline Irregularities (Remco ...
Azure Days 2019: Azure Chatbot Development for Airline Irregularities (Remco ...
 
Azure Days 2019: Trivadis Azure Foundation – Das Fundament für den ... (Nisan...
Azure Days 2019: Trivadis Azure Foundation – Das Fundament für den ... (Nisan...Azure Days 2019: Trivadis Azure Foundation – Das Fundament für den ... (Nisan...
Azure Days 2019: Trivadis Azure Foundation – Das Fundament für den ... (Nisan...
 
Azure Days 2019: Business Intelligence auf Azure (Marco Amhof & Yves Mauron)
Azure Days 2019: Business Intelligence auf Azure (Marco Amhof & Yves Mauron)Azure Days 2019: Business Intelligence auf Azure (Marco Amhof & Yves Mauron)
Azure Days 2019: Business Intelligence auf Azure (Marco Amhof & Yves Mauron)
 
Azure Days 2019: Master the Move to Azure (Konrad Brunner)
Azure Days 2019: Master the Move to Azure (Konrad Brunner)Azure Days 2019: Master the Move to Azure (Konrad Brunner)
Azure Days 2019: Master the Move to Azure (Konrad Brunner)
 
Azure Days 2019: Keynote Azure Switzerland – Status Quo und Ausblick (Primo A...
Azure Days 2019: Keynote Azure Switzerland – Status Quo und Ausblick (Primo A...Azure Days 2019: Keynote Azure Switzerland – Status Quo und Ausblick (Primo A...
Azure Days 2019: Keynote Azure Switzerland – Status Quo und Ausblick (Primo A...
 
Azure Days 2019: Grösser und Komplexer ist nicht immer besser (Meinrad Weiss)
Azure Days 2019: Grösser und Komplexer ist nicht immer besser (Meinrad Weiss)Azure Days 2019: Grösser und Komplexer ist nicht immer besser (Meinrad Weiss)
Azure Days 2019: Grösser und Komplexer ist nicht immer besser (Meinrad Weiss)
 
Azure Days 2019: Get Connected with Azure API Management (Gerry Keune & Stefa...
Azure Days 2019: Get Connected with Azure API Management (Gerry Keune & Stefa...Azure Days 2019: Get Connected with Azure API Management (Gerry Keune & Stefa...
Azure Days 2019: Get Connected with Azure API Management (Gerry Keune & Stefa...
 
Azure Days 2019: Infrastructure as Code auf Azure (Jonas Wanninger & Daniel H...
Azure Days 2019: Infrastructure as Code auf Azure (Jonas Wanninger & Daniel H...Azure Days 2019: Infrastructure as Code auf Azure (Jonas Wanninger & Daniel H...
Azure Days 2019: Infrastructure as Code auf Azure (Jonas Wanninger & Daniel H...
 
Azure Days 2019: Wie bringt man eine Data Analytics Plattform in die Cloud? (...
Azure Days 2019: Wie bringt man eine Data Analytics Plattform in die Cloud? (...Azure Days 2019: Wie bringt man eine Data Analytics Plattform in die Cloud? (...
Azure Days 2019: Wie bringt man eine Data Analytics Plattform in die Cloud? (...
 
Azure Days 2019: Azure@Helsana: Die Erweiterung von Dynamics CRM mit Azure Po...
Azure Days 2019: Azure@Helsana: Die Erweiterung von Dynamics CRM mit Azure Po...Azure Days 2019: Azure@Helsana: Die Erweiterung von Dynamics CRM mit Azure Po...
Azure Days 2019: Azure@Helsana: Die Erweiterung von Dynamics CRM mit Azure Po...
 
TechEvent 2019: Kundenstory - Kein Angebot, kein Auftrag – Wie Du ein individ...
TechEvent 2019: Kundenstory - Kein Angebot, kein Auftrag – Wie Du ein individ...TechEvent 2019: Kundenstory - Kein Angebot, kein Auftrag – Wie Du ein individ...
TechEvent 2019: Kundenstory - Kein Angebot, kein Auftrag – Wie Du ein individ...
 
TechEvent 2019: Oracle Database Appliance M/L - Erfahrungen und Erfolgsmethod...
TechEvent 2019: Oracle Database Appliance M/L - Erfahrungen und Erfolgsmethod...TechEvent 2019: Oracle Database Appliance M/L - Erfahrungen und Erfolgsmethod...
TechEvent 2019: Oracle Database Appliance M/L - Erfahrungen und Erfolgsmethod...
 
TechEvent 2019: Security 101 für Web Entwickler; Roland Krüger - Trivadis
TechEvent 2019: Security 101 für Web Entwickler; Roland Krüger - TrivadisTechEvent 2019: Security 101 für Web Entwickler; Roland Krüger - Trivadis
TechEvent 2019: Security 101 für Web Entwickler; Roland Krüger - Trivadis
 
TechEvent 2019: Trivadis & Swisscom Partner Angebote; Konrad Häfeli, Markus O...
TechEvent 2019: Trivadis & Swisscom Partner Angebote; Konrad Häfeli, Markus O...TechEvent 2019: Trivadis & Swisscom Partner Angebote; Konrad Häfeli, Markus O...
TechEvent 2019: Trivadis & Swisscom Partner Angebote; Konrad Häfeli, Markus O...
 
TechEvent 2019: DBaaS from Swisscom Cloud powered by Trivadis; Konrad Häfeli ...
TechEvent 2019: DBaaS from Swisscom Cloud powered by Trivadis; Konrad Häfeli ...TechEvent 2019: DBaaS from Swisscom Cloud powered by Trivadis; Konrad Häfeli ...
TechEvent 2019: DBaaS from Swisscom Cloud powered by Trivadis; Konrad Häfeli ...
 
TechEvent 2019: Status of the partnership Trivadis and EDB - Comparing Postgr...
TechEvent 2019: Status of the partnership Trivadis and EDB - Comparing Postgr...TechEvent 2019: Status of the partnership Trivadis and EDB - Comparing Postgr...
TechEvent 2019: Status of the partnership Trivadis and EDB - Comparing Postgr...
 
TechEvent 2019: More Agile, More AI, More Cloud! Less Work?!; Oliver Dörr - T...
TechEvent 2019: More Agile, More AI, More Cloud! Less Work?!; Oliver Dörr - T...TechEvent 2019: More Agile, More AI, More Cloud! Less Work?!; Oliver Dörr - T...
TechEvent 2019: More Agile, More AI, More Cloud! Less Work?!; Oliver Dörr - T...
 
TechEvent 2019: Kundenstory - Vom Hauptmann zu Köpenick zum Polizisten 2020 -...
TechEvent 2019: Kundenstory - Vom Hauptmann zu Köpenick zum Polizisten 2020 -...TechEvent 2019: Kundenstory - Vom Hauptmann zu Köpenick zum Polizisten 2020 -...
TechEvent 2019: Kundenstory - Vom Hauptmann zu Köpenick zum Polizisten 2020 -...
 
TechEvent 2019: Vom Rechenzentrum in die Oracle Cloud - Übertragungsmethoden;...
TechEvent 2019: Vom Rechenzentrum in die Oracle Cloud - Übertragungsmethoden;...TechEvent 2019: Vom Rechenzentrum in die Oracle Cloud - Übertragungsmethoden;...
TechEvent 2019: Vom Rechenzentrum in die Oracle Cloud - Übertragungsmethoden;...
 
TechEvent 2019: The sleeping Power of Data; Eberhard Lösch - Trivadis
TechEvent 2019: The sleeping Power of Data; Eberhard Lösch - TrivadisTechEvent 2019: The sleeping Power of Data; Eberhard Lösch - Trivadis
TechEvent 2019: The sleeping Power of Data; Eberhard Lösch - Trivadis
 

Was Sie schon immer über APEX-Transaktionen wissen wollten

  • 1. BASEL BERN BRUGG DÜSSELDORF FRANKFURT A.M. FREIBURG I.BR. GENF HAMBURG KOPENHAGEN LAUSANNE MÜNCHEN STUTTGART WIEN ZÜRICH Was Sie schon immer über APEX- Transaktionen wissen wollten Michael Schmid Senior Consultant … und über das Session State Handling erfahren wollten
  • 2. Unser Unternehmen. © Trivadis – Das Unternehmen (Kurzpräsentation)2 5/4/2016 Trivadis ist führend bei der IT-Beratung, der Systemintegration, dem Solution Engineering und der Erbringung von IT-Services mit Fokussierung auf - und -Technologien in der Schweiz, Deutschland, Österreich und Dänemark. Trivadis erbringt ihre Leistungen aus den strategischen Geschäftsfeldern: Trivadis Services übernimmt den korrespondierenden Betrieb Ihrer IT Systeme. B E T R I E B
  • 3. KOPENHAGEN MÜNCHEN LAUSANNE BERN ZÜRICH BRUGG GENF HAMBURG DÜSSELDORF FRANKFURT STUTTGART FREIBURG BASEL WIEN Mit über 600 IT- und Fachexperten bei Ihnen vor Ort. © Trivadis – Das Unternehmen (Kurzpräsentation)3 5/4/2016 14 Trivadis Niederlassungen mit über 600 Mitarbeitenden. Über 200 Service Level Agreements. Mehr als 4'000 Trainingsteilnehmer. Forschungs- und Entwicklungsbudget: CHF 5.0 Mio. Finanziell unabhängig und nachhaltig profitabel. Erfahrung aus mehr als 1'900 Projekten pro Jahr bei über 800 Kunden.
  • 4. Agenda Was Sie schon immer über APEX-Transaktionen wissen wollten4 20.04.15 1. Transaktionen und das ACID-Prinzip 2. Wie verwaltet APEX Transaktionen? Was wir erwarten würden… Was Oracle dazu sagt… … und wie es im Überblick tatsächlich ist. 3. Wie funktioniert‘s im Detail? Wie APEX den Session State verwaltet… … und SQL und PL/SQL ausführt 4. Einige Probleme und wie man sie vermeiden kann 5. Oracles Antwort oder: Das Schicksal eines Service Requests 6. Fazit
  • 5. Was Sie schon immer über APEX-Transaktionen wissen wollten5 20.04.15 Transaktionen und das ACID-Prinzip
  • 6. Transaktionen und das ACID-Prinzip Die Theorie Was Sie schon immer über APEX-Transaktionen wissen wollten6 20.04.15 „Als Transaktion […] bezeichnet man […] eine Folge von Programmschritten, die als eine logische Einheit betrachtet werden, weil sie den Datenbestand nach fehlerfreier und vollständiger Ausführung in einem konsistenten Zustand hinterlassen. Daher wird für eine Transaktion insbesondere gefordert, dass sie entweder vollständig und fehlerfrei oder gar nicht ausgeführt wird.“ (Wikipedia) Transaktionen müssen dem ACID-Prinzip unterliegen: – Atomicity (Atomarität)  Transaktionen werden ganz oder gar nicht ausgeführt. – Consistency (Konsistenz)  Transaktionen überführen das System von einem konsistenten Zustand in einen neuen konsistenten Zustand. – Isolation (Isolation)  Gleichzeitige Transaktionen beeinflussen sich nicht gegenseitig. – Durability (Dauerhaftigkeit)  Erfolgreiche Transaktionen sind dauerhaft.
  • 7. Transaktionen und das ACID-Prinzip Ein praktisches Beispiel Was Sie schon immer über APEX-Transaktionen wissen wollten7 20.04.15 Der Überweisungsvorgang besteht aus drei Schritten. Es dürfen entweder werden alle Schritte oder keiner durchgeführt. Bei einem Fehler z.B. zwischen Abbuchung und Gutschrift wird die gesamte bisherige Transaktion – und die Abbuchung – zurückgerollt. Die erfolgreiche und vollständige Transkation ist gegen Desaster etc. geschützt und damit dauerhaft. Transaktionsbeginn Buche Betrag vom Quellkonto ab Schreibe Betrag beim Zielkonto gut Protokolliere die Überweisung Transaktionsende
  • 8. Was Sie schon immer über APEX-Transaktionen wissen wollten8 20.04.15 Wie verwaltet APEX Transaktionen?
  • 9. Wie verwaltet APEX Transaktionen? Was wir erwarten würden… Was Sie schon immer über APEX-Transaktionen wissen wollten9 20.04.15 Eine Transaktion! … oder: Mehrere Transaktionen? Hinsichtlich des DML gegen die „eigenen“ Tabelle(n)? Hinsichtlich der Veränderung des Session State?
  • 10. Wie verwaltet APEX Transaktionen? Was Sie schon immer über APEX-Transaktionen wissen wollten10 20.04.15 Im Debug sehen wir für das Page Rendering… … und im Page Processing:
  • 11. Wie verwaltet APEX Transaktionen? Was Oracle dazu sagt… Was Sie schon immer über APEX-Transaktionen wissen wollten11 20.04.15 Im Application Builder User’s Guide (Version 5.0) findet man kaum Informationen: „If a validation fails, page processing stops, a rollback is issued, and the page displays the error.“ Page 16-22 „Error Message - Enter the error message for this process. This message displays if an unhandled exception is raised. After any error processing stops, a rollback is issued and an error message displays.“ Page 17-19/20, 25-21 Die offizielle Dokumentation ist deshalb wenig nützlich.
  • 12. Wie verwaltet APEX Transaktionen? Was Oracle dazu sagt… Was Sie schon immer über APEX-Transaktionen wissen wollten12 20.04.15 Im Thread “When commit is executed?” (eröffnet am 19.9.2008) finden wir die folgenden Aussagen von Scott Spadafore (†), damals ein Entwickler von APEX: „Commits are performed when you explicitly issue them or when you alter session state with assignment statements, "select into" queries, or OUT variable assignments to bind-variable notated page- or application-item names or when you call apex_util.set_session_state. If you don't do any of that, no commits happen until the page processing completes.“ (20.9.2008, 11:12)
  • 13. Wie verwaltet APEX Transaktionen? Was Oracle dazu sagt… Was Sie schon immer über APEX-Transaktionen wissen wollten13 20.04.15 In einem weiteren Beitrag zu diesem Thema schreibt Scott: „… The "returning into" option on a DML process will cause a commit as it is one of those session state altering actions. … The session state altering transactions are not autonomous. They should be but they aren't. … Commits are not performed at the end of each process. They happen only in the cases I listed.” (28.9.2008 21:00) Den Thread findet man unter: https://community.oracle.com/thread/710781
  • 14. Wie verwaltet APEX Transaktionen? … und wie es im Überblick tatsächlich ist Was Sie schon immer über APEX-Transaktionen wissen wollten14 20.04.15 COMMIT Page Processing Kein Fehler COMMIT ROLLBACK Unbehandelte Exception Page Submit Computations Validations Processes Dynamic execution of SQL and PL/SQL COMMIT (wenn Session State geändert) COMMIT (wenn Session State geändert) COMMIT (wenn Session State geändert) Itemwerte werden in den Session State übertragen
  • 15. Was Sie schon immer über APEX-Transaktionen wissen wollten15 20.04.15 Wie funktioniert‘s im Detail?
  • 16. Wie funktioniert‘s im Detail? Wie APEX den Session State verwaltet… Was Sie schon immer über APEX-Transaktionen wissen wollten16 20.04.15 Neuer Wert für Page- oder Application- Item X Computation Ergebnis OUT-Wert eines Prozesses APEX_UTIL.SET_SESSION_STATE Session State SELECTion des alten (falls vorhanden) Itemwerts aus dem Session State Neuer Wert = Alter Wert? NULL ist gleich NULL in diesem Fall! Es wird keine Aktion durchgeführt. (seit 4.1.1) Ja Nein INSERT oder UPDATE gegen den Session State COMMIT Ein (momentan) nicht existierender Wert wird wie NULL behandelt.
  • 17. Wie funktioniert‘s im Detail? Wie APEX SQL und PL/SQL ausführt (I) Was Sie schon immer über APEX-Transaktionen wissen wollten17 20.04.15 Pro Item Ermittlung der Bind-Variablen (Items) Parsing of PL/SQL with DBMS_SYS_SQL.PARSE Session State Abrufen der aktuellen Werte der Items aus dem Session State, Binden der Werte mit DBMS_SYS_SQL.BIND_VARIABLE (und Merken im Speicher, seit 4.1.1). begin select ... into :P1_ITEM_A ...; :P1_ITEM_B := ...; end; P1_ITEM_A, P1_ITEM_B, ... Ausführung mit DBMS_SYS_SQL.EXECUTE PROCEDURE anonymous( P1_ITEM_A IN OUT VARCHAR2, P1_ITEM_B IN OUT VARCHAR2, ... ) IS BEGIN /* your code using P1_ITEM_A, P1_ITEM_B etc. */ END; Auslesen der OUT-Werte mit DBMS_SYS_SQL.VARIABLE_VALUE Sichern des neuen Werts im Session State COMMIT, falls neuer Wert != alter Wert im Session State Seit 4.1.1: IN != OUT? Ja Vor 4.1.1 Keine Aktion Nein
  • 18. Wie funktioniert‘s im Detail? Wie APEX SQL und PL/SQL ausführt (II) Was Sie schon immer über APEX-Transaktionen wissen wollten18 20.04.15 Diese Vorgehensweise wird offensichtlich nahezu überall in APEX verwendet: Computations (insbesondere Typ “PL/SQL Function Body”) Validations (insb. Typen “Function Returning Boolean” und “Function Retuning Error Text”) Processes: – PL/SQL Processes, – On-Demand Page oder Application Processes – Dynamic Actions vom Typ “Execute PL/SQL Code” Im Page Rendering läuft es genauso, d.h. wenn der Session State tatsächlich verändert wird, führt APEX ein COMMIT aus.
  • 19. Was Sie schon immer über APEX-Transaktionen wissen wollten19 20.04.15 Einige Probleme und wie man sie vermeiden kann
  • 20. Einige Probleme und wie man sie vermeiden kann Computations werden nicht zurückgerollt Was Sie schon immer über APEX-Transaktionen wissen wollten20 20.04.15 Wenn die Ausführung einer Computation nicht zu einer unbehandelten Exception führt, dann wird das Ergebnis unmittelbar in den Session State weggeschrieben und committed – falls der Wert sich dadurch ändert (seit 4.1.1). Jede Computation läuft dadurch (meist) in ihrer „eigenen“ Transaktion. Das Scheitern einer Computation beeinflusst folglich nicht die Ergebnisse/Aktionen vorhergehender Computations. Nachfolgende, gescheiterte Validations oder Processes, die ein ROLLBACK auslösen, beeinflussen die Computation nicht mehr. Kein „transaktionales“ Verhalten von Computations erwarten oder voraussetzen.
  • 21. Einige Probleme und wie man sie vermeiden kann Validations können den Session State verändern und COMMITs auslösen Was Sie schon immer über APEX-Transaktionen wissen wollten21 20.04.15 Wenn eine Validation vom Typ “Function Returning Boolean” oder “Function Returning Error Text” erfolgreich ausgefürht wurde und dabei Werte von Items verändert hat, wird die Änderung unmittelbar in den Session State weggeschrieben und committed – falls der Wert sich dadurch ändert (seit 4.1.1). Nachfolgende, gescheiterte Validations oder Processes, die ein ROLLBACK auslösen, tangieren nicht mehr die Veränderungen, die die Validation durchgeführt hat. Vorsicht bei DML in Validations und Veränderungen am Session State – ist es wirklich notwendig?
  • 22. Einige Probleme und wie man sie vermeiden kann Mischen von Bind-Syntax und Prozeduraufrufen zum Ändern des Session State I Was Sie schon immer über APEX-Transaktionen wissen wollten22 20.04.15 Betrachten wir das folgende PL/SQL eines Prozesses: Aufrufe von Prozeduren von APEX_UTIL wie SET_SESSION_STATE, CLEAR_APP_CACHE, CLEAR_PAGE_CACHE und CLEAR_USER_CACHE lösen mglw. ein COMMIT aus, aber die Änderungen gegen den Session State können (teilweise) wieder überschrieben werden durch APEX’s Behandlung der OUT-Werte der Bind- Variablen. Methoden zum Zugriff auf den Session State nicht mischen. :P5_ITEM_A := UPPER(:P5_ITEM_A); IF :P5_ITEM_A = 'ABC' THEN APEX_UTIL.SET_SESSION_STATE('P5_ITEM_A', 'XXX'); ELSE APEX_UTIL.SET_SESSION_STATE('P5_ITEM_A', 'WWW'); END IF;
  • 23. Einige Probleme und wie man sie vermeiden kann Mischen von Bind-Syntax und Prozeduraufrufen zum Ändern des Session State II Was Sie schon immer über APEX-Transaktionen wissen wollten23 20.04.15 Betrachten wir z.B. das folgende PL/SQL eines Prozesses: Der Wert der Bind-Variable für das Items wird u.U. geändert. Dadurch kann sich der OUT-Wert der Variable vom IN-Wert unterscheiden. Der Session State der Seite wird im Rahmen des Prozesses in jedem Fall gelöscht und damit auch der Wert des Items im Session State. Dies kann jedoch nur vorübergehend sein – im Rahmen der Behandlung der Verarbeitung der OUT-Werte schreibt APEX u.U. z.B. den Wert „abcWWW“ für das Item in den Session State. IF length(:P5_ITEM_A) < 10 THEN :P5_ITEM_A := :P5_ITEM_A || 'WWW'; END IF; APEX_UTIL.CLEAR_PAGE_CACHE(5);
  • 24. Einige Probleme und wie man sie vermeiden kann Automatic Row Processing mit Return Key führt COMMIT aus Was Sie schon immer über APEX-Transaktionen wissen wollten24 20.04.15 Dieser Prozess führt ein COMMIT aus, falls der Wert im Session State sich von dem (neuen) Schlüsselwert unterscheidet. Dies wird im Normalfall (z.B. Schlüssel aus Sequence) praktisch immer der Fall sein. Folgende Prozesse, die ein ROLLBACK auslösen, rollen die Modifikationen des Automatic DML-Prozesses nicht zurück. Nur verwenden, wenn nötig. Schlüsselwert vorher z.B. mit Computation aus Sequence besorgen.
  • 25. Was Sie schon immer über APEX-Transaktionen wissen wollten25 20.04.15 Oracles Antwort oder: Das Schicksal eines Service Requests
  • 26. Oracles Antwort oder: Das Schicksal eines Service Requests Was Sie schon immer über APEX-Transaktionen wissen wollten26 20.04.15 SR 3-4905002531 : APEX commit behavior The commit behavior of APEX seems to be pretty strange. It seems to be committing while page processing whenever a real change is made in the session cache. The desired behavior would be that the whole page processing is ONE transaction, i.e. the developer decides if and when to commit. Und das kam schließlich raus:
  • 27. Was Sie schon immer über APEX-Transaktionen wissen wollten27 20.04.15 Fazit
  • 28. Fazit Was Sie schon immer über APEX-Transaktionen wissen wollten28 20.04.15 Das Transaktionsverhalten von APEX ist nicht (komplett) intuitiv… – … es ist momentan sicher keine Stärke von APEX. Traurig, aber wahr. – … es ist fast nicht dokumentiert. – … es kann zu ernstzunehmenden Fehlern führen, die schwer aufzuspüren, zu beheben und zu erklären sind. Wenig ist sicher… Dinge haben sich verändert, verändern sich und werden sich ändern: – Z.B. die Modifikation von 4.1.0  4.1.1 – Wenn Sie einen Fall finden, der den Ausführungen hier widerspricht oder neue Aspekte dieser Problematik beleuchtet – bitte lassen Sie es mich wissen. Und: Hope for the best… ;-) – APEX 5.1?
  • 29. Fragen und Antworten Michael Schmid Senior Consultant Tel. +49-162-291 47 61 michael.schmid@trivadis.com 20.04.15 Was Sie schon immer über APEX-Transaktionen wissen wollten35