APEX 5.1 - Architektur,
Installation & Betrieb
Niels de Bruijn
Ratingen, 18.01.2018
Facts & Figures
Technologie-orientiert
Branchen-unabhängig
Hauptsitz
Ratingen
260
Beschäftigte
Gründung
1994
Niederlassungen in
Frankfurt & Köln
Ausbildungs-
betrieb
Inhabergeführt
Oracle
Platinum
Partner
28 Mio. Euro
Umsatz
2
3
Über mich
§ Niels de Bruijn, Fachbereichsleiter APEX
§ Geboren in 1977, verheiratet, drei Töchter, Wohnort Ratingen
§ seit 12.2003 bei der MT AG in Ratingen
§ zuvor 2 Jahre als Berater bei Oracle Nederland B.V. angestellt
§ Beschäftigt sich seit 2004 mit APEX
§ Federführend beim Vertrieb/Marketing/Delivery von APEX Projekten
§ https://apex.mt-ag.com
§ Themenverantwortlicher für APEX bei der DOAG & Organisator von APEX Connect
§ Hält Vorträge u.A. auf der DOAG Konferenz, APEX World, DOAG APEX Connect & ODTUG
Kscope
§ Architektur
§ Installation
§ Ablauf bei einer HTTP Request/Response mit ORDS
§ Betrieb
4
Agenda
§ Architektur
§ Installation
§ Ablauf bei einer HTTP Request/Response mit ORDS
§ Betrieb
5
Agenda
6
Architektur
Browser
Optional:
Apache (Linux)
oder
IIS (Windows)
Oracle REST Data
Services 17.4
auf
Tomcat, Weblogic
oder standalone
Oracle RDBMS
(ab 11.2.0.4.0 oder XE11gR2)
mit
APEX 5.1.x
JDBC Connection Pool
(UCP)
Linux / Windows
HTTPS AJP
Admin-Zugriff
Admin-Zugriff
EPG
7
§ Apache/IIS als Reverse Proxy empfehlenswert
§ SSO einfacher zu implementieren
§ Wartungsarbeiten Tomcat führen nicht zu 404
§ Features wie Caching/Kompression/Limits sind erprobt
§ Auslagerung auf einem anderen Server möglich
§ IIS/Apache unten? Die APEX-Umgebung ist weiterhin für den Admin erreichbar
§ ORDS kann mehrere Datenbanken bedienen (z.B. Entw/Test/Patch)
§ java -jar ords.war setup --database pdb2apex
§ java -jar ords.war map-url --type base-path /pdb2apex pdb2apex
§ Die Session & Last einer APEX App liegt in der Datenbank (ORDS dient als Proxy)
§ Embedded PL/SQL Gateway (EPG) kann parallel mit ORDS betrieben werden
§ Unterstützung für RAC/Data Guard gegeben
§ Connection Pool proaktiv mit verbleibenden Knoten neu aufbauen
https://docs.oracle.com/cd/E56351_01/doc.30/e87809/configuring-REST-data-
services.htm#AELIG-GUID-18B9ED9F-23EE-4608-AD9F-7CCC05187CE4
Architektur - Anmerkungen
§ Architektur
§ Installation
§ Ablauf bei einer HTTP Request/Response mit ORDS
§ Betrieb
8
Agenda
9
Installation für den Betrieb mit ORDS (zusammengefasst)
Dokumentation:
https://docs.oracle.com/database/apex-5.1 & https://docs.oracle.com/database/ords-17
Voraussetzungen APEX:
§ Oracle 11.2.0.4.0 oder höher (inkl. XE)
§ MEMORY_TARGET zumindest 300MB
§ Browser: Edge, Safari, Firefox, Chrome oder IE (ab 11)
§ Speicherplatz:
§ 630 MB für die Software im Filesystem
§ APEX Tablespace: 220 MB
§ SYSTEM Tablespace: 100 MB
§ Zusätzliche APEX Sprachen: 60 MB / Sprache
§ Es wird empfohlen APEX in einer PDB zu installieren und nicht in der CDB
10
Installation für den Betrieb mit ORDS (zusammengefasst)
§ APEX als sys in der Datenbank installieren:
@apexins.sql apex apex_files temp /i/ (Tablespaces zuvor anlegen)
§ Passwort für den APEX Administrator setzen (Workspace INTERNAL):
@apxchpwd.sql
§ Schema für ORDS freischalten:
ALTER USER APEX_PUBLIC_USER ACCOUNT UNLOCK;
ALTER USER APEX_PUBLIC_USER IDENTIFIED BY xxx;
Achtung: Umgang mit automatisch abgelaufenen Passwörtern klären! (PASSWORD_LIFE_TIME im DB Profil)
11
Installation für den Betrieb mit ORDS (zusammengefasst)
§ Schemata apex_listener und apex_rest_public_user anlegen:
@apex_rest_config.sql
Primär notwendig um Dateien zu laden, die durch den Entwickler in der Anwendung hinterlegt wurden
§ Inhalte vom Ordner images mit den APEX Abbildungen, CSS & JS Dateien in den Ordner
/<mytomcat>/webapps/i kopieren
§ ORDS konfigurieren: java –jar ords.war install advanced
§ ORDS auf Tomcat deployen: ords.war in den Ordner /<mytomcat>/webapps kopieren
§ /<my_ords_config>/defaults.xml anpassen, Tomcat neu starten und fertig!
<entry key="jdbc.InitialLimit">30</entry>
<entry key="jdbc.MinLimit">30</entry>
<entry key="jdbc.MaxLimit">60</entry>
12
Installation - Anmerkungen
§ Das Produkt samt Anwendungsdefinitionen liegt im Schema apex_050100
§ 5.1.x Patchsets werden in diesem Schema installiert (Backup!)
§ Hauptreleases wie 5.2 (oder 18.1?) werden in einem neuen Schema installiert und bei der Installation
werden die bestehenden Anwendungen migriert
§ Die Daten liegen im separaten Schema (oder außerhalb der Datenbank)
§ Der Zugriff erfolgt über das Schema apex_public_user (ORDS) oder anonymous (EPG)
§ Verhältnis APEX Instanz : Workspaces : Schemata = 1 : N : N (immer „Cloud Ready“)
apex_public_user (ORDS)
oder
anonymous (EPG) flows_files
apex_050100 mein_schema
(daten)
optional:
mein_schema
(APEX views)
Client
13
Installation - Anmerkungen
APEX: was ist eigentlich drin? (Stand 01.2018)
§ ~ 2000 APEX Seiten
§ ~ 2.950 Datenbankobjekte
§ ~ 450 Tabellen
§ 4 Jobs
§ APEX + 35 Packaged Apps
§ Auswertung über 150 Repository Views (z.B. apex_applications)
§ APEX kann in der Produktion auch ohne Oberfläche installiert werden
§ APEX selbst verursacht keine nennenswerte Auslastung
§ Wenn es ein Problem mit der Auslastung gibt
§ dann liegt dies meist am Datenmodell oder am PL/SQL Code (also am Entwickler :)
§ Aktuell ist eine APEX Installation pro Datenbankinstanz möglich
§ Installation immer in der PDB vornehmen!
§ Session_User ist im Standard apex_public_user, aber falls erwunscht kann es auch den
Workspace Schema werden:
14
Installation - Anmerkungen
§ Architektur
§ Installation
§ Ablauf bei einer HTTP Request/Response mit ORDS
§ Betrieb
15
Agenda
16
Ablauf bei einer HTTP Request/Response mit ORDS
1. Im Browser erfolgt eine Abfrage: https://apex.mt-ag.com/ords/f?p=100:1
> ords : bestimmt die Datenbank
> f : öffentliche PL/SQL Prozedur im Schema apex_050100
> p : PL/SQL Input Parameter
> 100:1 : varchar2 String mit Anwendungs ID und Seiten ID
2. IIS/Apache leitet die Anfrage 1:1 weiter an ORDS
3. ORDS findet an der URL heraus an welcher Datenbank die Abfrage gehen soll
4. Eine bestehende Verbindung mit der Datenbank wird wieder verwendet (Schema apex_public_user)
> apex_public_user hat nur das CREATE SESSION Recht
5. Die öffentliche Prozedur apex_050100.f wird ausgeführt. Die Seite wird anhand von den Metadaten aufgebaut
und an den Browser mittels sys.htp.prn zurück gegeben
> Die Anwendungsdaten liegen im APEX Workspace Schema und werden unter dessen Berechtigung mittels dbms_sys_sql abgefragt
§ Architektur
§ Installation
§ Ablauf bei einer HTTP Request/Response mit ORDS
§ Betrieb
17
Agenda
APEX App ID
Was muss ein DBA zusätzlich zum Betrieb wissen wenn APEX installiert ist?
§ Workspaces administrieren (Anmeldung über Workspace internal)
§ Einstellungen im Workspace internal überprüfen
§ v$session auswerten:
18
Betrieb
APEX Seiten ID
APEX Benutzer
APEX Session ID
APEX Workspace ID
§ Schlecht laufende SQL Statements identifizieren
§ https://carlos-sierra.net/2014/09/04/how-to-identify-sql-performing-poorly-on-an-apex-
application
§ oder &p_trace=YES an der URL hängen (muss im INTERNAL Workspace erlaubt sein)
§ APEX Applikationen für SVN/Git per Skript exportieren:
19
Betrieb
§ Monitoring von Entwickler/Endanwender Aktivitäten:
select count (*)
, avg(elap)
, userid
from apex_activity_log
where time_stamp > (sysdate-1)
and flow_id = 9529 – APEX App ID
group by userid
20
Betrieb
@nielsdb
http://de.linkedin.com/in/nielsdebruijn
www.xing.com/profile/Niels_deBruijn
http://blog.mt-ag.com/apex

