2012-12-13

Oracle Text Composite Domain Index

Bei Nutzung der Oracle Text Volltextsuche kann es oft vorkommen, dass in der WHERE-Bedingung eines SQL-Query sowohl gegen die indizierte Textspalte (mit CONTAINS), als auch gegen eine oder mehrere normale relationale Spalten gefiltert wird, man also eine gemischte Abfrage oder auch „Mixed Query“ hat. Eine solche Abfrage ist womöglich nicht optimal, da sie zu Performanceproblemen führen kann. Was ist in einem solchen Fall zu tun?

Seit Oracle 11g kann man unter Verwendung von z.B. Multi-Column-Datastores, die zusätzlich die relationalen Spalten enthalten, sowie passenden SDATA-Sections die strukturellen Informationen mit in den Volltextindex holen. Die relationalen Abfragen werden dann mit dem SDATA-Operator innerhalb des CONTAINS ausgeführt.

Diese Vorgehensweise hatte bei einem Kunden nicht zum erwünschten Erfolg geführt, was mich zu einer anderen Maßnahme greifen liess:

Ebenfalls seit Oracle 11g gibt es noch eine weitere Möglichkeit, mit
„Mixed Queries umzugehen: Den Composite-Domain-Index (CDI). Hierbei kann man sich das Anlegen des Multi-Column-Datastore und der SDATA-Sections sparen. Man gibt einfach beim Anlegen des Volltext-Indexes die entsprechenden Where-Filter-Spalten als FILTER BY Spalten und/oder die entsprechenden Sortier-Spalten als ORDER BY Spalten an. An der Struktur, die der Index anlegt kann man erkennen, dass hier im Hintergrund eine SDATA-ähnliche Technik arbeitet.

CREATE INDEX mein_index ON meine_tabelle(meine_textspalte)
   INDEXTYPE IS ctxsys.context
   FILTER BY suchspalte1, suchspalte2, ...
   ORDER BY sortierspalte1, sortierspalte2, ...

Dies brachte eine deutliche Performance-Verbesserung gegenüber der „manuellen“ SDATA-Anwendung. Ein weiterer Vorteil: Man muss die SQL-Queries nicht umstellen, die relationalen Abfragen werden bei Verwendung eines CDI wie gehabt verwendet und müssen nicht mit in den CONTAINS-Ausdruck.

2012-11-15

Minimalinvasive Überwachung von Datenbanken für optimale Verfügbarkeit

Überwachung von Datenbanksystemen ist ein wichtiges Thema um deren Verfügbarkeit zu gewährleisten. Über Werkzeuge zur Überwachung wie z. B. Enterprise Manager oder Nagios wurde schon viel berichtet. Die Werkzeuge ermöglichen es, viele vordefinierte Messwerte (Metriken) regelmäßig zu erfassen, mit Schwellwerten zu versehen und bei deren Überschreiten Alarme zu senden. Bei jedem dieser Werkzeuge stellt sich aber die Frage, was will ich bzw. was muss ich mindestens überwachen, um die für mein Unternehmen optimale Verfügbarkeit zu gewährleisten?
Sicher kann man alle möglichen Messwerte erfassen lassen. Aber eine Überwachung soll möglichst minimalinvasiv, d.h. mit kleinstmöglichem Aufwand eingreifend, erfolgen und damit das Datenbanksystemen wenig belasten.

Im Rahmen der proaktiven Überwachung unserer „Oracle Administration Services“ haben wir uns bei verschiedensten Kundenumgebungen Gedanken dazu gemacht, welche Überwachung unter dem Aufwand-/Nutzen-Aspekt sinnvoll sind. Aufwand meint hier Kosten als auch Systembelastung und Nutzen ist die sichergestellte Verfügbarkeit.
Mit diesem Vortrag möchte ich darstellen, welche Messwerte in welchen Konfigurationen minimal überwacht werden sollten und welche Ausfälle damit vermieden werden können. Aus unseren Erfahrungen berichte ich auch, welche Ausfälle sich nicht gänzlich vermeiden lassen. Dabei werden die verschiedensten Konfigurationen und Komponenten von Datenbanksystemen berücksichtigt. z.B.: Single Instanz, RAC, Data Guard, Fail Safe, Filesystem, ASM, Netzwerk, Unix/Linux, Windows.

