SlideShare une entreprise Scribd logo
1  sur  15
Logging und Debugging in Forms
Gerd Volberg

OPITZ CONSULTING Deutschland GmbH

Bochum, 20. Februar 2014
Oracle Forms Tipps und Tricks

© OPITZ CONSULTING GmbH

Seite 1
Agenda

1.

Logging
 Datenmodell
 Tabellen
 Views

2.

Debugging
 Debug-Package
 Funktionen
 Prozeduren

 Ein erster Test
 Best Practices

Oracle Forms Tipps und Tricks

© OPITZ CONSULTING GmbH

Seite 2
1

Logging

Oracle Forms Tipps und Tricks

© OPITZ CONSULTING GmbH

Seite 3
Datenmodell
Um Applikationen zu überwachen und diese Daten auf
einfachste Art und Weise speichern zu können, benötigen wir
eine Tabelle namens Logging und eine Sequence für den
Primary Key.
CREATE TABLE Logging (
ID
SESSION_ID
INSERT_DATE
TEXT

NUMBER(8,0) NOT NULL,
NUMBER(8,0),
DATE NOT NULL,
VARCHAR2(2000) NOT NULL);

CREATE SEQUENCE Logging_SEQ;

Oracle Forms Tipps und Tricks

© OPITZ CONSULTING GmbH

Seite 4
Datenmodell
Über diese Tabelle legen wir eine View, die die Daten der
Tabelle 1:1 selektiert und sortiert.
CREATE OR REPLACE VIEW V_Logging_desc
(ID, SESSION_ID, INSERT_DATE, TEXT) AS
SELECT ID, SESSION_ID, INSERT_DATE, TEXT
FROM Logging
ORDER BY SESSION_ID DESC, ID DESC;

Die Sortierung ist wichtig, damit im SQL Developer oder TOAD
die Analyse der Logging-Daten so einfach wie möglich ist.

Oracle Forms Tipps und Tricks

© OPITZ CONSULTING GmbH

Seite 5
2

Debugging

Oracle Forms Tipps und Tricks

© OPITZ CONSULTING GmbH

Seite 6
Debug-Package
Damit Fehlermeldungen und Debuginformationen protokolliert
werden können, benötigen wir ein Package pk_Debug.
CREATE OR REPLACE PACKAGE PK_Debug IS
FUNCTION Debug_allowed RETURN BOOLEAN;
FUNCTION Next_ID
RETURN NUMBER;
PROCEDURE Disable;
PROCEDURE Enable;
PROCEDURE Destroy;
PROCEDURE Init (P_Debug_allowed IN BOOLEAN DEFAULT TRUE);
PROCEDURE Write (P_Text
IN VARCHAR2,
P_Session_ID
IN NUMBER DEFAULT NULL);
G_Debug_allowed BOOLEAN := TRUE;
G_Session_ID
NUMBER;
END;

Oracle Forms Tipps und Tricks

© OPITZ CONSULTING GmbH

Seite 7
Funktionen
pk_Debug stellt folgende Funktionen zur Verfügung:
Debug_Allowed
– TRUE, wenn Debugging enabled ist
Next_ID
– Gibt die nächste Sequence zurück.
CREATE OR REPLACE PACKAGE BODY PK_Debug IS
FUNCTION Debug_allowed RETURN BOOLEAN IS
BEGIN
RETURN (G_Debug_allowed);
END;
FUNCTION Next_ID RETURN NUMBER IS
V_ID NUMBER;
BEGIN
SELECT Logging_SEQ.nextval INTO V_ID FROM DUAL;
RETURN (V_ID);
END;
Oracle Forms Tipps und Tricks

© OPITZ CONSULTING GmbH

Seite 8
Prozeduren
Wenn man größere Teile Source Code untersucht, kann es
hilfreich sein, Teile, die schon untersucht wurden, vom
Debugging auszuschließen. Dazu benötigen wir folgende
Prozeduren:
PROCEDURE Disable IS
BEGIN
G_Debug_allowed := FALSE;
END;

PROCEDURE Enable IS
BEGIN
G_Debug_allowed := TRUE;
END;

