SlideShare ist ein Scribd-Unternehmen logo
1 von 39
Downloaden Sie, um offline zu lesen
Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013
Fehlerbehandlung mittels DML Error Logging
Business Intelligence
Andreas Buckenhofer, 19.11.2013
1
Daimler TSS – der IT-Spezialist im Daimler-Konzern.
Wir realisieren für unsere Kunden anspruchsvolle Applikationen, stellen effiziente
IT-Services bereit und begleiten IT-Projekte jeder Größenordnung in den
Bereichen IT-Services, -Solutions und –Consulting. Als 100%ige Daimler-Tochter
garantieren wir unseren Kunden im Konzern eine hohe Identifikation mit ihren
individuellen Aufgabenstellungen. Unsere innovative Technologie- und Methoden-
Kompetenz und ein tiefes Verständnis der internen Geschäfts-Prozesse sind
unsere entscheidenden Wettbewerbsvorteile.
Unser Ziel ist es, ein relevanter Spezialist und Partner für unsere Kunden zu sein
und ein attraktiver Arbeitgeber in einem innovativen und menschlich geprägten
Arbeitsumfeld.
Unternehmensüberblick
Unser Selbstverständnis
Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 2
Unternehmensüberblick
Unsere Geschäftsfelder
Kundenspezifische
Individual- und
Standardlösungen für
alle Konzernbereiche.
Leistungen auf Basis
von Konzern- und
Industriestandards:
schnell, flexibel und
kosteneffizient.
Know-how und
Kapazitäten in den
Disziplinen Technologie,
Strategie, Methodik,
Prozesssteuerung und
-qualität sowie
Sicherheit.
Softwarelösungen,
Infrastrukturen und
Dienstleistungen für
Händlerbetriebe
werden durch unsere
100% Tochtergesell-
schaft Daimler IT
Retail GmbH erbracht.
Solutions Consulting IT RetailServices
Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 3
Daimler TSS China
Hub Beijing
- In Planung -
Unternehmensüberblick
Standorte
Daimler TSS Asia
Hub Kuala Lumpur
26 Mitarbeiter
MY
Daimler TSS India
Hub Bangalore
15 Mitarbeiter
IN
Ulm (Hauptsitz)
Raum Stuttgart
Böblingen, Echterdingen,
Möhringen
Berlin
DE Daimler TSS Deutschland
5 Standorte
606 Mitarbeiter
CN
Ausgehend von den TSS Standorten arbeiten weitere TSS Experten in weltweiten Kundenprojekten „onsite“.
Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 4
Unternehmensüberblick
Mitarbeiterentwicklung 2008 – 2012
295
361
400
TSS
415
TSS
485
ITR3)
75
ITR
82
0
100
200
300
400
500
600
2008 2009 2010 2011 2012
Anzahl Mitarbeiter1)2) / Geschäftsjahr
1) Jahresdurchschnitt
2) ohne KL und
Studenten
3) Gesamtjahr
Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 5
Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 6
Zur Person
Andreas Buckenhofer
Andreas Buckenhofer
Senior DB Professional
E-Mail: andreas.buckenhofer@daimler.com
Seit 2009 bei Daimler TSS im Fachgebiet
Business Intelligence (Cognos/Informatica)
Schwerpunkt DWH/CRM seit 1998 als
• Entwickler
• Administrator
• Berater
Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 7
1. ETL Verarbeitung
2. DML Error Logging
3. Performance DML Error Logging
4. Erfahrungen mit DML Error Logging
5. Zusammenfassung
Fehlerbehandlung mittels DML Error Logging
Überblick
Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 8
1. ETL Verarbeitung
2. DML Error Logging
3. Performance DML Error Logging
4. Erfahrungen mit DML Error Logging
5. Zusammenfassung
Fehlerbehandlung mittels DML Error Logging
Überblick
Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 9
ETL Verarbeitung
Satzbasierte und zeilenbasierte Verarbeitung
Satzbasierte
Verarbeitung
Satzbasierte
Verarbeitung
Einfache SQL Anweisungen
Effiziente Verarbeitung
Rollback bei Fehlern
Fehlerbereinigung separat
Zeilenbasierte
Verarbeitung
Zeilenbasierte
Verarbeitung
Flexible Fehlerbehandlung
Datentransport und –
bereinigung in einem Schritt
Komplexer Code
(Langsamere)
Schleifenverarbeitung
ETL Verarbeitung
Codebeispiel satzbasierte und zeilenbasierte Verarbeitung
Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 10
Satzbasierte
Verarbeitung
Satzbasierte
Verarbeitung
Zeilenbasierte
Verarbeitung
Zeilenbasierte
Verarbeitung
komplexer,
langer Code
ETL Verarbeitung
Alternativen bei einer satzbasierten Verarbeitung
Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 11
• Selektion der fehlerfreien Datensätze
Subsetting
• Korrektur der fehlerhaften Datensätze vorab
Pre-Processing
• Protokollierung der fehlerhaften Datensätze
DML Error Logging
Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 12
1. ETL Verarbeitung
2. DML Error Logging
3. Performance DML Error Logging
4. Erfahrungen mit DML Error Logging
5. Zusammenfassung
Fehlerbehandlung mittels DML Error Logging
Überblick
DML Error Logging
Überblick
Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 13
DML Error Logging
Erzeugung Fehlertabelle 1(2)
Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 14
DBMS_ERRLOG.CREATE_ERROR_LOG
( dml_table_name IN VARCHAR2
, err_log_table_name IN VARCHAR2 := NULL
, err_log_table_owner IN VARCHAR2 := NULL
, err_log_table_space IN VARCHAR2 := NULL
, skip_unsupported IN BOOLEAN := FALSE);
Aufruf:
exec dbms_errlog.create_error_log ('TARGET', 'ERR_TARGET');
DML Error Logging
Erzeugung Fehlertabelle 2(2)
Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 15
CREATE TABLE ERR$_TARGET (
ORA_ERR_NUMBER$ NUMBER
, ORA_ERR_MESG$ VARCHAR2(2000)
, ORA_ERR_ROWID$ ROWID
, ORA_ERR_OPTYP$ VARCHAR2(2)
, ORA_ERR_TAG$ VARCHAR2(2000)
, ID VARCHAR2(4000)
, CODE VARCHAR2(4000)
);
DML Error Logging
Aufbau Fehlertabelle
Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 16
SQL> DESC target
Name Null? Typ
----------------------------------------- -------- ----------------------------
ID NOT NULL NUMBER
CODE NOT NULL VARCHAR2(10)
SQL> DESC err$_target
Name Null? Typ
----------------------------------------- -------- ----------------------------
ORA_ERR_NUMBER$ NUMBER
ORA_ERR_MESG$ VARCHAR2(2000)
ORA_ERR_ROWID$ ROWID
ORA_ERR_OPTYP$ VARCHAR2(2)
ORA_ERR_TAG$ VARCHAR2(2000)
ID VARCHAR2(4000)
CODE VARCHAR2(4000)
DML Error Logging
Beispiel Verarbeitung fehlerhafter Daten
INSERT INTO target
SELECT * FROM source;
SELECT *
* ERROR at line 2: ORA-01400: cannot insert NULL into
("TEST".“TARGET"."CODE")
INSERT INTO target
SELECT * FROM source LOG ERRORS INTO err$_target ('INSERT') REJECT LIMIT
UNLIMITED;
99998 rows created.
Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 17
Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 18
1. ETL Verarbeitung
2. DML Error Logging
3. Performance DML Error Logging
4. Erfahrungen mit DML Error Logging
5. Zusammenfassung
Fehlerbehandlung mittels DML Error Logging
Überblick
Performance DML Error Logging
Überblick Testaufbau
TRUNCATE TABLE DMLtarget1;
TRUNCATE TABLE ERRtarget1;
TRUNCATE TABLE DMLtarget2;
TRUNCATE TABLE ERRtarget2;
exec runstats_pkg.rs_start();
@@run1.sql
exec runstats_pkg.rs_middle();
@@run2.sql
exec runstats_pkg.rs_stop(5000);
Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 19
Performance DML Error Logging
Testskript run1.sql (DML Error Logging)
INSERT /*+ NO_GATHER_OPTIMIZER_STATISTICS */ INTO DMLtarget1
SELECT id FROM DMLsource
LOG ERRORS INTO ERRtarget1 REJECT LIMIT UNLIMITED;
COMMIT;
Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 20
Performance DML Error Logging
Testskript run2.sql (PL/SQL BULK-Verarbeitung)
DECLARE
CURSOR cur IS
SELECT *
FROM DMLsource;
…
OPEN cur;
LOOP
FETCH cur BULK COLLECT INTO aa LIMIT 100;
EXIT WHEN aa.COUNT = 0;
BEGIN
FORALL i IN INDICES OF aa SAVE EXCEPTIONS
INSERT INTO DMLtarget2 VALUES aa(i);
EXCEPTION
WHEN bulk_exceptions THEN
n := n + SQL%ROWCOUNT;
error_logging();
END;
END LOOP;
CLOSE cur;
Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 21
Performance DML Error Logging
Testergebnis
Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 22
Performance DML Error Logging
Oracle Trace
Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 23
Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 24
1. ETL Verarbeitung
2. DML Error Logging
3. Performance DML Error Logging
4. Erfahrungen mit DML Error Logging
5. Zusammenfassung
Fehlerbehandlung mittels DML Error Logging
Überblick
Fehlerbehandlung mit DML Error Logging
Überblick
Codegenerator
• DB: Oracle RAC 11.2.0.3
• ETL: Informatica
• PL/SQL-Package: 1500 loc
• Typische Einträge in DML Error Log-Tabellen
• ORA-01427: Unterabfrage für eine Zeile liefert mehr als eine Zeile
• ORA-01400: Einfügen von NULL in (<Tabelle>) nicht möglich
• ORA-00001: Unique Constraint (<Constraint>) verletzt
• Einträge in DML Error Log-Tabellen werden nach 30 Tagen geleert
Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 25
Fehlerbehandlung mit DML Error Logging
Dokumentierte Einschränkungen
• LONG, CLOB, BLOB, BFILE und ADT Datentypen dürfen nicht in der Error
Log-Tabellen enthalten sein
• Deferred Constraints dürfen nicht auf der Zieltabelle definiert sein
• Direct-path INSERT oder MERGE Befehle, die einen eindeutigen Constraint
(unique constraint) oder eindeutigen Index (unique index) verletzen
• UPDATE oder MERGE Befehle, die einen eindeutigen Constraint
(unique constraint) oder eindeutigen Index (unique index) verletzen
Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 26
Fehlerbehandlung mit DML Error Logging
Reihenfolge der Verarbeitung
Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 27
id
1
2
2
3
dat
a
b
c
d
Quelle
id
1
2
dat
x
y
Ziel
id
1
2
2
3
dat
a
b
c
d
Quelle
id
1
2
dat
x
y
Ziel
merge ohne ErrLog
ORA-30926:
Stabile Zeilengruppe
in den Quelltabellen
kann nicht eingelesen
werden
id
1
2
2
3
dat
a
b
c
d
Quelle
id
1
2
3
dat
a
b/c
d
Ziel
merge mit ErrLog
Reihenfolge der
Verarbeitung ist
zufällig
(Ergebnis b oder c)
merge
Fehlerbehandlung mit DML Error Logging
Unique Constraint bei Update und Merge 1(4)
Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 28
id
1
2
3
4
5
code
DOAG1
DOAG1
DOAG1
DOAG1
DOAG5
Quelle
update oder merge
id
1
2
3
4
5
code
DOAG1
DOAG2
DOAG3
DOAG4
NN5
Ziel
id: PK
code: UK
UPDATE target
SET code = ( select code from source where target.id =
source.id )
LOG ERRORS INTO err_target ('UPDATE') REJECT LIMIT
UNLIMITED;
MERGE INTO target
USING source
ON (target.id = source.id)
WHEN MATCHED THEN
UPDATE SET target.code = source.code
LOG ERRORS INTO err_target ('MERGE') REJECT LIMIT
UNLIMITED;
DOAG1: Datenfehler
DOAG5: ok
Fehlerbehandlung mit DML Error Logging
Unique Constraint bei Update und Merge 2(4)
Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 29
UPDATE target
SET code = ( select code from source where target.id =
source.id )
LOG ERRORS INTO err_target ('UPDATE') REJECT LIMIT
UNLIMITED;
*
FEHLER in Zeile 1:
ORA-00001: Unique Constraint
(ABU.TARGET_CODE_UIX) verletzt
MERGE INTO target
USING source
ON (target.id = source.id)
WHEN MATCHED THEN
UPDATE SET target.code = source.code
LOG ERRORS INTO err_target ('MERGE') REJECT LIMIT
UNLIMITED;
5 Zeilen integriert.
id
1
2
3
4
5
code
DOAG1
DOAG1
DOAG1
DOAG1
DOAG5
Quelle
update oder merge
id
1
2
3
4
5
code
DOAG1
DOAG2
DOAG3
DOAG4
NN5
Ziel
id: PK
code: UK
DOAG1: Datenfehler
DOAG5: ok
Fehlerbehandlung mit DML Error Logging
Unique Constraint bei Update und Merge 3(4)
Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 30
UPDATE Ergebnis MERGE Ergebnis
id
1
2
3
4
5
code
DOAG1
DOAG1
DOAG1
DOAG1
DOAG5
Quelle
update oder merge
id
1
2
3
4
5
code
DOAG1
DOAG2
DOAG3
DOAG4
NN5
Ziel
id: PK
code: UK
id
1
2
3
4
5
code
DOAG1
DOAG2
DOAG3
DOAG4
DOAG5
Ziel
id
1
2
3
4
5
code
DOAG1
DOAG2
DOAG3
DOAG4
NN5
Ziel
DOAG1: Datenfehler
DOAG5: ok
Fehlerbehandlung mit DML Error Logging
Unique Constraint bei Update und Merge 4(4)
Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 31
id
1
2
3
4
5
code
DOAG1
DOAG1
DOAG1
DOAG1
DOAG5
Quelle
update oder merge
id
1
2
3
4
5
code
DOAG1
DOAG2
DOAG3
DOAG4
NN5
Ziel
id: PK
code: UK
ORA_ERR_MESG$ ORA_ERR_OPTYP$ TAG ID CODE
ORA-00001: Unique Constraint U UPDATE 3 DOAG1
ORA-00001: Unique Constraint U UPDATE 4 DOAG1
ORA-00001: Unique Constraint U MERGE 2 DOAG1
ORA-00001: Unique Constraint U MERGE 3 DOAG1
ORA-00001: Unique Constraint U MERGE 4 DOAG1
DOAG1: Datenfehler
DOAG5: ok
Fehlerbehandlung mit DML Error Logging
Unklare Meldungen 1(2)
Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 32
MERGE INTO target
USING source
ON (target.id = source.id)
WHEN MATCHED THEN
UPDATE SET target.code = source.code
LOG ERRORS INTO err_target ('MERGE') REJECT LIMIT
UNLIMITED;
5 Zeilen integriert.
id
1
2
3
4
5
code
DOAG1
DOAG1
DOAG1
DOAG1
DOAG5
Quelle
update oder merge
id
1
2
3
4
5
code
DOAG1
DOAG2
DOAG3
DOAG4
NN5
Ziel
id: PK
code: UK
DOAG1: Datenfehler
DOAG5: ok
5 Zeilen integriert ???
Wie viele Datensätze wurden
tatsächlich erfolgreich verarbeitet (2)
und wie viele Datensätze wurden in
die Error Log Tabelle geschrieben (3)?
Fehlerbehandlung mit DML Error Logging
Unklare Meldungen 2(2)
Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 33
truncate table target;
truncate table err_target;
insert into target values(1, '1');
insert into target
select *
from
(
select rownum as id, to_char(rownum) as code
from dual
connect by level <= 10
)
LOG ERRORS INTO err_target ('MERGE') REJECT LIMIT
UNLIMITED;
9 Zeilen erstellt.
select count(*) from err_target;
COUNT(*)
----------
1
9 Zeilen integriert bedeutet hier, dass 9
Datensätze erfolgreich verarbeitet
wurden und ein Datensatz in die Error
Log Tabelle geschrieben wurde.
Fehlerbehandlung mit DML Error Logging
Daten in der Error Log Tabelle
Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 34
• Daten der Quelltabelle (ID, CODE) werden in die Error Log Tabelle geschrieben
• Daten der Zieltabelle (ROWID) werden in die Error Log Tabelle geschrieben bei
update oder delete
ORA_ERR_MESG$ ORA_ERR_ROWID$ TAG ID CODE
ORA-00001: Unique Constraint AAAzN2AAFAAAB1fAAC UPDATE 3 DOAG1
ORA-00001: Unique Constraint AAAzN2AAFAAAB1fAAD UPDATE 4 DOAG1
ORA-00001: Unique Constraint AAAzN2AAFAAAB1fAAB MERGE 2 DOAG1
ORA-00001: Unique Constraint AAAzN2AAFAAAB1fAAC MERGE 3 DOAG1
ORA-00001: Unique Constraint AAAzN2AAFAAAB1fAAD MERGE 4 DOAG1
Fehlerbehandlung mit DML Error Logging
Rollback während Verarbeitung
Autonome Transaktionen bei der Protokollierung von Fehlern:
Rollback des DML Error Logging-Befehls (z.B. Serverausfall, Out-of-Space-Fehler,
usw.) führt zu einem unvollständigen Rollback
• Rollback der Datentabellen
• Daten in der Error Log Tabelle bleiben erhalten
Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 35
Fehlerbehandlung mit DML Error Logging
Maintenance der Error Log-Tabelle
Error Log Tabellen können sehr groß werden
• Größe/Wachstum überwachen
• Regelmäßig leeren
• Am besten Tabellen partitionieren
(Tabellen manuell anlegen und nicht über dbms_errlog-Package)
und in eigenen Tablespace
Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 36
Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 37
1. ETL Verarbeitung
2. DML Error Logging
3. Performance DML Error Logging
4. Erfahrungen mit DML Error Logging
5. Zusammenfassung
Fehlerbehandlung mittels DML Error Logging
Überblick
Zusammenfassung
Ausblick
• Größter Vorteil: einfacher, wartbarer Code im Vergleich zu PL/SQL-
Schleifenverarbeitung
• DML Error Logging geeignet, wenn Daten wenig Fehler aufweisen (< 5-10%),
ansonsten größerer Performanceverlust
• DML Error Logging hat sich bewährt in einem Projekt für einen Codegenerator
• Man muss mit Oracle Bugs rechnen bei komplexeren Datenfehlern
• Einschränkungen bei eindeutigen Constraints (unique constraint) bzw.
eindeutigen Indexen (unique index) bei UPDATE und MERGE
Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 38
Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 39
Vielen Dank!
Daimler TSS GmbH
Wilhelm-Runge-Straße 11
89081 Ulm
Telefon +49 731 505-06
Fax +49 731 505-65 99
tss@daimler.com
Internet: www.daimler-tss.com
Intranet: intra.corpintra.net/intra-itc/tss
Intranet-Portal-Code: @TSS
Daimler TSS GmbH
Sitz und Registergericht: Ulm, HRB-Nr.: 3844
Geschäftsführung: Dr. Stefan Eberhardt (Vorsitzender), Steffen Bäuerle

Weitere ähnliche Inhalte

Andere mochten auch

СтройПолимер - утепление ппу и гидроизоляция полимочевиной
СтройПолимер - утепление ппу и гидроизоляция полимочевинойСтройПолимер - утепление ппу и гидроизоляция полимочевиной
СтройПолимер - утепление ппу и гидроизоляция полимочевинойСтрой Полимер
 
Preclinical studies
Preclinical studiesPreclinical studies
Preclinical studiesAzeemsales
 
Pasar Seni portfolio
Pasar Seni portfolioPasar Seni portfolio
Pasar Seni portfolioErik Nadir
 
Br studienangebot auflage1
Br studienangebot auflage1Br studienangebot auflage1
Br studienangebot auflage1coolalien23
 
La vejez, un regalo au00 d1adido
La vejez, un regalo au00 d1adidoLa vejez, un regalo au00 d1adido
La vejez, un regalo au00 d1adidoenquica
 
EL MUNDO ES MI OFICINA de empleado a emprendedor - capítulo 1
EL MUNDO ES MI OFICINA de empleado a emprendedor - capítulo 1EL MUNDO ES MI OFICINA de empleado a emprendedor - capítulo 1
EL MUNDO ES MI OFICINA de empleado a emprendedor - capítulo 1Luis Manriquez
 
Douglas Layne Resume May 2016
Douglas Layne Resume May 2016Douglas Layne Resume May 2016
Douglas Layne Resume May 2016Douglas Layne
 

Andere mochten auch (16)

СтройПолимер - утепление ппу и гидроизоляция полимочевиной
СтройПолимер - утепление ппу и гидроизоляция полимочевинойСтройПолимер - утепление ппу и гидроизоляция полимочевиной
СтройПолимер - утепление ппу и гидроизоляция полимочевиной
 
Draughtsman.
Draughtsman.Draughtsman.
Draughtsman.
 
La tecnologia
La tecnologiaLa tecnologia
La tecnologia
 
How to Use Evernote
How to Use  EvernoteHow to Use  Evernote
How to Use Evernote
 
Preclinical studies
Preclinical studiesPreclinical studies
Preclinical studies
 
How To Use Mad Mimi
How To Use Mad MimiHow To Use Mad Mimi
How To Use Mad Mimi
 
Pasar Seni portfolio
Pasar Seni portfolioPasar Seni portfolio
Pasar Seni portfolio
 
Rotary Leader Marzo 2014
Rotary Leader Marzo 2014Rotary Leader Marzo 2014
Rotary Leader Marzo 2014
 
Ress
RessRess
Ress
 
Br studienangebot auflage1
Br studienangebot auflage1Br studienangebot auflage1
Br studienangebot auflage1
 
La vejez, un regalo au00 d1adido
La vejez, un regalo au00 d1adidoLa vejez, un regalo au00 d1adido
La vejez, un regalo au00 d1adido
 
Currículo Aldo Lazcano
Currículo Aldo LazcanoCurrículo Aldo Lazcano
Currículo Aldo Lazcano
 
Universidad tècnica de machala
Universidad tècnica de machalaUniversidad tècnica de machala
Universidad tècnica de machala
 
EL MUNDO ES MI OFICINA de empleado a emprendedor - capítulo 1
EL MUNDO ES MI OFICINA de empleado a emprendedor - capítulo 1EL MUNDO ES MI OFICINA de empleado a emprendedor - capítulo 1
EL MUNDO ES MI OFICINA de empleado a emprendedor - capítulo 1
 
North tech
North techNorth tech
North tech
 
Douglas Layne Resume May 2016
Douglas Layne Resume May 2016Douglas Layne Resume May 2016
Douglas Layne Resume May 2016
 

Ähnlich wie Fehlerbehandlung mittels DML Error Logging

Die Datenbank ist nicht immer Schuld - Gründe warum Datenbank-Migration schei...
Die Datenbank ist nicht immer Schuld - Gründe warum Datenbank-Migration schei...Die Datenbank ist nicht immer Schuld - Gründe warum Datenbank-Migration schei...
Die Datenbank ist nicht immer Schuld - Gründe warum Datenbank-Migration schei...Markus Flechtner
 
Oracle Data Guard: Mit oder ohne Broker?
Oracle Data Guard: Mit oder ohne Broker?Oracle Data Guard: Mit oder ohne Broker?
Oracle Data Guard: Mit oder ohne Broker?Dierk Lenz
 
Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)
Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)
Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)Ulrike Schwinn
 