Sollte Sie das Thema interessieren, dann kommen Sie doch zur DOAG Konferenz 2012, die in nicht mal einer Woche startet. Wie in den vergangenen Jahren ist TEAM mit mehreren Vorträgen dabei. Ich halte dort den Vortrag mit dem oben genannten Titel. Und wie in den letzten Jahren wird TEAM auch mit einem Stand vor Ort in Nürnberg vertreten sein, an dem Sie die Chance haben, mit uns, den Autoren, in die Diskussion einzusteigen.

2012-k-banner_speaker Wir sehen uns
  • beim Vortrag am Donnerstag, 22. November 2012,
    10:00 - 10:45 Uhr Uhr im Raum St. Petersburg

oder
  • am Stand von TEAM, Stand 204, in der 2. Etage (gelb)

Weitere Details finden Sie auf den DOAG Seiten oder auch selbstverständlich hier bei TEAM.

2012-10-23

Download älterer Versionen der Oracle Software

Seit Mitte 2012 können ältere Versionen der Oracle Software nicht mehr über das Oracle Technology Network (OTN) und auch nicht ohne weiteres aus der Oracle Software Delivery Cloud herunter geladen werden. Das betrifft alle Produkte.

Die Downloadlinks älterer Versionen sind aus dem OTN spurlos verschwunden.

Beim Enterprise Manager Download im OTN hatte ich vor einigen Wochen noch einen Hinweis gesehen, wie man an den Downloadlink einer alten Version herankommt. Dieser Hinweis ist aber nun auch nicht mehr vorhanden und bei anderen Produkten stand er nicht. Im OTN findet sich also kein Hinweis ob und wie man eine alte Version herunter laden kann.

In einem anderen Blog habe ich den Hinweis gefunden, dass man mit einem bekannten Link auf eine alte Software Version im OTN diese noch herunter laden kann. Das geht nun jedoch auch nicht mehr. Die alten Softwarestände scheinen aus dem OTN komplett entfernt zu sein.

Benötigt man ältere Softwarestände der Oracle Produkte, so muss man über einen gültigen Support Vertrag mit Oracle verfügen. Die Medien oder Downloads kann man dann über My Oracle Support (MOS) anfordern (siehe FAQ: Downloading 9i, 10g, and 11g database software media [ID 1476075.1]). Dazu erstellt man einen “Contact Us” bzw. “non-technical” Service Request. Details, wie ein solcher Service Request (SR) erstellt wird finden sich in folgender MOS Note:

Wünscht man im SR kein “physical software media shipment” dann erhält man als Ergebnis bzw. Lösung im SR einen Link auf die Oracle Software Delivery Cloud mit einem eigenen Token. Über diesen kann man die Software dann herunterladen. Bei komplexeren Produkten, wie z.B. Enterprise Manager Grid Control, für die mehrere Downloads erforderlich sind (z.B. Grid Control, WebLogic Server, 32bit jdk for 64bit Java, Grid Control Agent), kann man diese in einem gemeinsamen SR anfordern und kann sie dann auch unter einem Link herunter laden.

Wichtig: Der angeforderte Downloadlink ist nur eine begrenzte Zeit (7 Tage) verfügbar!

Danach bekommt man folgende Meldung:
error

2012-10-22

ADF Mobile Extension für JDeveloper 11.1.2.3

Oracle hat heute ADF Mobile veröffentlicht. ADF Mobile steht für Entwickler als Extension für den JDeveloper in der Version 11.1.2.3 zur Verfügung und kann über die Update-Funktion heruntergeladen werden. Der Download hat eine Größe von etwa 157 MB.

Im Gegensatz zu den bisherigen Möglichkeiten des Application Development Frameworks, mit denen lediglich eine optimierte Darstellung von ADF-Anwendungen in mobilen Browsern zur Verfügung gestellt werden konnte, ist es nun möglich mit Hilfe von ADF Mobile native Anwendungen für Geräte auf Basis von Android und iOS zu erstellen.