Oracle Forms Tipps und Tricks

© OPITZ CONSULTING GmbH

Seite 9
Prozeduren
Das Debugging kann initialisiert und destroyed werden:
PROCEDURE Init (
P_Debug_allowed
BEGIN
G_Debug_allowed
G_Session_ID
Write ('--start

IN BOOLEAN DEFAULT TRUE) IS
:= P_Debug_allowed;
:= Next_ID;
' || to_char (G_Session_ID)
|| '----------------------');

END;
PROCEDURE Destroy IS
BEGIN
Write ('----------------------stopp '
|| to_char (G_Session_ID) || '--');
G_Session_ID := NULL;
END;

Oracle Forms Tipps und Tricks

© OPITZ CONSULTING GmbH

Seite 10
Prozeduren
Die wichtigste Routine ist Write, mit der man einzelne LoggingDatensätze erzeugt:
PROCEDURE Write (
P_Text
IN VARCHAR2,
P_Session_ID IN NUMBER DEFAULT NULL) IS
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
IF Debug_allowed THEN
IF G_Session_ID IS NULL THEN Init; END IF;
INSERT INTO Logging (ID, Session_ID, Insert_Date, Text)
VALUES (Next_ID, NVL (P_Session_ID, G_Session_ID),
Sysdate, P_Text);
COMMIT;
END IF;
END;
END;
/
Oracle Forms Tipps und Tricks

© OPITZ CONSULTING GmbH

Seite 11
Ein erster Test
In diesem Beispiel wird eine Variable V_Test untersucht und
ins Logging geschrieben:
pk_Debug.Init;
pk_Debug.Write ('Hello World: ' || V_Test);
pk_Debug.Destroy;

Das Ergebnis in der Loggingtabelle sieht dann so aus:
ID Session Insert-Date
Text
============================================
24
21
10.09.-12:38:48 -----------------------stopp 21-23
21
10.09.-12:38:48 Hello World: 42
22
21
10.09.-12:38:48 --start 21----------------------Oracle Forms Tipps und Tricks

© OPITZ CONSULTING GmbH

Seite 12
Best Practices
Wenn man in einer Routine Fehler sucht, sollte man jeden
Bereich, den man autark untersuchen möchte, mit
pk_debug.Init beginnen und mit Destroy enden lassen
Wenn die Debug-Prozeduren im Source Code dauerhaft
enthalten sein sollen, kann man das Debugging mit
pk_Debug.Disable unterbrechen und mit Enable wieder
fortführen.
Beim Start kann die Routine Init automatisch enabled oder
disabled starten.
Just use it!
Oracle Forms Tipps und Tricks

© OPITZ CONSULTING GmbH

Seite 13
Download
Das Package inkl. der DDL-Skripte zusammen mit dieser
Präsentation sind ab Freitag, 21.02.2014, unter folgender URL
zu finden:

http://code.google.com/p/forms-framework/
Dort dann einfach auf "Downloads" klicken

Oracle Forms Tipps und Tricks

© OPITZ CONSULTING GmbH

Seite 14
Ihr Ansprechpartner
Gerd Volberg
Solution Architect

OPITZ CONSULTING Deutschland GmbH
Kirchstr. 6, 51647 Gummersbach
Tel. +49 (2261) 60 01-0
gerd.volberg@opitz-consulting.com

talk2gerd.blogspot.com

Oracle Forms Tipps und Tricks

© OPITZ CONSULTING GmbH

Seite 15

Contenu connexe

Similaire à Logging und Debugging in Oracle Forms

TYPO3 coding guidelines
TYPO3 coding guidelinesTYPO3 coding guidelines
TYPO3 coding guidelinesAlex Kellner
 
Ausgewählte PL/SQL Packages (2)
Ausgewählte PL/SQL Packages (2)Ausgewählte PL/SQL Packages (2)
Ausgewählte PL/SQL Packages (2)Ulrike Schwinn
 
OSMC 2008 | Nagios & OTRS Integration by Jens Bothe
OSMC 2008 | Nagios & OTRS Integration by Jens BotheOSMC 2008 | Nagios & OTRS Integration by Jens Bothe
OSMC 2008 | Nagios & OTRS Integration by Jens BotheNETWAYS
 
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
 