APEX 5.1 - Architektur, Installation & Betrieb

  • 1.
    APEX 5.1 -Architektur, Installation & Betrieb Niels de Bruijn Ratingen, 18.01.2018
  • 2.
    Facts & Figures Technologie-orientiert Branchen-unabhängig Hauptsitz Ratingen 260 Beschäftigte Gründung 1994 Niederlassungenin Frankfurt & Köln Ausbildungs- betrieb Inhabergeführt Oracle Platinum Partner 28 Mio. Euro Umsatz 2
  • 3.
    3 Über mich § Nielsde Bruijn, Fachbereichsleiter APEX § Geboren in 1977, verheiratet, drei Töchter, Wohnort Ratingen § seit 12.2003 bei der MT AG in Ratingen § zuvor 2 Jahre als Berater bei Oracle Nederland B.V. angestellt § Beschäftigt sich seit 2004 mit APEX § Federführend beim Vertrieb/Marketing/Delivery von APEX Projekten § https://apex.mt-ag.com § Themenverantwortlicher für APEX bei der DOAG & Organisator von APEX Connect § Hält Vorträge u.A. auf der DOAG Konferenz, APEX World, DOAG APEX Connect & ODTUG Kscope
  • 4.
    § Architektur § Installation §Ablauf bei einer HTTP Request/Response mit ORDS § Betrieb 4 Agenda
  • 5.
    § Architektur § Installation §Ablauf bei einer HTTP Request/Response mit ORDS § Betrieb 5 Agenda
  • 6.
    6 Architektur Browser Optional: Apache (Linux) oder IIS (Windows) OracleREST Data Services 17.4 auf Tomcat, Weblogic oder standalone Oracle RDBMS (ab 11.2.0.4.0 oder XE11gR2) mit APEX 5.1.x JDBC Connection Pool (UCP) Linux / Windows HTTPS AJP Admin-Zugriff Admin-Zugriff EPG
  • 7.
    7 § Apache/IIS alsReverse Proxy empfehlenswert § SSO einfacher zu implementieren § Wartungsarbeiten Tomcat führen nicht zu 404 § Features wie Caching/Kompression/Limits sind erprobt § Auslagerung auf einem anderen Server möglich § IIS/Apache unten? Die APEX-Umgebung ist weiterhin für den Admin erreichbar § ORDS kann mehrere Datenbanken bedienen (z.B. Entw/Test/Patch) § java -jar ords.war setup --database pdb2apex § java -jar ords.war map-url --type base-path /pdb2apex pdb2apex § Die Session & Last einer APEX App liegt in der Datenbank (ORDS dient als Proxy) § Embedded PL/SQL Gateway (EPG) kann parallel mit ORDS betrieben werden § Unterstützung für RAC/Data Guard gegeben § Connection Pool proaktiv mit verbleibenden Knoten neu aufbauen https://docs.oracle.com/cd/E56351_01/doc.30/e87809/configuring-REST-data- services.htm#AELIG-GUID-18B9ED9F-23EE-4608-AD9F-7CCC05187CE4 Architektur - Anmerkungen
  • 8.
    § Architektur § Installation §Ablauf bei einer HTTP Request/Response mit ORDS § Betrieb 8 Agenda
  • 9.
    9 Installation für denBetrieb mit ORDS (zusammengefasst) Dokumentation: https://docs.oracle.com/database/apex-5.1 & https://docs.oracle.com/database/ords-17 Voraussetzungen APEX: § Oracle 11.2.0.4.0 oder höher (inkl. XE) § MEMORY_TARGET zumindest 300MB § Browser: Edge, Safari, Firefox, Chrome oder IE (ab 11) § Speicherplatz: § 630 MB für die Software im Filesystem § APEX Tablespace: 220 MB § SYSTEM Tablespace: 100 MB § Zusätzliche APEX Sprachen: 60 MB / Sprache § Es wird empfohlen APEX in einer PDB zu installieren und nicht in der CDB
  • 10.
    10 Installation für denBetrieb mit ORDS (zusammengefasst) § APEX als sys in der Datenbank installieren: @apexins.sql apex apex_files temp /i/ (Tablespaces zuvor anlegen) § Passwort für den APEX Administrator setzen (Workspace INTERNAL): @apxchpwd.sql § Schema für ORDS freischalten: ALTER USER APEX_PUBLIC_USER ACCOUNT UNLOCK; ALTER USER APEX_PUBLIC_USER IDENTIFIED BY xxx; Achtung: Umgang mit automatisch abgelaufenen Passwörtern klären! (PASSWORD_LIFE_TIME im DB Profil)
  • 11.
    11 Installation für denBetrieb mit ORDS (zusammengefasst) § Schemata apex_listener und apex_rest_public_user anlegen: @apex_rest_config.sql Primär notwendig um Dateien zu laden, die durch den Entwickler in der Anwendung hinterlegt wurden § Inhalte vom Ordner images mit den APEX Abbildungen, CSS & JS Dateien in den Ordner /<mytomcat>/webapps/i kopieren § ORDS konfigurieren: java –jar ords.war install advanced § ORDS auf Tomcat deployen: ords.war in den Ordner /<mytomcat>/webapps kopieren § /<my_ords_config>/defaults.xml anpassen, Tomcat neu starten und fertig! <entry key="jdbc.InitialLimit">30</entry> <entry key="jdbc.MinLimit">30</entry> <entry key="jdbc.MaxLimit">60</entry>
  • 12.
    12 Installation - Anmerkungen §Das Produkt samt Anwendungsdefinitionen liegt im Schema apex_050100 § 5.1.x Patchsets werden in diesem Schema installiert (Backup!) § Hauptreleases wie 5.2 (oder 18.1?) werden in einem neuen Schema installiert und bei der Installation werden die bestehenden Anwendungen migriert § Die Daten liegen im separaten Schema (oder außerhalb der Datenbank) § Der Zugriff erfolgt über das Schema apex_public_user (ORDS) oder anonymous (EPG) § Verhältnis APEX Instanz : Workspaces : Schemata = 1 : N : N (immer „Cloud Ready“) apex_public_user (ORDS) oder anonymous (EPG) flows_files apex_050100 mein_schema (daten) optional: mein_schema (APEX views) Client
  • 13.
    13 Installation - Anmerkungen APEX:was ist eigentlich drin? (Stand 01.2018) § ~ 2000 APEX Seiten § ~ 2.950 Datenbankobjekte § ~ 450 Tabellen § 4 Jobs § APEX + 35 Packaged Apps § Auswertung über 150 Repository Views (z.B. apex_applications)
  • 14.
    § APEX kannin der Produktion auch ohne Oberfläche installiert werden § APEX selbst verursacht keine nennenswerte Auslastung § Wenn es ein Problem mit der Auslastung gibt § dann liegt dies meist am Datenmodell oder am PL/SQL Code (also am Entwickler :) § Aktuell ist eine APEX Installation pro Datenbankinstanz möglich § Installation immer in der PDB vornehmen! § Session_User ist im Standard apex_public_user, aber falls erwunscht kann es auch den Workspace Schema werden: 14 Installation - Anmerkungen
  • 15.
    § Architektur § Installation §Ablauf bei einer HTTP Request/Response mit ORDS § Betrieb 15 Agenda
  • 16.
    16 Ablauf bei einerHTTP Request/Response mit ORDS 1. Im Browser erfolgt eine Abfrage: https://apex.mt-ag.com/ords/f?p=100:1 > ords : bestimmt die Datenbank > f : öffentliche PL/SQL Prozedur im Schema apex_050100 > p : PL/SQL Input Parameter > 100:1 : varchar2 String mit Anwendungs ID und Seiten ID 2. IIS/Apache leitet die Anfrage 1:1 weiter an ORDS 3. ORDS findet an der URL heraus an welcher Datenbank die Abfrage gehen soll 4. Eine bestehende Verbindung mit der Datenbank wird wieder verwendet (Schema apex_public_user) > apex_public_user hat nur das CREATE SESSION Recht 5. Die öffentliche Prozedur apex_050100.f wird ausgeführt. Die Seite wird anhand von den Metadaten aufgebaut und an den Browser mittels sys.htp.prn zurück gegeben > Die Anwendungsdaten liegen im APEX Workspace Schema und werden unter dessen Berechtigung mittels dbms_sys_sql abgefragt
  • 17.
    § Architektur § Installation §Ablauf bei einer HTTP Request/Response mit ORDS § Betrieb 17 Agenda
  • 18.
    APEX App ID Wasmuss ein DBA zusätzlich zum Betrieb wissen wenn APEX installiert ist? § Workspaces administrieren (Anmeldung über Workspace internal) § Einstellungen im Workspace internal überprüfen § v$session auswerten: 18 Betrieb APEX Seiten ID APEX Benutzer APEX Session ID APEX Workspace ID
  • 19.
    § Schlecht laufendeSQL Statements identifizieren § https://carlos-sierra.net/2014/09/04/how-to-identify-sql-performing-poorly-on-an-apex- application § oder &p_trace=YES an der URL hängen (muss im INTERNAL Workspace erlaubt sein) § APEX Applikationen für SVN/Git per Skript exportieren: 19 Betrieb
  • 20.
    § Monitoring vonEntwickler/Endanwender Aktivitäten: select count (*) , avg(elap) , userid from apex_activity_log where time_stamp > (sysdate-1) and flow_id = 9529 – APEX App ID group by userid 20 Betrieb
  • 21.