Kurz zusammengefasst hat Oracles ADF Mobile die folgenden Eigenschaften:

  • Es werden unterschiedliche Plattformen und Gerätetypen unterstützt: Android / iOS & Smartphone / Tablet. Dabei hat ADF Mobile den Vorteil, dass die Anwendung nur einmal implementiert werden muss. Das Deployment für die unterschiedlichen Geräte übernimmt die neue Extension.
  • Dem Programmierer kann sich zwischen verschiedenen Möglichkeiten entscheiden, das UI zu implementieren:
    • eine serverbasierte Darstellung über JSF
    • ein beliebiges HTML5-Framework wie JQuerry
    • Standard-Komponenten und eigene HTML5-Komponenten
  • Die Anwendungen haben Zugriff auf die Hardware der Geräte. So ist es möglich, dass eine ADF-Mobile Applikation die Kamera, GPS-Sensoren u.ä. nutzt.
  • In jeder ADF Mobile Anwendung wird eine eigene Java VM eingebettet. Dadurch kann die gesamte Anwendungslogik in der Applikation sogar unter iOS implementiert werden.
  • Durch die Verwendung von Java steht über JDBC auch eine problemlose Anbindung an Datenbanken zur Verfügung. ADF Mobile unterstützt hierbei auch SQLite und Verschlüsselung.
  • Jegliche Kommunikation und Datenspeicher können verschlüsselt werden.

Wer sich bereits einen ersten Eindruck verschaffen möchte, für den hat Shay Schmeltzer schon einen kurzen Beitrag in seinem Blog veröffentlicht: Developing with Oracle ADF Mobile and ADF Business Components Backend.

Viel Spaß beim Ausprobieren und Programmieren!!!

2012-10-19

Vorträge der Oracle OpenWorld 2012 online

Für alle die nicht live dabei sein konnten, stehen nun die Vorträge OOW 2012 online bereit.

Hier geht's zu den Vorträgen...

Viel Spaß beim stöbern, es bestimmt für jeden etwas Interessantes dabei.

2012-10-15

Business Intelligence - die Basis für gute Entscheidungen

Unter dem oben genannten Titel findet am 25. Oktober eine halbtätige Informationsveranstaltung bei TEAM statt.

Neben einer Live-Demo der Oracle BI Suite in der Version 11g und vielen Informationen rund um das Thema Business Intelligence gibt es einen Vortrag über echte Erfahrungen in einem BI Projekt:
- Was verspricht sich der Kunde von einer BI Lösung?
- Wie wird ein BI Projekt angegangen?
- Wie wird der Kunde mit ins Projekt eingebunden?
- Wie kann eine technische Realisierung aussehen?
- Was ist das Ergebnis und wie profitiert der Kunde davon?

Alles weitere ist dem folgenden Link zu entnehmen: http://www.team-pb.de/index.php/de/veranstaltungen/item/root/team-bi-veranstaltung-25-10-2012

Das TEAM BI-Team würde sich über Ihren Besuch freuen, die Teilnahme ist, nach vorheriger Anmeldung, kostenlos!

2012-09-25

ADF Essentials Release

Heute wurde von Oracle die ADF Essentials Edition veröffentlicht. Neben einer neuen Version des JDevelopers R2 (11.1.2.3) ist es nun möglich neben der kostenfreien Entwicklung von ADF auch ein Deployment auf einem Glassfish 3.1 oder WebSphere 7 Open Source Server ohne zusätzliche Web Logic Server Lizenz durchzuführen.
Die Edition beinhaltet zum einen die Basiskomponenten zur Modellentwicklung (ADF Business Components, ADF Data Controls für ADF BC), zum anderen können nun alle die Vorzüge der ADF UI Komponenten nutzen.
Obwohl in der Essentials Version von ADF Komponenten wie ADF Security, Web Service Data Control oder Oracle BC Service Interfaces nicht enthalten sind, kann man in der kostenfreien Edition Sicherheit und Webangebot über die offenen Komponenten der Java EE (Java EE Security, Java Bean Data Control) bereitstellen.
Eine vollständige Liste aller Features und der Download der ADF Essentials  kann unter folgendem Link eingesehen werden.
http://www.oracle.com/technetwork/developer-tools/adf/overview/adfessentials-1719844.html
In dem Sinne freuen wir uns auf einen großen Ansturm auf das Application Development Framework, welcher die weiteren Entwicklungen deutlich beschleunigen sollte!