Webinar ABAP 7.40 sp5/sp8 Releaseinformationen
Webinar ABAP 7.40 sp5/sp8 ReleaseinformationenWebinar ABAP 7.40 sp5/sp8 Releaseinformationen
Webinar ABAP 7.40 sp5/sp8 ReleaseinformationenCadaxo GmbH
 
2012 borys neselovskyi_automatisierte_middleware_installation_praesentation
2012 borys neselovskyi_automatisierte_middleware_installation_praesentation2012 borys neselovskyi_automatisierte_middleware_installation_praesentation
2012 borys neselovskyi_automatisierte_middleware_installation_praesentationbneselov
 
OSMC 2012 | Automatische Konfiguration von Nagios/Icinga mit Agordamon by Chr...
OSMC 2012 | Automatische Konfiguration von Nagios/Icinga mit Agordamon by Chr...OSMC 2012 | Automatische Konfiguration von Nagios/Icinga mit Agordamon by Chr...
OSMC 2012 | Automatische Konfiguration von Nagios/Icinga mit Agordamon by Chr...NETWAYS
 
Enterprise Java Batch mit Spring
Enterprise Java Batch mit SpringEnterprise Java Batch mit Spring
Enterprise Java Batch mit Springdenschu
 
.NET Summit 2016 in München: ASP.NET Core 1
.NET Summit 2016 in München: ASP.NET Core 1.NET Summit 2016 in München: ASP.NET Core 1
.NET Summit 2016 in München: ASP.NET Core 1Manfred Steyer
 
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
 
Dnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbookDnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbookUlrich Krause
 
Automatisierung im DWH - Sich das Leben erleichern mit dem ODI
Automatisierung im DWH - Sich das Leben erleichern mit dem ODIAutomatisierung im DWH - Sich das Leben erleichern mit dem ODI
Automatisierung im DWH - Sich das Leben erleichern mit dem ODIOPITZ CONSULTING Deutschland
 
The Lotus Code Cookbook
The Lotus Code CookbookThe Lotus Code Cookbook
The Lotus Code CookbookUlrich Krause
 
ADR Best Practices - DOAG Regio-Treffen 2010 - OPITZ CONSULTING - Christian B...
ADR Best Practices - DOAG Regio-Treffen 2010 - OPITZ CONSULTING - Christian B...ADR Best Practices - DOAG Regio-Treffen 2010 - OPITZ CONSULTING - Christian B...
ADR Best Practices - DOAG Regio-Treffen 2010 - OPITZ CONSULTING - Christian B...OPITZ CONSULTING Deutschland
 
MySQL Performance Tuning für Entwickler
MySQL Performance Tuning für EntwicklerMySQL Performance Tuning für Entwickler
MySQL Performance Tuning für EntwicklerFromDual GmbH
 
Oracle Performance-Analyse mit frei verfügbaren Mitteln
Oracle Performance-Analyse mit frei verfügbaren Mitteln Oracle Performance-Analyse mit frei verfügbaren Mitteln
Oracle Performance-Analyse mit frei verfügbaren Mitteln OPITZ CONSULTING Deutschland
 
YAFOWIL - Webformulare in Python ohne Kopfschmerzen
YAFOWIL - Webformulare in Python ohne KopfschmerzenYAFOWIL - Webformulare in Python ohne Kopfschmerzen
YAFOWIL - Webformulare in Python ohne KopfschmerzenJens Klein
 
Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?
Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?
Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?Marc Müller
 

Similaire à Logging und Debugging in Oracle Forms (20)

TYPO3 coding guidelines
TYPO3 coding guidelinesTYPO3 coding guidelines
TYPO3 coding guidelines
 
Ausgewählte PL/SQL Packages (2)
Ausgewählte PL/SQL Packages (2)Ausgewählte PL/SQL Packages (2)
Ausgewählte PL/SQL Packages (2)
 
OSMC 2008 | Nagios & OTRS Integration by Jens Bothe
OSMC 2008 | Nagios & OTRS Integration by Jens BotheOSMC 2008 | Nagios & OTRS Integration by Jens Bothe
OSMC 2008 | Nagios & OTRS Integration by Jens Bothe
 