Sind sie reif für DMS?!
Sind sie reif für DMS?!Sind sie reif für DMS?!
Sind sie reif für DMS?!Bernie Kron
 
SMART SUPPORT / BPM Veranstaltung Berlin 2009 10 15 - BPM
SMART SUPPORT / BPM Veranstaltung Berlin 2009 10 15 - BPMSMART SUPPORT / BPM Veranstaltung Berlin 2009 10 15 - BPM
SMART SUPPORT / BPM Veranstaltung Berlin 2009 10 15 - BPMNETFOX AG
 
DOAG SIG Development: BI Publisher and Oracle ADF
DOAG SIG Development: BI Publisher and Oracle ADFDOAG SIG Development: BI Publisher and Oracle ADF
DOAG SIG Development: BI Publisher and Oracle ADFUlrich Gerkmann-Bartels
 
Ronald Körsgen (Syncsort)
Ronald Körsgen (Syncsort)Ronald Körsgen (Syncsort)
Ronald Körsgen (Syncsort)Praxistage
 
Ausgewählte PL/SQL Packages (1)
Ausgewählte PL/SQL Packages (1)Ausgewählte PL/SQL Packages (1)
Ausgewählte PL/SQL Packages (1)Ulrike Schwinn
 
Zurück in die Zukunft - DNUG 2014 - Track 5.2
Zurück in die Zukunft - DNUG 2014 - Track 5.2Zurück in die Zukunft - DNUG 2014 - Track 5.2
Zurück in die Zukunft - DNUG 2014 - Track 5.2panagenda
 