2012-09-17

Oracle Forms fits4all

Wer liebt sie nicht? Die hochauflösende, brillante Darstellung, die einem die längst gängigen HD-Monitore bieten? Doch wer eine Oracle Forms-Anwendung betreibt, hat leider nicht viel von den höheren Auflösungen. Wird das Forms-Fenster vergrößert, sieht der Anwender meist grau - die Farbe des Hintergrundes.

Oracle Forms-Applikationen werden vom Entwickler für eine feste Auflösung optimiert erstellt und erlauben keine Anpassungen des Anwenders, an die Auflösung des eigenen Bildschirms.

Diese Maxime zu brechen ist TEAM angetreten und hat den FormsResizer entwickelt.

Hören Sie mehr dazu auf der diesjährigen DOAG Konferenz in Nürnberg: http://www.doag.org/konferenz/vortrag_details.php?merken=0&id=447570

Die Vortragsunterlagen finden Sie nach der Veranstaltung selbstverständlich auf den Seiten der DOAG und natürlich auch hier im Block.

2012-09-14

Lizenzprobleme bei Oracle Datenbankserver mit Virtualisierung/Partitionierung

Das Lizenzmanagement für Oracle Produkte, insbesondere Datenbank, führt immer wieder zu reichlich Diskussionen. Das liegt vor allem daran, dass Oracle für die Enterprise Edition und die Standard Edition unterschiedliche Lizenzmodelle verwendet, wenn es um die Lizensierung nach CPU geht:

  • In der Enterprise Edition bedeutet CPU ein Core, der mit einem architekturabhängigen Faktor belegt wird.
  • In der Standard Edition bedeutet CPU ein CPU-Sockel, unabhängig von Anzahl Cores und auch der CPU-Architektur.

Das alleine kann schon zu enormen Kostenunterschieden führen. Besonders hitzig werden Diskussionen, wenn das Thema Virtualisierung, bei Oracle als Server/Hardware Partitioning bezeichnet, ins Spiel kommt. Oracle unterscheidet hier zwei bzw. drei Partitionierungsmethoden:

  • weiche Partitionierung (Soft Partitioning)
  • harte Partitionierung (Hard Partitioning)
  • Oracle Trusted Partitions for Oracle Engineered Systems

Die letzte Form ist lizenztechnisch mit Hard Partitioning gleich zu setzen, so dass nur Soft und Hard Partitioning zu unterscheiden sind. In dem Dokument “Oracle Partitioning Policy” sind die Auswirkungen der Partitionierungsmethoden auf die Lizenzen an sich unmissverständlich definiert.

So gilt:

Soft partitioning is not permitted as a means to determine or limit the number of software licenses required for any given server.

Die beliebte Virtualisierung über VMware gilt dabei als Soft Partitioning, Oracle VM in besonders definierten Konfigurationen aber als Hard Partitioning.Mit Hard Partitioning lassen sich also erheblich kosten sparen, wenn ein Server nicht komplett und ausschließlich für Oracle genutzt wird und damit nicht die gesamte Hardware mit allen Sockeln bzw. allen Cores lizensiert werden muss.
Die Sache hat aber einen ganz entscheidende Haken, wenn es darum geht Oracle Standard Edition bzw. Standard Edition One auf einem Serversystem mit Hard Partitioning zu lizensieren:

Die Hardware eines Servers für Oracle Standard Edition darf nur über vier Sockel und bei Oracle Standard Edition One nur über zwei Sockel verfügen!