Ausgewählte PL/SQL Packages (1)
Ausgewählte PL/SQL Packages (1)Ausgewählte PL/SQL Packages (1)
Ausgewählte PL/SQL Packages (1)
 
Webinar ABAP 7.40 sp5/sp8 Releaseinformationen
Webinar ABAP 7.40 sp5/sp8 ReleaseinformationenWebinar ABAP 7.40 sp5/sp8 Releaseinformationen
Webinar ABAP 7.40 sp5/sp8 Releaseinformationen
 
2012 borys neselovskyi_automatisierte_middleware_installation_praesentation
2012 borys neselovskyi_automatisierte_middleware_installation_praesentation2012 borys neselovskyi_automatisierte_middleware_installation_praesentation
2012 borys neselovskyi_automatisierte_middleware_installation_praesentation
 
OSMC 2012 | Automatische Konfiguration von Nagios/Icinga mit Agordamon by Chr...
OSMC 2012 | Automatische Konfiguration von Nagios/Icinga mit Agordamon by Chr...OSMC 2012 | Automatische Konfiguration von Nagios/Icinga mit Agordamon by Chr...
OSMC 2012 | Automatische Konfiguration von Nagios/Icinga mit Agordamon by Chr...
 
SQL Developer 4.x - Tipps für "faule" Entwickler
SQL Developer 4.x - Tipps für "faule" EntwicklerSQL Developer 4.x - Tipps für "faule" Entwickler
SQL Developer 4.x - Tipps für "faule" Entwickler
 
Enterprise Java Batch mit Spring
Enterprise Java Batch mit SpringEnterprise Java Batch mit Spring
Enterprise Java Batch mit Spring
 
.NET Summit 2016 in München: ASP.NET Core 1
.NET Summit 2016 in München: ASP.NET Core 1.NET Summit 2016 in München: ASP.NET Core 1
.NET Summit 2016 in München: ASP.NET Core 1
 
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
 
Dnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbookDnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbook
 
Automatisierung im DWH - Sich das Leben erleichern mit dem ODI
Automatisierung im DWH - Sich das Leben erleichern mit dem ODIAutomatisierung im DWH - Sich das Leben erleichern mit dem ODI
Automatisierung im DWH - Sich das Leben erleichern mit dem ODI
 
The Lotus Code Cookbook
The Lotus Code CookbookThe Lotus Code Cookbook
The Lotus Code Cookbook
 
ADR Best Practices - DOAG Regio-Treffen 2010 - OPITZ CONSULTING - Christian B...
ADR Best Practices - DOAG Regio-Treffen 2010 - OPITZ CONSULTING - Christian B...ADR Best Practices - DOAG Regio-Treffen 2010 - OPITZ CONSULTING - Christian B...
ADR Best Practices - DOAG Regio-Treffen 2010 - OPITZ CONSULTING - Christian B...
 
MySQL Performance Tuning für Entwickler
MySQL Performance Tuning für EntwicklerMySQL Performance Tuning für Entwickler
MySQL Performance Tuning für Entwickler
 
Oracle Performance-Analyse mit frei verfügbaren Mitteln
Oracle Performance-Analyse mit frei verfügbaren Mitteln Oracle Performance-Analyse mit frei verfügbaren Mitteln
Oracle Performance-Analyse mit frei verfügbaren Mitteln
 
YAFOWIL - Webformulare in Python ohne Kopfschmerzen
YAFOWIL - Webformulare in Python ohne KopfschmerzenYAFOWIL - Webformulare in Python ohne Kopfschmerzen
YAFOWIL - Webformulare in Python ohne Kopfschmerzen
 
Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?
Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?
Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?
 
Oracle Forms: How to create a Framework
Oracle Forms: How to create a FrameworkOracle Forms: How to create a Framework
Oracle Forms: How to create a Framework
 

Plus de OPITZ CONSULTING Deutschland

