Neu mit APEX ist das Konzept des
Workspace. Ein Workspace ist ein Bereich in einer Application Express Installation, die
mehreren Usern erlaubt, ihre Applikation und Daten in einem gemeinsamen privaten Bereich - dem Workspace - zusammenzufassen. So
können sich mehrere APEX User einen Workspace teilen oder auch einem dedizierten Workspace angehören.
Datenbankseitig ist der Workspace ein logischer Bereich, der aus Tabellen, Views, Stored Procedures usw. besteht. Ein einzelnes
Datenbankschema kann dabei mit einem oder mehreren Workspaces verknüpft sein. Die Administration erfolgt hauptsächlich über
die APEX Seite für administrative Services (siehe Screenshot oben) und nicht über SQL*PLUS oder
dem Werkzeug Enterprise Manager.
Zusätzlich zum Workspace stehen unterschiedliche APEX
User Rollen zur Verfügung:
- Instance Administrator ist der Superuser.
- Workspace Administrator hat weniger Rechte als der Instance Administrator. Workspace Administratoren können allerdings einige
administrative Aufgaben erledigen wie Workspaces verwalten und User Accounts managen.
- Developer erzeugt Applikationen und besitzen oder teilen einen Workspace.
- End User kann nur auf Applikationen zugreifen.
Im ersten Schritt wird ein Workspace erzeugt, der einem existierenden Schema zugeordnet ist. Da aus Sicherheitsgründen nicht automatisch alle Schemas - speziell die Oracle Default Schemas - freigeschaltet sind,
schalten wir in unserem Beispiel das Schema SCOTT frei. Der Workspace kann auch mit einem neuen nicht existierenden Schema
verbunden werden. In diesem Fall wird automatisch ein neues Datenbankschema und ein neuer Tablespace angelegt.
Nun kann mit einem einfachen Workflow in APEX ein Workspace angelegt werden.
Ebenso einfach lassen sich im Bereich "Manage Workspaces" APEX User als Developer oder Workspace Administrator anlegen.
Für eine größere Ansicht auf das Bild klicken.
Die Workflows und Wizards in APEX sind intuitiv zu nutzen. Tauchen trotzdem Fragen auf, sollte man einen Blick
ins APEX Administrator Handbuch (siehe Informationen und Links) werfen.
Häufig stellt sich die Frage nach den Usern und den zugehörigen Rechten in APEX.
APEX verwendet ein ganz bestimmtes
Sicherheitsmodell. Wenn eine APEX-Seite aufgerufen wird, so wird die zugrundeliegende
Datenbanksitzung aufbaut und stets mit einem einzigen bestimmten, niedrig privilegierten Datenbank-User aufgebaut.
Beim Embedded PL/SQL Gateway ist das der User ANONYMOUS, beim mod Pl/SQL typischerweise der APEX_PUBLIC_USER. Diese User haben
außer einem CREATE SESSION-Privileg keinerlei Rechte. Dennoch können Tabellen des APEX Workspace selektiert und die
PL/SQL-Funktionen, -Prozeduren und Packages im Schema ausgeführt werden.
Das liegt daran, dass die SQL-Kommandos und PL/SQL-Aufrufe nicht direkt ausgeführt werden,
sondern innerhalb der Application Express-Engine. Die APEX-Engine setzt dazu intern die Privilegien des entsprechenden Workspace Schemas,
damit immer mit den Privilegien des APEX Schemas gearbeitet werden kann.
Nun kann der Entwickler loslegen und sich mit dem entsprechenden Workspacenamen, Usernamen und Passwort in die Entwicklerumgebung
einloggen. Folgende URL ermöglicht dies:
Auch hier ist nur ein Web Browser nötig; keine zusätzliche Installation auf den Client Rechnern ist erforderlich.
Der Tipp geht an dieser Stelle nicht weiter auf die Möglichkeiten der Entwicklung mit APEX ein. Für Anfänger sei
allerdings der Hinweis auf einige Tutorials der
APEX Community zum Einstieg in APEX genannt - hiermit bekommt man recht schnell einen Eindruck von der Art und Weise, wie Anwendungen mit APEX gebaut werden.
Zusätzlich gibt es von der MT AG aus Ratingen Einsteigertutorials auf YouTube.
Darin lässt sich "live" verfolgen, wie einfach sich Anwendungen mit APEX erstellen lassen.
- Application Builder
- Bestandteile einer Seite
- Interactive Reports
- Grafische Auswertungen
- Downloadfunktionen
- Dynamic Actions
- Tabellarische Formulare
- Websheets
Administrative Aufgaben: Monitoren, Tunen und Ressourcen verwalten
Nach der Einführung in das Workspace Konzept ist es sicherlich gut vorstellbar, dass Application Express als Hosting-Umgebung
eingesetzt werden kann. Unterschiedliche Entwickler können dabei unabhängig in verschiedenen Workspaces arbeiten, und den Eindruck gewinnen,
die Datenbank alleine vollständig auslasten zu können. Wenn der Server allerdings unter Last steht, sollten bestimmte
Anwendungen bevorzugt werden. Zu diesem Zweck eignet sich der
Database Resource Manager, der schon in einem anderen
DBA Tipp behandelt worden ist. Die einzige Frage, die man sich im Zusammenhang mit APEX stellen muss, ist, wie die Ressource Consumer
Gruppen definiert werden können. Eine Abfrage auf V$SESSION bestätigt, dass APEX nur mit einem Datenbank User
arbeitet, je nach Architektur mit dem ANONYMOUS oder APEX_PUBLIC_USER User.
Allerdings nutzt APEX das Package DBMS_APPLICATION_INFO und listet daher die angemeldeten APEX-Nutzernamen in der
Spalte CLIENT_INFO und beim aktiven Page Rendering sogar die Application und die Page ID in den Spalten MODUL und ACTION.
Mit dieser Information kann eine Ressource Consumer Gruppe in Abhängigkeit von einer Applikation oder Seite (auch Page) definiert werden und
somit ein Ressource Plan wie gewohnt erstellt werden. Folgende Tipps geben Anleitungen dazu, wie man mit dem Database Resource Manager arbeiten kann:
Der Oracle Enterprise Manager bietet, wie oben schon erwähnt, keine spezielle Unterstützung für APEX; nach einer
Installation werden APEX-Anwendungen also nicht überwacht. Kennt man das APEX-Repository, lässt sich allerdings eine zusätzliche Überwachung
über
benutzerdefinerte Metriken (auch user defined metrics) im Enterprise Manager einrichten. Dabei wird die View APEX_ACTIVITY_LOG in der SQL-Abfrage
verwendet, da diese jeden Seitenabruf und die verbrauchte (elapsed) Zeit aufzeichnet.
Folgende Abfrage zeigt die Verwendung:
Formuliert man diese Abfrage als benutzerdefinierte Metrik so um, dass eine bestimmte Applikationen (hier: 103) über ein
bestimmtes abgelaufenes Zeitintervall (hier: 5 Minuten elapsed time) überprüft wird, sieht die Metrik im Enterprise Manager zum Beispiel folgendermassen aus:
Für eine größere Ansicht auf das Bild klicken.
Eine genaue Anleitung zum Definieren einer benutzerdefinierten Metrik bzw. weitere Informationen zum APEX Repository findet sich in:
Wie in der Einleitung schon erwähnt, handelt es sich bei einer APEX-Applikation hauptsächlich um SQL- und PL/SQL- Abfragen.
Ein Tuning ist also mit den Standard-Werkzeugen wie EXPLAN PLAN, DBMS_XPLAN, SQL Tracing oder SQL Monitoring im Enterprise Manager
möglich. APEX liefert darüberhinaus auch Page spezifisches Tuning an. So können zum Beispiel im Footer jeder Region zusätzliche
Informationen zum Zeitverbrauch und den abgerufenen Zeilen mit Parametern wie #TIMING#, #ROWS_FETCHED#, #TOTAL_ROWS# ausgegeben werden.
Folgender Screenshot zeigt die Einstellungen im Region Footer.
Für eine größere Ansicht auf das Bild klicken.
Page-Debugging ist ebenfalls recht einfach möglich. Voraussetzung ist das Einschalten des Debuggings für die Applikation.
Auf der Hauptseite der Applikation klickt man dazu auf den Button "Edit Application Properties" und stellt die Eigenschaft
"Debugging" auf "Yes". Danach kann mit dem Link "Debug" in der Developer Toolbar unterhalb der Anwendungsseite das Debugging
ausgeführt werden. Folgender Screenshot zeigt die Developer Toolbar mit den entsprechenden Links.
Ein interaktiver Bericht über den Link "View Debug" zeigt die einzelnen Ausführungsschritte und die verbrauchte Zeit, so dass Langläufer leicht identifiziert werden können.
Reicht dies immer noch nicht aus, kann ein SQL Trace eingeschaltet werden. Dazu fügt man der URL der Anwendungsseite
einfach den Ausdruck &p_trace=YES hinzu, wie das folgende Beispiel zeigt.
Das Kommando, das APEX im Hintergrund absetzt ist, geht über ein Setzen von SQL_TRACE=YES hinaus und lautet:
Es wird eine Trace-Datei erzeugt, die sich, wie gewohnt, im Trace Verzeichnis der Datenbank befindet und mit tkprof
in lesbare Form gebracht werden kann. Möchten Sie mehr zu dem Thema Tuning erfahren, finden Sie einige Anregungen und Tipps in:
Informationen und Links
Folgende Links bieten einen guten Überblick und Einstiegspunkt für das Arbeiten mit APEX:
Zurück zur Übersicht
Zurück zur Community-Seite