Das bedeutet, hat ein Server mehr als vier Sockel, auch wenn nur vier oder weniger belegt sind, dann darf keine Standard Edition eingesetzt werden. Auch bei Einsatz von Hard Partitioning darf der Server nicht mehr als vier Sockel besitzen, dabei spielt es keine Rolle dass die Partition (virtuelle Maschine) ja auf vier Sockel begrenzt werden könnte. Hard Partitioning beeinflusst nur die tatsächlich zu erwerbenden Lizenzen.
Wird die RAC Option der Standard Edition genutzt, die dort ja kostenfrei enthalten ist, so darf die Hardware des gesamten Clusters ebenfalls nicht mehr als vier Sockel besitzen. Somit darf ein RAC für die Standard Edition aus maximal zwei Knoten mit jeweils zwei Sockeln oder aus maximal vier Knoten mit jeweils einem Sockel aufgebaut werden.

Für die Standard Edition One gilt bis auf die RAC Option vergleichbares nur mit der Begrenzung auf zwei Sockel.

Die Auswahl der richtigen Hardware spielt also eine ganz entscheidende Rolle, ob die Standard Edition eingesetzt werden kann oder nicht. Dieser Aspekt sollte also bereits bei der Beschaffung von Hardware und nicht erst bei der Lizenzbeschaffung betrachtet werden. Da gilt auch bei der Evaluation eines Downgrade von der Enterprise Edition auf die Standard Edition, bei der die Ausstattung der vorhandenen Hardware berücksichtigt werden muss.
(siehe auch den Gartner Report "Consider Oracle Standard Edition to Reduce Database Management System Costs")

2012-09-04

Gartner nimmt Oracle ADF unter die Lupe

In ihrem jüngsten Artikel hat eines führenden Marktforschungsunternehmen für den IT Bereich (Gartner) Oracles Entwicklungsframework ADF unter die Lupe genommen.

Gerade Unternehmen, die schon Oracle Technologien vertrauen, werden mit dem Framework von enormen Vorteilen in der Integration und der Vielfältigkeit profitieren.

Zitat: “ Development organizations deploying general purpose enterprise Java applications on Oracle's Fusion middleware suite will find ADF's deep integration with this suite to be a significant advantage. This is particularly true among applications that rely on elements of the stack that go beyond the core WebLogic server. Most notably, development efforts leveraging a combination of JDeveloper, ADF, and OFM will yield measurably higher developer productivity rates than alternative Java technologies.”

Den gesamten Artikel lesen Sie unter:

http://www.gartner.com/technology/reprints.do?id=1-1BU762S&ct=120827&st=sb

Stephan La Rocca

2012-08-24

PL/SQL Performancebremsen mit dem hierarchischen Profiler finden

Ein paar scheinbar unbedeutende Anpassungen in einer PL/SQL Prozedur, in einer weiteren nur ein neues, im „Trockentest“ rasend schnelles SQL Query hinzugefügt, noch eben ein kleiner Testdurchlauf auf dem Entwicklungssystem: Funktioniert, ist auch schnell genug. Also können die Erweiterungen in den Ladeprozess des Datawarehouse-Testsystems eingespielt werden. Was aber tun, wenn der veränderte Code auf dem Testsystem mit einem deutlich größeren Datenvolumen nun eben nicht mehr schnell genug ist und den vorher performanten Ladelauf ausbremst?

Anstatt jetzt sofort alle Code-Änderungen in Frage zu stellen, gibt es eine recht einfache Möglichkeit, zumindest das PL/SQL-Unterprogramm, dass für die Performanceverschlechterung verantwortlich ist, oder sogar die Zeile, in der ein langsamer SQL-Befehl steht, zu identifizieren: Der hierarchische Profiler im DBMS_HPROF-Package, das seit der Version 11g Release 1 in der Oracle-Datenbank enthalten ist! Dieser Profiler speichert das dynamische Ausführungsprofil von PL/SQL-Programmen und deren Unterprogrammen und lässt so die Analyse von z.B. Anzahl der Aufrufe und in einzelnen Unterprogrammen verbrauchter Zeit zu. Dieser Blogeintrag soll einen kleinen Einblick in die Möglichkeiten des Profilers geben.

Um das DBMS_HPROF-Package zu nutzen, müssen zunächst einige Voraussetzungen mit DBA-Rechten geschaffen werden:

1. Ein Oracle-Directory zum Ablegen einer Tracedatei durch DBMS_HPROF anlegen. Der im Beispiel verwendete Name profiler ist dabei beliebig gewählt.

   CREATE OR REPLACE DIRECTORY profiler
      AS '/home/oracle/profiler';

2. Lese- und Schreibrechte auf dem Verzeichnis vergeben, im Beispiel an den Benutzer dwh_target.

   GRANT READ, WRITE ON DIRECTORY profiler TO dwh_target;

3. Zu guter Letzt muss noch das Privileg zum Ausführen des DBMS_HPROF-Package vergeben werden.

   GRANT EXECUTE ON DBMS_HPROF TO dwh_target;

Das Profiling wird, z.B. in einem anonymen PL/SQL-Block, mit DBMS_HPROF.START_PROFILING (unter Angabe von Ziel-Directory und Ziel-Datei) gestartet und mit DBMS_HPROF.STOP_PROFILING wieder angehalten. Im Beispiel wird die Prozedur fehlerpruefung aus dem Package dq_check_pkg aufgerufen. Diese Prozedur ruft, wie später zu sehen sein wird, weitere Unterprogramme auf.

   BEGIN
      -- Profiling starten unter Angabe von Ziel-Directory und -Datei
      DBMS_HPROF.START_PROFILING('PROFILER', 'profiler.log');
  
      -- Aufruf der zu untersuchenden PL/SQL-Unterprogrammstruktur    
      dq_check_pkg.fehlerpruefung;
  
      -- Profiling stoppen
      DBMS_HPROF.STOP_PROFILING;
   END;

Die dabei entstandene Datei kann man sich mit einem Texteditor anschauen.
P#V PLSHPROF Internal Version 1.0
P#! PL/SQL Timer Started
P#C PLSQL."DWH_TARGET"."DQ_CHECK_PKG"::11."__pkg_init"
P#X 5
P#R
P#C PLSQL."DWH_TARGET"."DQ_CHECK_PKG"::11."FEHLERPRUEFUNG"#980980e97e42f8ec #2130
P#X 26
P#C SQL."DWH_TARGET"."DQ_CHECK_PKG"::11."__static_sql_exec_line2147" #2147
P#X 89
P#R
P#X 14
P#C SQL."DWH_TARGET"."DQ_CHECK_PKG"::11."__static_sql_exec_line2153" #2153
P#X 31496559
P#R
P#X 22
P#C SQL."DWH_TARGET"."DQ_CHECK_PKG"::11."__static_sql_exec_line2157" #2157
P#X 9645
P#R
P#X 6
P#C PLSQL."DWH_TARGET"."DQ_CHECK_PKG"::11."FEHLERPRUEFUNG.C_SENDUNGEN"#980980e97e42f8ec #2140
P#X 22
P#C SQL."DWH_TARGET"."DQ_CHECK_PKG"::11."__static_sql_exec_line2141" #2141
P#X 937
P#R
P#X 2
.
.
.
P#R
P#C PLSQL."SYS"."DBMS_HPROF"::11."STOP_PROFILING"#980980e97e42f8ec #59
P#R
P#! PL/SQL Timer Stopped

Das Zeilenprefix beschreibt dabei den Inhalt der jeweiligen Zeile:
P#V: Startzeile mit Versionsinformation
P#C: Unterprogrammaufruf
P#R: Rückkehr / Rückgabe vom Unterprogramm
P#X: Zwischen vorherigem und folgendem Ereignis verstrichene Zeit (Mikrosekunden)
P#!: Kommentarzeile

Eine Aufrufzeile ist wie folgt aufgebaut:

zeile

Die Analyse der Ausführung mag für kleine Programmstrukturen noch anhand dieser Tracedatei möglich sein, je größer die Datei jedoch wird, desto schwieriger wird es auch, grundsätzliche Informationen auf einen Blick zu erkennen. In einem solchen Fall hilft wieder DBMS_HPROF weiter, denn das Package hält eine weitere nützliche Funktion bereit: DBMS_HPROF.ANALYZE. Mit dieser lassen sich die Ergebnisse aus der Tracedatei aufbereitet in Datenbanktabellen abspeichern.