camunda BPM - presented at Oracle vs. camunda Shootout Roadshow
camunda BPM - presented at Oracle vs. camunda Shootout Roadshowcamunda BPM - presented at Oracle vs. camunda Shootout Roadshow
camunda BPM - presented at Oracle vs. camunda Shootout Roadshowcamunda services GmbH
 
CCD 2013: Vom Querschnittstool zum vermarkteten Service
CCD 2013: Vom Querschnittstool zum vermarkteten ServiceCCD 2013: Vom Querschnittstool zum vermarkteten Service
CCD 2013: Vom Querschnittstool zum vermarkteten ServiceCommunardo GmbH
 

Ähnlich wie Fehlerbehandlung mittels DML Error Logging (12)

Die Datenbank ist nicht immer Schuld - Gründe warum Datenbank-Migration schei...
Die Datenbank ist nicht immer Schuld - Gründe warum Datenbank-Migration schei...Die Datenbank ist nicht immer Schuld - Gründe warum Datenbank-Migration schei...
Die Datenbank ist nicht immer Schuld - Gründe warum Datenbank-Migration schei...
 
Oracle Data Guard: Mit oder ohne Broker?
Oracle Data Guard: Mit oder ohne Broker?Oracle Data Guard: Mit oder ohne Broker?
Oracle Data Guard: Mit oder ohne Broker?
 
Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)
Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)
Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)
 