Architecture Room Stuttgart - "Cloud-native ist nur ein Teil des Spiels!"
Architecture Room Stuttgart - "Cloud-native ist nur ein Teil des Spiels!"Architecture Room Stuttgart - "Cloud-native ist nur ein Teil des Spiels!"
Architecture Room Stuttgart - "Cloud-native ist nur ein Teil des Spiels!"OPITZ CONSULTING Deutschland
 
OC|Webcast: Oracle Lizenzierung - Die größten Fallen in der Praxis
OC|Webcast: Oracle Lizenzierung - Die größten Fallen in der PraxisOC|Webcast: Oracle Lizenzierung - Die größten Fallen in der Praxis
OC|Webcast: Oracle Lizenzierung - Die größten Fallen in der PraxisOPITZ CONSULTING Deutschland
 
OC|Webcast: Oracle Lizenzierung - Virtualisierung und Cloud
OC|Webcast: Oracle Lizenzierung - Virtualisierung und CloudOC|Webcast: Oracle Lizenzierung - Virtualisierung und Cloud
OC|Webcast: Oracle Lizenzierung - Virtualisierung und CloudOPITZ CONSULTING Deutschland
 
OC|Weekly Talk: Inspect’n’Adapt – Make Change come true!
OC|Weekly Talk: Inspect’n’Adapt – Make Change come true!OC|Weekly Talk: Inspect’n’Adapt – Make Change come true!
OC|Weekly Talk: Inspect’n’Adapt – Make Change come true!OPITZ CONSULTING Deutschland
 
OC|Webcast: Schnell und clever in die AWS Cloud – Migrationsszenarien und Han...
OC|Webcast: Schnell und clever in die AWS Cloud – Migrationsszenarien und Han...OC|Webcast: Schnell und clever in die AWS Cloud – Migrationsszenarien und Han...
OC|Webcast: Schnell und clever in die AWS Cloud – Migrationsszenarien und Han...OPITZ CONSULTING Deutschland
 
OC|Weekly Talk: "Das müsste man mal digitalisieren" - Mit Low-Code schnell zu...
OC|Weekly Talk: "Das müsste man mal digitalisieren" - Mit Low-Code schnell zu...OC|Weekly Talk: "Das müsste man mal digitalisieren" - Mit Low-Code schnell zu...
OC|Weekly Talk: "Das müsste man mal digitalisieren" - Mit Low-Code schnell zu...OPITZ CONSULTING Deutschland
 
OC|Weekly Talk: Service Management – Was hat sich durch Corona geändert?
OC|Weekly Talk: Service Management – Was hat sich durch Corona geändert?OC|Weekly Talk: Service Management – Was hat sich durch Corona geändert?
OC|Weekly Talk: Service Management – Was hat sich durch Corona geändert?OPITZ CONSULTING Deutschland
 
OC|Weekly Talk - Digitales Coaching & Smart Sparring
OC|Weekly Talk - Digitales Coaching & Smart Sparring OC|Weekly Talk - Digitales Coaching & Smart Sparring
OC|Weekly Talk - Digitales Coaching & Smart Sparring OPITZ CONSULTING Deutschland
 
Effiziente Betriebsoptimierung durch Cloud Nutzung
Effiziente Betriebsoptimierung durch Cloud NutzungEffiziente Betriebsoptimierung durch Cloud Nutzung
Effiziente Betriebsoptimierung durch Cloud NutzungOPITZ CONSULTING Deutschland
 

Plus de OPITZ CONSULTING Deutschland (20)

OC|Webcast: Grundlagen der Oracle Lizenzierung
OC|Webcast: Grundlagen der Oracle LizenzierungOC|Webcast: Grundlagen der Oracle Lizenzierung
OC|Webcast: Grundlagen der Oracle Lizenzierung
 
OC|Webcast "Java heute" vom 28.09.2021
OC|Webcast "Java heute" vom 28.09.2021OC|Webcast "Java heute" vom 28.09.2021
OC|Webcast "Java heute" vom 28.09.2021
 
OC|Webcast "Java heute" vom 24.08.2021
OC|Webcast "Java heute" vom 24.08.2021OC|Webcast "Java heute" vom 24.08.2021
OC|Webcast "Java heute" vom 24.08.2021
 