Bevor die Analyse beginnen kann, muss noch die entsprechende Tabellenstruktur angelegt werden. Ein Script, das diese Aufgabe übernimmt, liegt unterhalb des Datenbank-Home-Verzeichnisses und kann z.B. mit SQL*Plus aufgerufen werden:

   >sqlplus user/passwort@connect_id @$ORACLE_HOME/rdbms/admin/dbmshptab.sql

Dann wird der Inhalt der Tracedatei analysiert, z.B. mit folgenden Code:

   DECLARE
      runid NUMBER;
   BEGIN
      runid := DBMS_HPROF.ANALYZE(LOCATION => 'PROFILER',        
                                  FILENAME => 'profiler.log');
      DBMS_OUTPUT.PUT_LINE('runid = ' || runid);
   END;

Mit der RUNID, die zurückgegeben wird, lassen sich in den Tabellen die zum jeweiligen Analysedurchlauf gehörenden Datensätze identifizieren. Die Ergebnisse sind in den folgenden drei Tabellen zu finden:

DBMSHP_RUNS: Allgemeine Informationen über den Analysedurchlauf

runs

RUNID:             ID des Analysedurchlaufs
RUN_TIMESTAMP:     Zeitstempel des Analysedurchlaufs
TOTAL_ELAPSED_TIME:Dauer des Analysedurchlaufs in Mikrosekunden
RUN_COMMENT:       Kommentar, den man dem ANALYZE optional übergeben kann

DBMSHP_FUNCTION_INFO: Informationen über Unterprogramme

function

RUNID:                ID des Analysedurchlaufs
SYMBOLID:             Eindeutige ID für dieses Unterprogramm in diesem Analysedurchlauf
OWNER:                Besitzer des Moduls, in dem das Unterprogramm definiert ist
MODULE:               Modul, in dem das Unterprogramm definiert ist
TYPE:                 Typ des Moduls, in dem das Unterprogramm definiert ist
FUNCTION:             Name des Unterprogramms
LINE#:                Zeilennummer, an der das Unterprogramm im Modul definiert ist
HASH:                 MD5 Hash für die Signatur des Unterprogramms
NAMESPACE:            Namespace des Unterprogramms (z.B. SQL oder PLSQL)
SUBTREE_ELAPSED_TIME: Im Unterprogramm und dessen Unterprogrammen verbrauchte Zeit
FUNCTION_ELAPSED_TIME:Im Unterprogramm verbrauchte Zeit
CALLS:                Anzahl der Aufrufe dieses Unterprogramms

DBMSHP_PARENT_CHILD_INFO: Informationen über Eltern-Kind-Aufrufe

parentchild

RUNID:                ID des Analysedurchlaufs
PARENTSYMID:          Eltern-SYMBOLID (DBMSHP_FUNCTION_INFO)
CHILDSYMID:           Kind-SYMBOLID (DBMS_FUNCTION_INFO)
SUBTREE_ELAPSED_TIME: Im Unterprogramm und dessen Unterprogrammen beim Aufruf durch dieses Eltern-Element verbrauchte Zeit
FUNCTION_ELAPSED_TIME:Im Unterprogramm beim Aufruf durch dieses Eltern-Element verbrauchte Zeit
CALLS:                Anzahl der Aufrufe dieses Unterprogramms durch dieses Eltern-Element

Verknüpft man nun die Tabellen DBMSHP_PARENT_CHILD_INFO und DBMSHP_FUNCTION_INFO in einem Query miteinander, kann man über entsprechende Filterbedingungen einzelne Unterprogrammaufrufstrukturen gezielt analysieren und erhält Ergebnisse, mit denen imperformante Unterprogramme und sogar Zeilen mit imperformantem SQL-Code identifiziert werden können:

   SELECT pfi.module PARENT_MODULE,
          pfi.function PARENT_FUNCTION,
          pfi.namespace PARENT_NAMESPACE,
          cfi.module CHILD_MODULE,
          cfi.function CHILD_FUNCTION,
          cfi.namespace CHILD_NAMESPACE,
          pci.subtree_elapsed_time/1000000 SUBTREE_TIME_S,
          pci.function_elapsed_time/1000000 FUNCTION_TIME_S,
          pci.calls CALLS
     FROM dbmshp_parent_child_info pci,
          dbmshp_function_info pfi,
          dbmshp_function_info cfi
    WHERE pci.parentsymid = pfi.symbolid
      AND pci.childsymid = cfi.symbolid
      AND pci.runid = 1
    START WITH pfi.function = 'FEHLERPRUEFUNG'
          CONNECT BY PRIOR pci.childsymid = pci.parentsymid;