Sind sie reif für DMS?!
Sind sie reif für DMS?!Sind sie reif für DMS?!
Sind sie reif für DMS?!
 
SMART SUPPORT / BPM Veranstaltung Berlin 2009 10 15 - BPM
SMART SUPPORT / BPM Veranstaltung Berlin 2009 10 15 - BPMSMART SUPPORT / BPM Veranstaltung Berlin 2009 10 15 - BPM
SMART SUPPORT / BPM Veranstaltung Berlin 2009 10 15 - BPM
 
DOAG SIG Development: BI Publisher and Oracle ADF
DOAG SIG Development: BI Publisher and Oracle ADFDOAG SIG Development: BI Publisher and Oracle ADF
DOAG SIG Development: BI Publisher and Oracle ADF
 
Ronald Körsgen (Syncsort)
Ronald Körsgen (Syncsort)Ronald Körsgen (Syncsort)
Ronald Körsgen (Syncsort)
 
Infrastructure Solution Day | Core
Infrastructure Solution Day | CoreInfrastructure Solution Day | Core
Infrastructure Solution Day | Core
 
Ausgewählte PL/SQL Packages (1)
Ausgewählte PL/SQL Packages (1)Ausgewählte PL/SQL Packages (1)
Ausgewählte PL/SQL Packages (1)
 