OC|Webcast "Daten wirklich nutzen"
OC|Webcast "Daten wirklich nutzen"OC|Webcast "Daten wirklich nutzen"
OC|Webcast "Daten wirklich nutzen"
 
Architecture Room Stuttgart - "Cloud-native ist nur ein Teil des Spiels!"
Architecture Room Stuttgart - "Cloud-native ist nur ein Teil des Spiels!"Architecture Room Stuttgart - "Cloud-native ist nur ein Teil des Spiels!"
Architecture Room Stuttgart - "Cloud-native ist nur ein Teil des Spiels!"
 
OC|Webcast "Willkommen in der Cloud!"
OC|Webcast "Willkommen in der Cloud!"OC|Webcast "Willkommen in der Cloud!"
OC|Webcast "Willkommen in der Cloud!"
 
OC|Webcast "Die neue Welt der Virtualisierung"
OC|Webcast "Die neue Welt der Virtualisierung"OC|Webcast "Die neue Welt der Virtualisierung"
OC|Webcast "Die neue Welt der Virtualisierung"
 
10 Thesen zur professionellen Softwareentwicklung
10 Thesen zur professionellen Softwareentwicklung10 Thesen zur professionellen Softwareentwicklung
10 Thesen zur professionellen Softwareentwicklung
 
OC|Webcast: Oracle Lizenzierung - Lizenznews 2021
OC|Webcast: Oracle Lizenzierung - Lizenznews 2021OC|Webcast: Oracle Lizenzierung - Lizenznews 2021
OC|Webcast: Oracle Lizenzierung - Lizenznews 2021
 
OC|Webcast: Oracle Lizenzierung - Die größten Fallen in der Praxis
OC|Webcast: Oracle Lizenzierung - Die größten Fallen in der PraxisOC|Webcast: Oracle Lizenzierung - Die größten Fallen in der Praxis
OC|Webcast: Oracle Lizenzierung - Die größten Fallen in der Praxis
 
OC|Webcast: Oracle Lizenzierung - Virtualisierung und Cloud
OC|Webcast: Oracle Lizenzierung - Virtualisierung und CloudOC|Webcast: Oracle Lizenzierung - Virtualisierung und Cloud
OC|Webcast: Oracle Lizenzierung - Virtualisierung und Cloud
 
OC|Webcast: Grundlagen der Oracle-Lizenzierung
OC|Webcast: Grundlagen der Oracle-LizenzierungOC|Webcast: Grundlagen der Oracle-Lizenzierung
OC|Webcast: Grundlagen der Oracle-Lizenzierung
 
OC|Weekly Talk: Inspect’n’Adapt – Make Change come true!
OC|Weekly Talk: Inspect’n’Adapt – Make Change come true!OC|Weekly Talk: Inspect’n’Adapt – Make Change come true!
OC|Weekly Talk: Inspect’n’Adapt – Make Change come true!
 
OC|Webcast: Schnell und clever in die AWS Cloud – Migrationsszenarien und Han...
OC|Webcast: Schnell und clever in die AWS Cloud – Migrationsszenarien und Han...OC|Webcast: Schnell und clever in die AWS Cloud – Migrationsszenarien und Han...
OC|Webcast: Schnell und clever in die AWS Cloud – Migrationsszenarien und Han...
 
OC|Weekly Talk The Power of DevOps…
OC|Weekly Talk  The Power of DevOps…OC|Weekly Talk  The Power of DevOps…
OC|Weekly Talk The Power of DevOps…
 
OC|Weekly Talk: "Das müsste man mal digitalisieren" - Mit Low-Code schnell zu...
OC|Weekly Talk: "Das müsste man mal digitalisieren" - Mit Low-Code schnell zu...OC|Weekly Talk: "Das müsste man mal digitalisieren" - Mit Low-Code schnell zu...
OC|Weekly Talk: "Das müsste man mal digitalisieren" - Mit Low-Code schnell zu...
 
OC|Weekly Talk: Service Management – Was hat sich durch Corona geändert?
OC|Weekly Talk: Service Management – Was hat sich durch Corona geändert?OC|Weekly Talk: Service Management – Was hat sich durch Corona geändert?
OC|Weekly Talk: Service Management – Was hat sich durch Corona geändert?
 