analyse


Beschäftigt man sich etwas mit den Möglichkeiten und Informationen, so lassen sich auch komplexere PL/SQL-Aufrufstrukturen relativ einfach analysieren.

2012-08-15

Fehler beim starten des integrierten Weblogic Servers von Jdeveloper unter Windows 7 (64 Bit))

Problem:

Unter Windows 7 (x64) kann trotz Administratorrechten kein integrierter WebLogic Server über den JDeveloper gestartet werden. Unter anderem kommt folgende Fehlermeldung in der Konsole zum Vorschein:

[Starting Server Instance IntegratedWebLogicServer]
#### Server Instance IntegratedWebLogicServer could not be started: Error starting Server Instance.

Lösung: Zum einen könnte der Fehler in der Verzeichnisstruktur zur DefaultDomain des WebLogic Servers zu finden sein. Diese Domäne befindet sich bei Standardeinstellungen unter:

%User_Home%\AppData\Roaming\JDeveloper\system11.1.2.1.38.60.81\DefaultDomain

Befinden sich Leerzeichen in diesem Pfad, muss über die Systemvariablen der genutzten Pfad dahingehend verändert werden, dass man die Leerzeichen durch den Platzhalter %20 ersetzt. Häufig trifft dies beim Übergang in den Ordner Program Files (x86) auf (beispielsweise für das Java_Home).

Eine andere Lösungsmöglichkeit, welche wir detailliert beschreiben wollen, ist das erstellen einer weiteren Domäne in einer anderen Verzeichnisstruktur.

Dies geschieht in 2 Schritten. Zum einen muss über den Weblogic Konfigurator eine weitere Domäne eingerichtet werden, zum anderen müssen die Applikationen im JDeveloper nun auf diese Domäne deployt werden.

Erstellung einer weiteren Domäne:

1. Zum starten des Konfigurationswizards die Datei $MiddleWare_Home$\wlserver_10.3\common\bin\config.cmd im JDeveloper Installationsverzeichnis öffnen.

2.Neue Weblogic Domäne erstellen
 
3. Domänenquelle angeben (Standard: Generierung einer automatisch konfiguierten Domäne. !Wichtig! Für ADF Entwicklung muss Oracle JRF installiert werden. JRF Webservices können je nach Bedarf auch mitkonfiguriert werden)


4. Speicherort angeben (Wichtig hierbei: nich den Windows_User Pfad nutzen und auf Leerzeichen verzichten)

5. User und Passworteingabe für den Default Administrator

6. Um Abfragen beim Deploy zu umgehen, sollte der Produktionsmodus gewählt werden
 

7. Administrationsservereinstellungen vornehmen (optionaler Schritt, falls mehrere WebLogic Server gleichzeitig laufen sollen)

8. Installation abschließen und den WebLogicserver über den gewählten Installationspfad durch startWebLogic.cmd starten.

9. Anmelden mit gewähltem Benutzernamen und Passwort

Erstellung eines Deployment Profils im JDeveloper

1. Erstellen eines Profils für eine Applikation

2. Deployment auf einen remote WebLogic Server

3. Erstellen einer IDE-Verbindung
 

4. Password und Nutzereingabe vom WebLogic Server

5. Eingabe der Web Logic Daten

6. Test der Verbindung

7. Optionen für die Art des Deployments (für den Testfall genügen die Standardeinstellungen)

8. Deploy der Applikation

Aufrufen der Applikation über:
 WebLogicHost:WebLogicPort/ApplikationsRoot/faces/NameDerStartseite.jsf


(Default für Applicationsroot: Applikationsname-ViewControllerProjektname-context-root)