Zurück in die Zukunft - DNUG 2014 - Track 5.2
Zurück in die Zukunft - DNUG 2014 - Track 5.2Zurück in die Zukunft - DNUG 2014 - Track 5.2
Zurück in die Zukunft - DNUG 2014 - Track 5.2
 
camunda BPM - presented at Oracle vs. camunda Shootout Roadshow
camunda BPM - presented at Oracle vs. camunda Shootout Roadshowcamunda BPM - presented at Oracle vs. camunda Shootout Roadshow
camunda BPM - presented at Oracle vs. camunda Shootout Roadshow
 
CCD 2013: Vom Querschnittstool zum vermarkteten Service
CCD 2013: Vom Querschnittstool zum vermarkteten ServiceCCD 2013: Vom Querschnittstool zum vermarkteten Service
CCD 2013: Vom Querschnittstool zum vermarkteten Service
 

Fehlerbehandlung mittels DML Error Logging

  • 1. Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 Fehlerbehandlung mittels DML Error Logging Business Intelligence Andreas Buckenhofer, 19.11.2013 1
  • 2. Daimler TSS – der IT-Spezialist im Daimler-Konzern. Wir realisieren für unsere Kunden anspruchsvolle Applikationen, stellen effiziente IT-Services bereit und begleiten IT-Projekte jeder Größenordnung in den Bereichen IT-Services, -Solutions und –Consulting. Als 100%ige Daimler-Tochter garantieren wir unseren Kunden im Konzern eine hohe Identifikation mit ihren individuellen Aufgabenstellungen. Unsere innovative Technologie- und Methoden- Kompetenz und ein tiefes Verständnis der internen Geschäfts-Prozesse sind unsere entscheidenden Wettbewerbsvorteile. Unser Ziel ist es, ein relevanter Spezialist und Partner für unsere Kunden zu sein und ein attraktiver Arbeitgeber in einem innovativen und menschlich geprägten Arbeitsumfeld. Unternehmensüberblick Unser Selbstverständnis Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 2
  • 3. Unternehmensüberblick Unsere Geschäftsfelder Kundenspezifische Individual- und Standardlösungen für alle Konzernbereiche. Leistungen auf Basis von Konzern- und Industriestandards: schnell, flexibel und kosteneffizient. Know-how und Kapazitäten in den Disziplinen Technologie, Strategie, Methodik, Prozesssteuerung und -qualität sowie Sicherheit. Softwarelösungen, Infrastrukturen und Dienstleistungen für Händlerbetriebe werden durch unsere 100% Tochtergesell- schaft Daimler IT Retail GmbH erbracht. Solutions Consulting IT RetailServices Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 3
  • 4. Daimler TSS China Hub Beijing - In Planung - Unternehmensüberblick Standorte Daimler TSS Asia Hub Kuala Lumpur 26 Mitarbeiter MY Daimler TSS India Hub Bangalore 15 Mitarbeiter IN Ulm (Hauptsitz) Raum Stuttgart Böblingen, Echterdingen, Möhringen Berlin DE Daimler TSS Deutschland 5 Standorte 606 Mitarbeiter CN Ausgehend von den TSS Standorten arbeiten weitere TSS Experten in weltweiten Kundenprojekten „onsite“. Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 4
  • 5. Unternehmensüberblick Mitarbeiterentwicklung 2008 – 2012 295 361 400 TSS 415 TSS 485 ITR3) 75 ITR 82 0 100 200 300 400 500 600 2008 2009 2010 2011 2012 Anzahl Mitarbeiter1)2) / Geschäftsjahr 1) Jahresdurchschnitt 2) ohne KL und Studenten 3) Gesamtjahr Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 5
  • 6. Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 6 Zur Person Andreas Buckenhofer Andreas Buckenhofer Senior DB Professional E-Mail: andreas.buckenhofer@daimler.com Seit 2009 bei Daimler TSS im Fachgebiet Business Intelligence (Cognos/Informatica) Schwerpunkt DWH/CRM seit 1998 als • Entwickler • Administrator • Berater
  • 7. Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 7 1. ETL Verarbeitung 2. DML Error Logging 3. Performance DML Error Logging 4. Erfahrungen mit DML Error Logging 5. Zusammenfassung Fehlerbehandlung mittels DML Error Logging Überblick
  • 8. Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 8 1. ETL Verarbeitung 2. DML Error Logging 3. Performance DML Error Logging 4. Erfahrungen mit DML Error Logging 5. Zusammenfassung Fehlerbehandlung mittels DML Error Logging Überblick
  • 9. Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 9 ETL Verarbeitung Satzbasierte und zeilenbasierte Verarbeitung Satzbasierte Verarbeitung Satzbasierte Verarbeitung Einfache SQL Anweisungen Effiziente Verarbeitung Rollback bei Fehlern Fehlerbereinigung separat Zeilenbasierte Verarbeitung Zeilenbasierte Verarbeitung Flexible Fehlerbehandlung Datentransport und – bereinigung in einem Schritt Komplexer Code (Langsamere) Schleifenverarbeitung
  • 10. ETL Verarbeitung Codebeispiel satzbasierte und zeilenbasierte Verarbeitung Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 10 Satzbasierte Verarbeitung Satzbasierte Verarbeitung Zeilenbasierte Verarbeitung Zeilenbasierte Verarbeitung komplexer, langer Code
  • 11. ETL Verarbeitung Alternativen bei einer satzbasierten Verarbeitung Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 11 • Selektion der fehlerfreien Datensätze Subsetting • Korrektur der fehlerhaften Datensätze vorab Pre-Processing • Protokollierung der fehlerhaften Datensätze DML Error Logging
  • 12. Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 12 1. ETL Verarbeitung 2. DML Error Logging 3. Performance DML Error Logging 4. Erfahrungen mit DML Error Logging 5. Zusammenfassung Fehlerbehandlung mittels DML Error Logging Überblick
  • 13. DML Error Logging Überblick Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 13
  • 14. DML Error Logging Erzeugung Fehlertabelle 1(2) Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 14 DBMS_ERRLOG.CREATE_ERROR_LOG ( dml_table_name IN VARCHAR2 , err_log_table_name IN VARCHAR2 := NULL , err_log_table_owner IN VARCHAR2 := NULL , err_log_table_space IN VARCHAR2 := NULL , skip_unsupported IN BOOLEAN := FALSE); Aufruf: exec dbms_errlog.create_error_log ('TARGET', 'ERR_TARGET');
  • 15. DML Error Logging Erzeugung Fehlertabelle 2(2) Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 15 CREATE TABLE ERR$_TARGET ( ORA_ERR_NUMBER$ NUMBER , ORA_ERR_MESG$ VARCHAR2(2000) , ORA_ERR_ROWID$ ROWID , ORA_ERR_OPTYP$ VARCHAR2(2) , ORA_ERR_TAG$ VARCHAR2(2000) , ID VARCHAR2(4000) , CODE VARCHAR2(4000) );
  • 16. DML Error Logging Aufbau Fehlertabelle Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 16 SQL> DESC target Name Null? Typ ----------------------------------------- -------- ---------------------------- ID NOT NULL NUMBER CODE NOT NULL VARCHAR2(10) SQL> DESC err$_target Name Null? Typ ----------------------------------------- -------- ---------------------------- ORA_ERR_NUMBER$ NUMBER ORA_ERR_MESG$ VARCHAR2(2000) ORA_ERR_ROWID$ ROWID ORA_ERR_OPTYP$ VARCHAR2(2) ORA_ERR_TAG$ VARCHAR2(2000) ID VARCHAR2(4000) CODE VARCHAR2(4000)
  • 17. DML Error Logging Beispiel Verarbeitung fehlerhafter Daten INSERT INTO target SELECT * FROM source; SELECT * * ERROR at line 2: ORA-01400: cannot insert NULL into ("TEST".“TARGET"."CODE") INSERT INTO target SELECT * FROM source LOG ERRORS INTO err$_target ('INSERT') REJECT LIMIT UNLIMITED; 99998 rows created. Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 17
  • 18. Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 18 1. ETL Verarbeitung 2. DML Error Logging 3. Performance DML Error Logging 4. Erfahrungen mit DML Error Logging 5. Zusammenfassung Fehlerbehandlung mittels DML Error Logging Überblick
  • 19. Performance DML Error Logging Überblick Testaufbau TRUNCATE TABLE DMLtarget1; TRUNCATE TABLE ERRtarget1; TRUNCATE TABLE DMLtarget2; TRUNCATE TABLE ERRtarget2; exec runstats_pkg.rs_start(); @@run1.sql exec runstats_pkg.rs_middle(); @@run2.sql exec runstats_pkg.rs_stop(5000); Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 19
  • 20. Performance DML Error Logging Testskript run1.sql (DML Error Logging) INSERT /*+ NO_GATHER_OPTIMIZER_STATISTICS */ INTO DMLtarget1 SELECT id FROM DMLsource LOG ERRORS INTO ERRtarget1 REJECT LIMIT UNLIMITED; COMMIT; Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 20
  • 21. Performance DML Error Logging Testskript run2.sql (PL/SQL BULK-Verarbeitung) DECLARE CURSOR cur IS SELECT * FROM DMLsource; … OPEN cur; LOOP FETCH cur BULK COLLECT INTO aa LIMIT 100; EXIT WHEN aa.COUNT = 0; BEGIN FORALL i IN INDICES OF aa SAVE EXCEPTIONS INSERT INTO DMLtarget2 VALUES aa(i); EXCEPTION WHEN bulk_exceptions THEN n := n + SQL%ROWCOUNT; error_logging(); END; END LOOP; CLOSE cur; Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 21
  • 22. Performance DML Error Logging Testergebnis Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 22
  • 23. Performance DML Error Logging Oracle Trace Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 23
  • 24. Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 24 1. ETL Verarbeitung 2. DML Error Logging 3. Performance DML Error Logging 4. Erfahrungen mit DML Error Logging 5. Zusammenfassung Fehlerbehandlung mittels DML Error Logging Überblick
  • 25. Fehlerbehandlung mit DML Error Logging Überblick Codegenerator • DB: Oracle RAC 11.2.0.3 • ETL: Informatica • PL/SQL-Package: 1500 loc • Typische Einträge in DML Error Log-Tabellen • ORA-01427: Unterabfrage für eine Zeile liefert mehr als eine Zeile • ORA-01400: Einfügen von NULL in (<Tabelle>) nicht möglich • ORA-00001: Unique Constraint (<Constraint>) verletzt • Einträge in DML Error Log-Tabellen werden nach 30 Tagen geleert Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 25
  • 26. Fehlerbehandlung mit DML Error Logging Dokumentierte Einschränkungen • LONG, CLOB, BLOB, BFILE und ADT Datentypen dürfen nicht in der Error Log-Tabellen enthalten sein • Deferred Constraints dürfen nicht auf der Zieltabelle definiert sein • Direct-path INSERT oder MERGE Befehle, die einen eindeutigen Constraint (unique constraint) oder eindeutigen Index (unique index) verletzen • UPDATE oder MERGE Befehle, die einen eindeutigen Constraint (unique constraint) oder eindeutigen Index (unique index) verletzen Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 26
  • 27. Fehlerbehandlung mit DML Error Logging Reihenfolge der Verarbeitung Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 27 id 1 2 2 3 dat a b c d Quelle id 1 2 dat x y Ziel id 1 2 2 3 dat a b c d Quelle id 1 2 dat x y Ziel merge ohne ErrLog ORA-30926: Stabile Zeilengruppe in den Quelltabellen kann nicht eingelesen werden id 1 2 2 3 dat a b c d Quelle id 1 2 3 dat a b/c d Ziel merge mit ErrLog Reihenfolge der Verarbeitung ist zufällig (Ergebnis b oder c) merge
  • 28. Fehlerbehandlung mit DML Error Logging Unique Constraint bei Update und Merge 1(4) Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 28 id 1 2 3 4 5 code DOAG1 DOAG1 DOAG1 DOAG1 DOAG5 Quelle update oder merge id 1 2 3 4 5 code DOAG1 DOAG2 DOAG3 DOAG4 NN5 Ziel id: PK code: UK UPDATE target SET code = ( select code from source where target.id = source.id ) LOG ERRORS INTO err_target ('UPDATE') REJECT LIMIT UNLIMITED; MERGE INTO target USING source ON (target.id = source.id) WHEN MATCHED THEN UPDATE SET target.code = source.code LOG ERRORS INTO err_target ('MERGE') REJECT LIMIT UNLIMITED; DOAG1: Datenfehler DOAG5: ok
  • 29. Fehlerbehandlung mit DML Error Logging Unique Constraint bei Update und Merge 2(4) Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 29 UPDATE target SET code = ( select code from source where target.id = source.id ) LOG ERRORS INTO err_target ('UPDATE') REJECT LIMIT UNLIMITED; * FEHLER in Zeile 1: ORA-00001: Unique Constraint (ABU.TARGET_CODE_UIX) verletzt MERGE INTO target USING source ON (target.id = source.id) WHEN MATCHED THEN UPDATE SET target.code = source.code LOG ERRORS INTO err_target ('MERGE') REJECT LIMIT UNLIMITED; 5 Zeilen integriert. id 1 2 3 4 5 code DOAG1 DOAG1 DOAG1 DOAG1 DOAG5 Quelle update oder merge id 1 2 3 4 5 code DOAG1 DOAG2 DOAG3 DOAG4 NN5 Ziel id: PK code: UK DOAG1: Datenfehler DOAG5: ok
  • 30. Fehlerbehandlung mit DML Error Logging Unique Constraint bei Update und Merge 3(4) Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 30 UPDATE Ergebnis MERGE Ergebnis id 1 2 3 4 5 code DOAG1 DOAG1 DOAG1 DOAG1 DOAG5 Quelle update oder merge id 1 2 3 4 5 code DOAG1 DOAG2 DOAG3 DOAG4 NN5 Ziel id: PK code: UK id 1 2 3 4 5 code DOAG1 DOAG2 DOAG3 DOAG4 DOAG5 Ziel id 1 2 3 4 5 code DOAG1 DOAG2 DOAG3 DOAG4 NN5 Ziel DOAG1: Datenfehler DOAG5: ok
  • 31. Fehlerbehandlung mit DML Error Logging Unique Constraint bei Update und Merge 4(4) Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 31 id 1 2 3 4 5 code DOAG1 DOAG1 DOAG1 DOAG1 DOAG5 Quelle update oder merge id 1 2 3 4 5 code DOAG1 DOAG2 DOAG3 DOAG4 NN5 Ziel id: PK code: UK ORA_ERR_MESG$ ORA_ERR_OPTYP$ TAG ID CODE ORA-00001: Unique Constraint U UPDATE 3 DOAG1 ORA-00001: Unique Constraint U UPDATE 4 DOAG1 ORA-00001: Unique Constraint U MERGE 2 DOAG1 ORA-00001: Unique Constraint U MERGE 3 DOAG1 ORA-00001: Unique Constraint U MERGE 4 DOAG1 DOAG1: Datenfehler DOAG5: ok
  • 32. Fehlerbehandlung mit DML Error Logging Unklare Meldungen 1(2) Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 32 MERGE INTO target USING source ON (target.id = source.id) WHEN MATCHED THEN UPDATE SET target.code = source.code LOG ERRORS INTO err_target ('MERGE') REJECT LIMIT UNLIMITED; 5 Zeilen integriert. id 1 2 3 4 5 code DOAG1 DOAG1 DOAG1 DOAG1 DOAG5 Quelle update oder merge id 1 2 3 4 5 code DOAG1 DOAG2 DOAG3 DOAG4 NN5 Ziel id: PK code: UK DOAG1: Datenfehler DOAG5: ok 5 Zeilen integriert ??? Wie viele Datensätze wurden tatsächlich erfolgreich verarbeitet (2) und wie viele Datensätze wurden in die Error Log Tabelle geschrieben (3)?
  • 33. Fehlerbehandlung mit DML Error Logging Unklare Meldungen 2(2) Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 33 truncate table target; truncate table err_target; insert into target values(1, '1'); insert into target select * from ( select rownum as id, to_char(rownum) as code from dual connect by level <= 10 ) LOG ERRORS INTO err_target ('MERGE') REJECT LIMIT UNLIMITED; 9 Zeilen erstellt. select count(*) from err_target; COUNT(*) ---------- 1 9 Zeilen integriert bedeutet hier, dass 9 Datensätze erfolgreich verarbeitet wurden und ein Datensatz in die Error Log Tabelle geschrieben wurde.
  • 34. Fehlerbehandlung mit DML Error Logging Daten in der Error Log Tabelle Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 34 • Daten der Quelltabelle (ID, CODE) werden in die Error Log Tabelle geschrieben • Daten der Zieltabelle (ROWID) werden in die Error Log Tabelle geschrieben bei update oder delete ORA_ERR_MESG$ ORA_ERR_ROWID$ TAG ID CODE ORA-00001: Unique Constraint AAAzN2AAFAAAB1fAAC UPDATE 3 DOAG1 ORA-00001: Unique Constraint AAAzN2AAFAAAB1fAAD UPDATE 4 DOAG1 ORA-00001: Unique Constraint AAAzN2AAFAAAB1fAAB MERGE 2 DOAG1 ORA-00001: Unique Constraint AAAzN2AAFAAAB1fAAC MERGE 3 DOAG1 ORA-00001: Unique Constraint AAAzN2AAFAAAB1fAAD MERGE 4 DOAG1
  • 35. Fehlerbehandlung mit DML Error Logging Rollback während Verarbeitung Autonome Transaktionen bei der Protokollierung von Fehlern: Rollback des DML Error Logging-Befehls (z.B. Serverausfall, Out-of-Space-Fehler, usw.) führt zu einem unvollständigen Rollback • Rollback der Datentabellen • Daten in der Error Log Tabelle bleiben erhalten Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 35
  • 36. Fehlerbehandlung mit DML Error Logging Maintenance der Error Log-Tabelle Error Log Tabellen können sehr groß werden • Größe/Wachstum überwachen • Regelmäßig leeren • Am besten Tabellen partitionieren (Tabellen manuell anlegen und nicht über dbms_errlog-Package) und in eigenen Tablespace Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 36
  • 37. Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 37 1. ETL Verarbeitung 2. DML Error Logging 3. Performance DML Error Logging 4. Erfahrungen mit DML Error Logging 5. Zusammenfassung Fehlerbehandlung mittels DML Error Logging Überblick
  • 38. Zusammenfassung Ausblick • Größter Vorteil: einfacher, wartbarer Code im Vergleich zu PL/SQL- Schleifenverarbeitung • DML Error Logging geeignet, wenn Daten wenig Fehler aufweisen (< 5-10%), ansonsten größerer Performanceverlust • DML Error Logging hat sich bewährt in einem Projekt für einen Codegenerator • Man muss mit Oracle Bugs rechnen bei komplexeren Datenfehlern • Einschränkungen bei eindeutigen Constraints (unique constraint) bzw. eindeutigen Indexen (unique index) bei UPDATE und MERGE Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 38
  • 39. Daimler TSS / Fehlerbehebung mittels DML Error Logging / Solutions / 19.11.2013 39 Vielen Dank! Daimler TSS GmbH Wilhelm-Runge-Straße 11 89081 Ulm Telefon +49 731 505-06 Fax +49 731 505-65 99 tss@daimler.com Internet: www.daimler-tss.com Intranet: intra.corpintra.net/intra-itc/tss Intranet-Portal-Code: @TSS Daimler TSS GmbH Sitz und Registergericht: Ulm, HRB-Nr.: 3844 Geschäftsführung: Dr. Stefan Eberhardt (Vorsitzender), Steffen Bäuerle