OC|Weekly Talk - Digitales Coaching & Smart Sparring
OC|Weekly Talk - Digitales Coaching & Smart Sparring OC|Weekly Talk - Digitales Coaching & Smart Sparring
OC|Weekly Talk - Digitales Coaching & Smart Sparring
 
OC|Weekly Talk - Beratung remote
OC|Weekly Talk - Beratung remoteOC|Weekly Talk - Beratung remote
OC|Weekly Talk - Beratung remote
 
Effiziente Betriebsoptimierung durch Cloud Nutzung
Effiziente Betriebsoptimierung durch Cloud NutzungEffiziente Betriebsoptimierung durch Cloud Nutzung
Effiziente Betriebsoptimierung durch Cloud Nutzung
 

Logging und Debugging in Oracle Forms

  • 1. Logging und Debugging in Forms Gerd Volberg OPITZ CONSULTING Deutschland GmbH Bochum, 20. Februar 2014 Oracle Forms Tipps und Tricks © OPITZ CONSULTING GmbH Seite 1
  • 2. Agenda 1. Logging  Datenmodell  Tabellen  Views 2. Debugging  Debug-Package  Funktionen  Prozeduren  Ein erster Test  Best Practices Oracle Forms Tipps und Tricks © OPITZ CONSULTING GmbH Seite 2
  • 3. 1 Logging Oracle Forms Tipps und Tricks © OPITZ CONSULTING GmbH Seite 3
  • 4. Datenmodell Um Applikationen zu überwachen und diese Daten auf einfachste Art und Weise speichern zu können, benötigen wir eine Tabelle namens Logging und eine Sequence für den Primary Key. CREATE TABLE Logging ( ID SESSION_ID INSERT_DATE TEXT NUMBER(8,0) NOT NULL, NUMBER(8,0), DATE NOT NULL, VARCHAR2(2000) NOT NULL); CREATE SEQUENCE Logging_SEQ; Oracle Forms Tipps und Tricks © OPITZ CONSULTING GmbH Seite 4
  • 5. Datenmodell Über diese Tabelle legen wir eine View, die die Daten der Tabelle 1:1 selektiert und sortiert. CREATE OR REPLACE VIEW V_Logging_desc (ID, SESSION_ID, INSERT_DATE, TEXT) AS SELECT ID, SESSION_ID, INSERT_DATE, TEXT FROM Logging ORDER BY SESSION_ID DESC, ID DESC; Die Sortierung ist wichtig, damit im SQL Developer oder TOAD die Analyse der Logging-Daten so einfach wie möglich ist. Oracle Forms Tipps und Tricks © OPITZ CONSULTING GmbH Seite 5
  • 6. 2 Debugging Oracle Forms Tipps und Tricks © OPITZ CONSULTING GmbH Seite 6
  • 7. Debug-Package Damit Fehlermeldungen und Debuginformationen protokolliert werden können, benötigen wir ein Package pk_Debug. CREATE OR REPLACE PACKAGE PK_Debug IS FUNCTION Debug_allowed RETURN BOOLEAN; FUNCTION Next_ID RETURN NUMBER; PROCEDURE Disable; PROCEDURE Enable; PROCEDURE Destroy; PROCEDURE Init (P_Debug_allowed IN BOOLEAN DEFAULT TRUE); PROCEDURE Write (P_Text IN VARCHAR2, P_Session_ID IN NUMBER DEFAULT NULL); G_Debug_allowed BOOLEAN := TRUE; G_Session_ID NUMBER; END; Oracle Forms Tipps und Tricks © OPITZ CONSULTING GmbH Seite 7
  • 8. Funktionen pk_Debug stellt folgende Funktionen zur Verfügung: Debug_Allowed – TRUE, wenn Debugging enabled ist Next_ID – Gibt die nächste Sequence zurück. CREATE OR REPLACE PACKAGE BODY PK_Debug IS FUNCTION Debug_allowed RETURN BOOLEAN IS BEGIN RETURN (G_Debug_allowed); END; FUNCTION Next_ID RETURN NUMBER IS V_ID NUMBER; BEGIN SELECT Logging_SEQ.nextval INTO V_ID FROM DUAL; RETURN (V_ID); END; Oracle Forms Tipps und Tricks © OPITZ CONSULTING GmbH Seite 8
  • 9. Prozeduren Wenn man größere Teile Source Code untersucht, kann es hilfreich sein, Teile, die schon untersucht wurden, vom Debugging auszuschließen. Dazu benötigen wir folgende Prozeduren: PROCEDURE Disable IS BEGIN G_Debug_allowed := FALSE; END; PROCEDURE Enable IS BEGIN G_Debug_allowed := TRUE; END; Oracle Forms Tipps und Tricks © OPITZ CONSULTING GmbH Seite 9
  • 10. Prozeduren Das Debugging kann initialisiert und destroyed werden: PROCEDURE Init ( P_Debug_allowed BEGIN G_Debug_allowed G_Session_ID Write ('--start IN BOOLEAN DEFAULT TRUE) IS := P_Debug_allowed; := Next_ID; ' || to_char (G_Session_ID) || '----------------------'); END; PROCEDURE Destroy IS BEGIN Write ('----------------------stopp ' || to_char (G_Session_ID) || '--'); G_Session_ID := NULL; END; Oracle Forms Tipps und Tricks © OPITZ CONSULTING GmbH Seite 10
  • 11. Prozeduren Die wichtigste Routine ist Write, mit der man einzelne LoggingDatensätze erzeugt: PROCEDURE Write ( P_Text IN VARCHAR2, P_Session_ID IN NUMBER DEFAULT NULL) IS PRAGMA AUTONOMOUS_TRANSACTION; BEGIN IF Debug_allowed THEN IF G_Session_ID IS NULL THEN Init; END IF; INSERT INTO Logging (ID, Session_ID, Insert_Date, Text) VALUES (Next_ID, NVL (P_Session_ID, G_Session_ID), Sysdate, P_Text); COMMIT; END IF; END; END; / Oracle Forms Tipps und Tricks © OPITZ CONSULTING GmbH Seite 11
  • 12. Ein erster Test In diesem Beispiel wird eine Variable V_Test untersucht und ins Logging geschrieben: pk_Debug.Init; pk_Debug.Write ('Hello World: ' || V_Test); pk_Debug.Destroy; Das Ergebnis in der Loggingtabelle sieht dann so aus: ID Session Insert-Date Text ============================================ 24 21 10.09.-12:38:48 -----------------------stopp 21-23 21 10.09.-12:38:48 Hello World: 42 22 21 10.09.-12:38:48 --start 21----------------------Oracle Forms Tipps und Tricks © OPITZ CONSULTING GmbH Seite 12
  • 13. Best Practices Wenn man in einer Routine Fehler sucht, sollte man jeden Bereich, den man autark untersuchen möchte, mit pk_debug.Init beginnen und mit Destroy enden lassen Wenn die Debug-Prozeduren im Source Code dauerhaft enthalten sein sollen, kann man das Debugging mit pk_Debug.Disable unterbrechen und mit Enable wieder fortführen. Beim Start kann die Routine Init automatisch enabled oder disabled starten. Just use it! Oracle Forms Tipps und Tricks © OPITZ CONSULTING GmbH Seite 13
  • 14. Download Das Package inkl. der DDL-Skripte zusammen mit dieser Präsentation sind ab Freitag, 21.02.2014, unter folgender URL zu finden: http://code.google.com/p/forms-framework/ Dort dann einfach auf "Downloads" klicken Oracle Forms Tipps und Tricks © OPITZ CONSULTING GmbH Seite 14
  • 15. Ihr Ansprechpartner Gerd Volberg Solution Architect OPITZ CONSULTING Deutschland GmbH Kirchstr. 6, 51647 Gummersbach Tel. +49 (2261) 60 01-0 gerd.volberg@opitz-consulting.com talk2gerd.blogspot.com Oracle Forms Tipps und Tricks © OPITZ CONSULTING GmbH Seite 15