Monday, July 8, 2019

The change of Static File support in APEX

Over the years the static file handling has been greatly enhanced. Using APEX old APEX versions before 5 you had to handle static files outside of APEX. Many projects handled their static application files together with the APEX internal files in the "i" folder. It was the easiest way because APEX had no integrated file support for custom JavaScript, CSS or Image files. Another problem was the caching and compression. In earlier days the database and the OHS (Oracle HTTP Server) where used together with mod_cache and mod_deflate to support caching and compression.

Since APEX 5 and the introduction into the APEX Listener this technique changed. The APEX Listener which is now called ORDS (Oracle REST Data Service) has now the possibility to handle the static files inside the APEX Workspace or APEX Application in an easy way.
But everyone remembers the first installations of APEX 5 and the APEX Listener. Many times we got problems regarding misconfigurations of the file support and not everyone got the point why we had to configure RESTful Services for an APEX environment for file support.

APEX 5.0: There are issues with the configuration of the Static Files in your environment

Going further to the current version of APEX 19.1 and ORDS 19.1 we now have full support of caching (and cache invalidation) and easy handling of static files inside your Application. If you are still using APEX with static files on the file system here are some disadvantages compared to the files uploaded inside APEX.

  • files on the file system have to be deployed on a seperate way
    • files cannot be deployed without authorization on the file system
    • files can be deployed in the wrong folder
    • files can be deleted or forgotten when moving to a new APEX version
    • files have even to be deployed during development on the server
  • files are cached on client-side, even when they are changed on the server
  • files which are used or even not used are not so easy to identify
  • files are not installed by default when installing a new version of your APEX application
  • files are not exported and saved with your application
Of course some of these problems had been solved during the last years, but overall the best way to handle static files is, by using the integrated support in APEX.

In the next blog posts i will go deeper into that topic and explain how to configure the file settings and how to maintain these files with your favorite editor and APEX nitro.

Tuesday, December 20, 2016

ITTage 2016 - Tag 2 - 14.12.2016

Der zweite Tag startete um 9Uhr mit einer Keynote über Security in Verbindung mit der Cloud. Ein großer Teil des Vortrags bestand darin, klar zu machen, dass Sicherheitsprobleme beim Anschluss an die Cloud nicht unbedingt nur in der Gefahr, dass die Daten in der Cloud geklaut werden, sondern auch dass Angreifer aus der Cloud ins Firmennetz kommen können. Später wurden auch noch Optimierungen im Netzwerk angesprochen, aber insgesamt wirkte der Vortrag inhaltich wie etwas von allem.

Von 10-12 hatte ich dann meine beiden Vorträge. Im ersten Vortrag habe ich vorgestellt wie man dynamisch in größeren Datenmodellen effektiv und zur Laufzeit mittels Metadaten Daten in der Datenbank vergleichen kann. Die Daten werden dabei nicht einfach in einem Report dargestellt, sondern mit Kontextinformationen angereichert, so dass ein Endbenutzer in seiner Anwendung sehen kann wo Daten verändert wurden.
Im zweiten Vortrag gings dann um CI/CD mit Oracle Datenbanken. Mir war von anfang an klar, dass ein 45Minuten Slot kaum dafür ausreichen kann, da ich Schulungen zu dem Thema bei mehreren Firmen gegeben habe, wo man mindestens einen ganzen Workshoptag dafür braucht. Nichtsdestotrotz habe ich die Themen Skripting, Infrastruktur, Versionierung, Abhängigkeitsbehandlung, Prozesse & Jenkins einmal in kürze vorgestellt. Auch wenn hier und da ein paar Details nicht behandelt wurden, so konnten die Teilnehmer sich ein Bild davon machen, was man alles für eine Automatisierungsunterstützung in der Datenbankentwicklung machen kann.

Um 12Uhr gings dann mit dem Thema "Vom Monolithen zu Microservices" weiter. Eingestiegen ist der Vortrag mit einer Analyse eines vorhandenem Monolithen. Interessant war dabei ein Tools namens Structure101 mit dem man eine vorhandene Software analysieren kann und ermitteln, welche Klassen/Objekte vorhanden sind, wie diese verknüpft sind und ob es Code gibt der nicht benötigt wird. So wie es aussieht kann die Software aber nur C/C++ analysieren. Weiter wurde dann ein Framework namens Hysterix vorgestellt, welches zum Testen der Fehlertoleranz eingesetzt werden kann. Das Tool wurde von den Netflix Machern erstellt und ist auf GitHub verfügbar. Der Ansatz ist, dass man eine Anwendung aus Microservices testet und guckt wie diese mit dem Ausfall von Komponenten und Verzögerung bzw. Fehlinformationen umgehen kann. In einer Anwendung bestehend aus Microservices wird versucht so gut wie alles was sich trennen lässt als eigene Dienste laufen zu lassen, selbst die Oberfläche ist entkoppelt vom Rest. So lassen sich die einzelnen Komponenten getrennt mit mehreren Teams entwickeln, aber es kommt zwangsläufig zu Coderedundanzen. Beim "zerschneiden" eines vorhandenen Monolithen ist es dabei sehr schwierig direkt beim ersten Mal die richtigen Schnitte zu machen und so kann eine Umstellung auch schon mal länger dauern bzw. mehreren Anläufe benötigen. Zuletzt wurde noch die "Simian Army" vorgestellt, die eine gesamte Anwendung mit beliebigen Eingaben testet und einzelne Services lahmlegt. Im Prinzip wird so ein Stresstest gegen das Hysterix Framework durchgeführt und man guckt sich in den Logs und an der Anwendung an wie Robust diese läuft.

Nach ein paar Gesprächen zur Mittagspause gings um 14Uhr weiter mit dem Thema Microservices. Diesmal zum Thema Deployment von Microservices. Am Beispiel vom Otto Webshop wurde von Guido Steinacker vorgestellt wie dort die Micrsoservices geschnitten und erstellt wurden. Direkt beim Einstieg wurde unterstrichen, dass pro Tag bis zu 100 Deployments auf der Produktion stattfinden und dies ohne zu lasten der Qualität zu gehen. Interessant dabei ist, dass Anpassungen die so in großer Zahl an einem Tag eingeführt werden mittels "feature Toggle" nur für einen Teil der Endbenutzer aktiviert wurden. So kann man ein Feature einbauen und nur bei 1% der Benutzer die Auswirkung beachten. Ähnlich wie Netflix hat auch Otto eine Menge von Tools geschaffen die auf GitHub zur Verfügung stehen. JLineUp, JSMine, Gatekeeper und JezHumble sind nur ein paar Tools die teils selber entwickelt wurden oder in der Microservice Entwicklung eingesetzt werden.

Nachdem das Hysterix Framework sich interessant anhörte habe ich um 15Uhr dann die Vortrag "Resilience mit Hysterix" angehört. Leider stellte sich schnell heraus, dass das Framework in Java geschrieben ist und nur in Java einsetzbar ist.

Um 16 Uhr hab ich dann zusammen mit Dietmar ein wenig über PL/SQL Installationsskripte und Optimierungen in diesem Bereich geredet bevor es dann wieder weiter ging.

Um 17Uhr gabs dann die zweiten Vortrag von Guido Steinacker zu Microservices. Dabei wurde vor allem genauer beleuchtet wie eine Oberfläche wie der Otto Webshop auch aus einzelnen Microservices erstellt wird. Aus meiner Sicht wirkt es schon etwas verstörrend wie man jede Komponente wie Navigation, Suche, Empfehlungen, Artikeldetails alles in einzelnen Teams entwickeln lässt und trotzdem eine stimmige Gesamtanwendung erhält. Ein guter Ansatz bei einer solch "verteilten" UI war auf jeden Fall wie AJAX einzusetzen um eben Inhalte die getrennt sind auch effektiv nachzuladen. Innerhalb von Otto wird auf Pair Programming gesetzt, was sich aus meiner Sicht gut anhört, aber natürlich die doppelten Ressourcen bindet.

 Im 18Uhr Slot habe ich dann noch ein paar Unterhaltungen geführt  und dann um 19Uhr als abschließenden Vortrag mich Elchen und Elefanten gewidmet. Hier gabs zum Glück auch schon ein Bier zum Vortrag, den nach 10Stunden war man doch schon etwas "durch" im Kopf. Der letzte Vortrag behandelte dabei die Problematik, wie man innerhalb von Firmen mit Problemen umgehen kann die von anderen Personen ausgehen, welche meist 1-2 Gehaltsklassen über einem sind. Hier wurden eine Menge Beispiele geliefert, wie ein solches Problem aussehen kann, und was es für Verluste mit sich bringt, wenn man solche Probleme nicht löst. Der Vortrag war dabei zwar gut vorgetragen, aber brachte nicht so wirklich Lösungen mit sich.

Danach konnte man sich mit Bier und Fingerfood in kleiner Runde gemütlich unterhalten und müde ins Bett fallen.

Thursday, December 15, 2016

ITTage 2016 - Tag 1 - 13.12.2016

Der erste Tag starte bei mir mit InMemory Technologien bei Oracle Datenbanken von Ulrike Schwinn. Hier gings vor allem darum verschiedene Techniken vorzustellen die es nicht nur seit der neuesten Version 12c gibt. Anfangen sollte man immer auf dem Hostsystem bzw. der virtuellen Umgebung und sich ein Bild davon machen wie viel Ram und Plattenplatz die Maschine hat und wie viel bisher für die Umgebung vorgesehen ist. Weiter wurden dann Themen wie AWR Reports, Statspack und der Memory Advisor erwähnt. Auch Parameter wie SGA_TARGET und DB_CACHE_SIZE_MIN sollten geprüft werden damit auch hier keine Engpässe in der DB entstehen. Um einen Überblick zu bekommen wie es mit dem Cache und konkreten Objekten aussieht bietet sich die View v$BH an. Anschließend gings dann noch um das Thema Caching, in wie weit Tabellen im Cache oder per IO nachgeladen werden (SMALL_TABLE_THRESHHOLD) oder das man im Ausführungsplan sehen kann wo der result_cache greift.
Auch wenn ein großer Teil der Themen bekannt ist war es eine gute Übersicht und ein super Einstieg.

Wie von anderen Konferenzen bekannt gibt‘s auch auf der ITTage Konferenz Keynotes und die erste war von einem der MariaDB Gründer Kaj Arnö. Auch wenn man als Oracle Spezialist wohl kein MariaDB einsetzt, war es doch interessant zu wissen wie MariaDB so entstanden ist. Als Abspaltung von MySQL und vom Namen der Tochter „Maria“ des anderen Gründers weiß man nun woher die Datenbank kommt. Richtig interessant ist natürlich, wie schnell sich MariaDB im Vergleich zu MySQL weiterentwickelt hat und wie verbreitet die Datenbank auch in den ganzen Linuxdistributionen ist. Bisher war auch ein Wechsel zwischen MariaDB und MySQL recht schnell möglich, aber ab der kommenden Version geht Oracle mit MySQL explizit von MariaDB weg. Auch bekommt MariaDB in Zukunft mit der BSL eine interessante Lizenzstruktur, welche im Prinzip nur bei sehr großen Umgebungen oder Kunden mit sehr großem Umsatz als Lizenzkosten zum Tragen kommt.

Im nächsten Vortrag gings dann um das Thema Multi Cloud Sourcing. Dies war dein leider ein Herrstellervortrag, der im Gegensatz zu den meisten anderen Vorträgen eher eine Pleite war. Klar ist ein Ansatz eines lokalen Cloudanbieters, der die Daten in Deutschland vorhält und gute Schnittstellen zu den großen Cloudanbietern vorhält auch gut, aber es war dann doch zu sehr eine Werbeveranstaltung.

Im nächsten Slot hab ich dann mal nen Open Source im Industrie 4.0 Bereich besucht der von Heinz Wilming gehalten wurde. Im Gegensatz zu vielen Individuallösungen mit einem möglichst geringen Set an unterschiedlichen Tools, wurde hier ein genau umgekehrter Ansatz vorgestellt. Es wurden recht viele verschiedene Technologien gewählt, welche auch für die Industrie zertifiziert sind, zusätzlich wurde eine „Mica Box“ (sowas wie ein Industrie Rasperry Pie) eingesetzt um eine Flotte von Fahrzeugen zu managen. Ich persönlich kann mir sowas eher nicht vorstellen mit den ganzen Schnittstellen und verschiedenen Tools, aber durch die Standards und ohne Individualentwicklung scheint es dennoch möglich zu sein, sowas im großen Stil zu nutzen.

Nach den doch teils weit von Oracle entfernten Technologien gings dann in einen Multitenant Vortrag von Johannes Ahrends. Hier gab’s dann ein paar interessante Punkte die eine PDB nicht nur als getrennte Datenbanken ansehen lässt sondern noch aufzeigt wie abhängig diese von der einen Instanz sind. So ist in 12.1 kein Flashback nur in einer PDB möglich und man sollte nicht vergessen, dass das ganze Thema auch Lizenzkosten extra kostet und die PDB’s einzeln gepatched werden müssen. Aber in 12.2 ist es zumindest möglich PDB’s mit verschiedenen Charsets in einer CDB laufen zu lassen, wobei man natürlich beachten muss, dass die CDB als AL32UTF8 läuft und die PDB’s mit anderem Charset vorher in einer anderen DB erstellt werden müssen.

Das nächste Thema wurde von Christian Grave vorgestellt und es war „Lizenzverhandlung“. Im ersten Moment hatte ich noch vor dem trockenen Thema zurückgeschreckt, aber von einer Person außerhalb von Oracle selber wollte ichs dann doch mal hören. Der Vortrag war dann doch eine positive Überraschung da die Folien nicht als dröge Textpräsentation aufgemacht war, sondern als nette Geschichte und auf einem echten Fallbeispiel basierte. Interessant wie man mit Verhandlungsgeschick auch eine Lizenzierung auf VMWare hinbekommen kann, ohne jeden Kern zu bezahlen oder was man beachten sollte wenn man externe Hoster einsetzt und diese auf einem die Infrastruktur so ändern, dass die Lizenz überhaupt nicht dazu passt. Zuletzt noch die Einbindung des Oracle Advisory Service als kostenlose Qualitätsüberprüfung zu nutzen hörte sich echt gut an.

Weiter gings mit Randolf Geist und dem Cost Based Optimizer. Auch wenn ich das Gefühl hatte einen Teil des Vortrags schon zu kennen gabs auch hier ein paar interessante Punkte. Wer zum Beispiel den Optimizer komplett alleine arbeiten lässt und einige Caching Mechaniken in seinen Querries nutzt, sollte beachten, dass diese jede Operation so rechnet, als würde sie wirklich ausgeführt werden und eben nicht gecached wird. Auch wenn es mit 12c einige neue coole Features gegeben hat waren doch in 12.1 eine Menge von Features aktiviert, die mit 12.2 wohl wieder per default deaktiviert sind, weil nicht alle so vorteilhaft sind.

Im nächsten Vortrag gings dann zwar um SQL aber nicht nur um Oracle. Markus Winand als Person hinter „use-the-index-luke“ und „modern SQL“ stellte die verschiedenen SQL standards vor und stellte gleich am anfang den Vergleich von WIN 3.1 und SQL92 dar mit der Frage warum manche Abfragen erstellen die aus den 90er stammenJ. Insgesamt bekam man einen guten Überblick welche SQL Server, welche Standards benutzen und dass man mit Oracle ganz gut fährt. Aber auch wenn ich den großteil kannte, war es gut zu wissen, welche SQL Standards genau hinter welchen Features stecken und dass die OFFSET Funktion in SQL eher nicht so clever ist.


Beim letzten Vortrag von Urs Enzler über agile Strukturen gabs dann nochmal nicht Oracle Kost. Aber ein paar interessante Punkte, sind durchaus von agilen Projekten auch in APEX/Oracle gut zu nutzen. Vor allem das Probleme oft von nicht funktionalen Fragen wesentlich mehr getrieben werden als von funktionalen. Sprich die Anwendung muss an sich performant laufen und die Anzahl User müssen gut mit der Anwendung arbeiten können, bevor man klärt was die Anwendung selber machen soll.

Thursday, October 27, 2016

Vorträge des NRW Meetup vom 25.10.2016

Hier die Unterlagen des Meetups von Dienstag, dem 25.10.2016 bei Opitz in Essen
Das nächste Meetup wird im nächsten Jahr stattfinden. Genauere Infos zu den Terminen werden hier im Blog zu lesen sein.

Tuesday, October 18, 2016

Inhalt des nächsten APEX Meetup in NRW am 25.10.2016

Am Dienstag den 25. Oktober findet das nächste APEX Meetup in NRW statt. Zwei der fünf deutschen Redner tragen Vorträge der kommenden Konferenz vor:
  • Eine Sticky Note zu ORDS, Oracle APEX und Weblogic 12c (Vortrag) - Holger Lehmann (XINGTwitter)
  • Ganzheitlicher Ansatz zur Versionierung von APEX-Projekten (Vortrag) - Jan Winkels
  • Migrationserfahrungen zum Universal Theme (Vortrag) - Oliver Lemm (TwitterXING)
Die Treffen sind wie immer kostenfrei, es wird um Anmeldung gebeten (Link).

Datum & Uhrzeit:
Di, 25.10.2016, 17-20Uhr
Ort:
Opitz Consulting, Standort Essen, Lazarettstraße 15, 45127 Essen
Anmeldung:
Ansprechpartner:
Oliver Lemm (TwitterXINGMeetupXING-Gruppe)

Monday, June 6, 2016

Deutsches KScope16 Preview Meetup

Morgen am 7. Juni findet das deutsche Vorab Meetup zur KScope16 statt. Zwei der fünf deutschen Redner tragen Vorträge der kommenden Konferenz vor:
  • Affordable Workflow Options for Your APEX App (Vortrag) - Niels de Bruijn (XINGTwitter)
  • User friendly data diff with APEX (Vortrag) - Oliver Lemm (TwitterXING)
Die Treffen sind wie immer kostenfrei, es wird um Anmeldung gebeten (Link).

Datum & Uhrzeit:
Di, 07.06.2015, 17-20Uhr
Ort:
Oracle, Hamborner Str. 51, 40472 Düsseldorf
Anmeldung:
Ansprechpartner:
Oliver Lemm (TwitterXINGMeetup, XING-Gruppe)

Friday, February 19, 2016

Vorträge des NRW Meetups vom 16.02.2016

Hier die Folien des letzten NRW Meetups vom 16.02.2016
Danke an die Vortragenden.
Das nächste Treffen findet am 07.06.2016 bei Oracle Düsseldorf statt.Wer einen Vortrag halten will oder an einem Thema interessiert ist kann mich gerne kontaktieren.

Thursday, January 28, 2016

Nächstes Treffen der APEX UserGroup / Meetup NRW am 16.2.2015

Am 16. Februar findet das erste Meetup in 2016 statt. Diesmal mit folgenden Themen wieder bei der MT AG:
  • Dynamische Benutzeroberflächen in APEX (Vortrag) - Thimo Fußbroich (XING, Twitter)
  • htmldb_get vs apex.server.process (Vortrag & Diskussion) - Oliver Lemm (Twitter, XING)
  • NodeJS ein kurzer Einblick (Vortrag) - Kai Donato (Twitter, XING)
  • Wie pflanze ich einen Baum in APEX? (Vortrag) - Till Albert (TwitterXING)
Die Treffen sind wie immer kostenfrei, es wird um Anmeldung gebeten (Link).

Datum & Uhrzeit:
Di, 16.02.2015, 17-20Uhr
Ort:
MT AG, Balcke-Dürr-Allee 9, 40882 Ratingen
Anmeldung:
Ansprechpartner:
Oliver Lemm (Twitter, XING, Meetup, XING-Gruppe)

Monday, November 2, 2015

Configure Apache Tomcat with a service on Windows

As a result of some problems with my local Apache Tomcat and the windows services here are some notes when installing the software on windows.
As first you have to decide which version you want to install. When working with APEX and the ORDS the minimum supported Version of Apache Tomcat is 7, but you can also use 8. So i downloaded the newest version here https://tomcat.apache.org/download-80.cgi
Use the 32-bit/64-bit Windows Service Installer to install the software including the service for tomcat.
If you use the zip-version or you have trouble with your tomcat service you can to create the service on your own. Therefor start the windows shell and go into your tomcat\bin directory. Check at first whether JAVA_HOME and JRE_HOME are set correctly. Type SET and search for both Parameter in your listing. If one of the is missing you can set these values like that:

C:\SET JAVA_HOME=C:\Program Files\Java\jdk1.8.0_45
C:\SET JRE_HOME=C:\Program Files\Java\jre1.8.0_65

Keep in mind that you should always use the newest version of Java. When i updated to the newest version of java and removed the old one my tomcat throw the Errorcode 1 when trying to start the service. When the Java-Parameters are correct you can create the service with this command:

C:\Program Files\Tomcat 8.0\bin\service install

if the service is already installed you can remove the service with

C:\Program Files\Tomcat 8.0\bin\service remove

If you still have trouble check whether another application is using the port you have choosen when installing Apache Tomcat. For example the standard port for the Oracle XE EPG is 8080 and Apache Tomcat also uses 8080 per default. There can only be one application on this port. To change the port look into your tomcat\conf\server.xml and search for the connector with the protocol="HTTP...". This is the port where Apache Tomcat is listening for the browser call.

Monday, October 5, 2015

Vorträge des Meetups - APEX UserGroup Treffens vom 29.09.2015

Hier die Folien des letzten Meetups - APEX UserGroup Treffens vom 29.09.2015
Danke an die Vortragenden.
Das nächste Treffen findet vorraussichtlich im Januar/Februar 2016 statt.Wer einen Vortrag halten will oder an einem Thema interessiert ist kann mich gerne kontaktieren.

Monday, September 7, 2015

Nächstes Treffen der APEX UserGroup / Meetup NRW am 29.9.2015

Am 29. September findet das nächste Treffen statt und diesmal sogar mit 4 Vorträgen:
  • Reverse Geocoding (Vortrag) - Jens Gauger (XING)
  • APEX Anwendungen für Smartphones (Vortrag) - Dick Dral (Twitter)
  • APEX Baby-Design mit ReSTful Services auf allgemeiner Datenstruktur (Vortrag) - Friedhelm Meier
  •  Mandantenfähigkeit & Mehrsprachigkeit bei der Entwicklung von APEX Anwendungen (Vortrag) - Christina Funke (XING)
Die Treffen sind wie immer kostenfrei, es wird um Anmeldung gebeten (Link).

Wichtig: Der Termin findet diesmal bei der Apps Associates GmbH in Dortmund statt.

Datum & Uhrzeit:
Di, 29.09.2015, 17-20Uhr
Ort:
Apps Associates GmbH, Flughafenring 11, 44319 Dortmund
Anmeldung:
Ansprechpartner:
Oliver Lemm (Twitter, XING, Meetup, XING-Gruppe)

Wednesday, August 12, 2015

Vorträge des Meetups - APEX UserGroup Düsseldorf Treffens vom 14.07.2015

Hier die Folien des letzten Meetups - APEX UserGroup Treffens vom 14.07.2015
Danke an die Vortragenden.
Das nächste Treffen findet am 29.09.2015 in Dortmund bei Apps Associates statt. Wer einen Vortrag halten will oder an einem Thema interessiert ist kann mich gerne kontaktieren.

Wednesday, August 5, 2015

Expertenseminar: Professionelle APEX-Entwicklung und APEX 5.0



professionelle APEX-Entwicklung


Der Einstieg in die APEX Entwicklung ist schnell gemacht und man kann erste Ergebnisse erzielen. Sobald man sich aber mit mehr als einer Anwendung beschäftigt und nicht nur eine Anwendung/System für Entwicklung, Test und Produktion besitzt kann es schnell unübersichtlich werden.
Welche Änderungen wurden wo gemacht? Wie verhindere ich einen Wildwuchs in der Anwendung? Wie arbeite ich mit mehreren Entwicklern? Wie kann ich Schritte, die ich immer wieder mache automatisieren? Wie kann ich Änderungen die gemacht wurden besser nachvollziehen? Welche Möglichkeiten existieren bei Updates von Produktivdaten, ohne dass ich die bestehenden Daten und Tabellen in der Datenbank neu erstelle? Diese und viele weitere Fragen sollten bei einer professionellen APEX Entwicklung gestellt und beantwortet werden.
Im Rahmen des Expertenseminars konzentriert sich der erste Tag vor allem um die Lösung dieser Fragen.
Sowohl für alte Hasen in der APEX Entwicklung als auch für Neulinge ist es mehr als nur Wertvoll, wenn man Änderungen die gemacht wurden in einem Versionierungssystem festhält. Man sieht so jederzeit, welche Person, welche Änderungen zu welchem Zeitpunkt durchgeführt hat.
Durch die Möglichkeit Abhängigkeiten zu hinterlegen und die sinnvolle Einbindung von Versionsierungs- und Ticketsystem besteht sogar die Möglichkeit genau zu sehen zu welchem Sachverhalt welche Änderungen gehören.
Ein automatisierter Installationsprozess spart enorm Zeit und verhindert Fehler. Nicht zuletzt kann durch Automatisierung sogar der Entwickler komplett außen vor gelassen werden und eine Testperson, welche keine APEX Kenntnisse hat kann sich die Umgebung selbst einspielen. Treten dann Fehler auf werden automatisiert die Entwickler per Mail benachrichtigt.

APEX 5

Nachdem man die Entwicklung professioneller gestaltet hat, steht am zweiten Tag die aktuelle APEX Version im Mittelpunkt. Der Sprung zur Version 5 ist dabei nicht so selbstverständlich und einfach wie in die vorigen Versionen. Mit dem Page Designer hat der Entwickler ein mächtiges, aber auch neues Werkzeug bekommen. Selbst wer schon einige Folien gesehen hat, oder erste Versuche in der neuen Version gemacht hat, wird feststellen, dass es doch nicht so einfach ist, da eine Vielzahl von Einstellungen sich verlagert haben.
Zusätzlich wurde das Universal Theme eingeführt, welches durch die Template Options und den Theme Roller einige Möglichkeiten bieten die APEX Anwendungen wesentlich attraktiver und „schneller“ zu gestalten. Aber gerade hier sollte man mehr als nur einen Blick reinwerfen, dass jede Verbesserung auch mit Veränderungen kommt und diese wiederrum auch Einschränkungen besitzen. Hatte man in der Vergangenheit für Anpassungen oftmals ein Template angepasst und so die gewünschte Wirkung erzielt, so sollte man mit APEX 5 und dem Universal Theme alle Änderungen möglichst mittels eigenem CSS oder Template Options realisieren. Ändert man stattdessen die Templates des Universal Theme, so wird man die zukünftigen Änderungen des Universal Themes und damit verbundenen Komponenten nicht mehr sofort nutzen können.

Ist Ihr Interesse geweckt oder stellen sich noch weitere Fragen, so kommen Sie zum "Berliner Expertenseminar mit Oliver Lemm zum Thema Professionelle APEX-Entwicklung und APEX 5.0". Die Mischung aus professioneller APEX Entwicklung und den Infos aus der neuesten Version machen diesen Event zu einem Pflichttermin für APEX Entwickler in 2015.

Wo:     DOAG Dienstleistungen GmbH, Tempelhofer Weg 64, 12347 Berlin 
Wann: 15.&16.09.2015

Anmeldung und weitere Infos dazu hier: DOAG Expertenseminar

Monday, June 29, 2015

Getting Schema - Datafile - Tablespace Relation with SQL

Last week i posted a single query how to identify the relation between datafiles, tablespaces and users. Because of the Twitter limitation of 140Chars i posted it as a screenshot. Here is now the whole query
with table_spaces as
  (select sum(bytes) / 1000000 mb_free, tablespace_name
  from dba_free_space group by tablespace_name),
     data_files as
  (select f.tablespace_name
         ,bytes / 1000000 file_size_mb
         ,maxbytes / 1000000 file_size_max_mb
         ,autoextensible
         ,file_name
   from dba_data_files f),
     schemas as
   (select distinct owner, tablespace_name from dba_segments)
select s.owner
      ,t.tablespace_name
      ,round((t.file_size_mb-d.mb_free),2) file_size_mb
      ,round(((t.file_size_mb-d.mb_free) / t.file_size_mb) * 100,2) percent_content_vs_filesize
      ,round(t.file_size_mb,2) file_size_mb
      ,round((t.file_size_mb / t.file_size_max_mb) * 100,2) perc_content_vs_filesize_max
      ,round(t.file_size_max_mb,2) file_size_max_mb
      ,autoextensible
      ,t.file_name
from data_files t
join table_spaces d on d.tablespace_name = t.tablespace_name
left join schemas s on s.tablespace_name = d.tablespace_name
order by s.owner, t.tablespace_name
 the result looks like this:

If you are only interested in the tablespace-datafile relation you can use this query:
with daten as
  (select sum(bytes) / 1000000 mb_free, tablespace_name
  from dba_free_space group by tablespace_name),
     data_files as
  (select f.tablespace_name
         ,bytes / 1000000 file_size_mb
         ,maxbytes / 1000000 file_size_max_mb
         ,autoextensible
   from dba_data_files f)
select t.tablespace_name
      ,round((t.file_size_mb-d.mb_free),2) file_size_mb
      ,round(((t.file_size_mb-d.mb_free) / t.file_size_mb) * 100,2) percent_content_vs_filesize
      ,round(t.file_size_mb,2) file_size_mb
      ,round((t.file_size_mb / t.file_size_max_mb) * 100,2) perc_content_vs_filesize_max
      ,round(t.file_size_max_mb,2) file_size_max_mb
      ,autoextensible
from data_files t
join daten d on d.tablespace_name = t.tablespace_name
order by t.tablespace_name
 This is the result:

The queries can help to identfiy how much space is left in a tablespace or datafile. Or you can identify how big the datafiles can be in maximum. And of course you can identfiy the default datafiles which are created by apex when you don't use any external script. In normal case these datafiles are named like: APEX_XXXXXXXXXX.

Inhalt des APEX UserGroup Düsseldorf Treffens am 14.07.2015

In knapp 2 Wochen findet das nächste Treffen der APEX UserGroup / DOAG Regionaltreffen-NRW statt. Inhalte sind:
  • SVG in Interactive Reports (Vortrag) - Tobias Strohmeyer (Twitter)
  • APEX 5 (Diskussion/Austausch) - Oliver Lemm (Twitter, XING)
  • Single-Sign-On (Vortrag) - Niels de Bruijn (Twitter, XING)
Innerhalb der Diskussion werden erste Erfahrungen mit APEX 5 und mögliche Umstiegsszenarien angesprochen von Vorversionen angesprochen. Es wird wie üblich um kostenfreie Anmeldung gebeten, damit die Teilnehmerzahl im vorraus feststeht.
Wichtig: Der Termin findet diesmal in der Oracle Düsseldorf Geschäftsstelle statt.

Datum & Uhrzeit:
Di, 14.07.2015, 17-20Uhr
Ort:
Oracle Düsseldürf, Hamborner Str. 51, 40472 Düsseldorf
Anmeldung:
Ansprechpartner:
Oliver Lemm (Twitter, XING, XING-Gruppe)

Monday, April 20, 2015

APEX 5 Webinare im #APEXSummer15

Nun ist endlich APEX 5 erschienen und jeder will loslegen. Dazu gibst im Juli insgesamt 8 hochkarätige Webinare in deutscher Sprache. Unter dem Twitter-Hashtag #apexsummer15 gibt es die News dazu und im einzelnen sind folgende Themen und Autoren vertreten:
 Wer Lust bekommen hat und sich anmelden, will hier der Link APEX Summer School 2015

Thursday, January 15, 2015

Inhalt des APEX UserGroup Düsseldorf Treffens am 03.02.2015

Auch in 2015 gehts weiter mit den APEX UserGroup Treffen / DOAG Regionaltreffen-NRW. Beim nächsten Treffen am 03.02.2015 gibt es folgende Inhalte:
  • Vorstellung des Tools NeoLoad (Vortrag) - Gregor Mayer (Link zum Tool)
  • APEX Authentifzierung (Diskussion/Austausch) - Oliver Lemm (Twitter, XING)
  • Einführung in FOEX 2.0 (Vortrag) - Niels de Bruijn (Twitter, XING)
Erstmals gibt es einen Teil, welcher als Diskussion bzw. Austausch zwischen den Teilnehmern vorgesehen ist. Inhaltlich steht die APEX Authentifzierung im Mittelpunkt und jeder ist dazu eingeladen in der Diskussion seine Fragen, Meinung und Tips weiter zu geben. So soll jeder Teilnehmer sich auch einbringen können und noch mehr mit nach Hause nehmen.

Datum & Uhrzeit: Di, 03.02.2015, 17-20Uhr
Ort: MT AG, Balcke-Dürr-Allee 9, 40882 Ratingen
Anmeldung: DOAG Regionaltreffen Anmeldelink (kostenfrei)
Ansprechpartner: Oliver Lemm (Twitter, XING, XING-Gruppe)

Monday, October 20, 2014

APEX Roadshow - Enterprise APEX

In den kommenden 3 Tagen (21.-23.10.2014) findet mit Oracle zusammen eine Veranstaltung zum Thema APEX 5.0 und Enterprise APEX statt. Wer wissen will was die neue APEX Version bringt und sich über professionelles entwickeln mit Oracle Application Express informieren will, sollte die nächsten 3 Tage nicht verpassen.
Mit Glück schafft man an einem der 3 kostenlosen Termine noch teilzunehmen:
  • 21.10.2014 - Ratingen
  • 22.10.2014 - Hamburg
  • 23.10.2014 - München
alle weiteren Infos dazu gibt es hier: 
https://apex.oracle.com/pls/apex/GERMAN_COMMUNITIES.SHOW_TIPP?P_ID=1302

Hier die Agenda im Überblick:
11:30Registrierung & Kaffee
12:00Beginn der Veranstaltung
 Application Express 5.0
Anwendungsentwicklung völlig neu definiert.
Referent: Carsten Czarski, ORACLE Deutschland B.V. & Co KG
Mittagspause
 Enterprise APEX
Deployment, Testing und Projektmanagement
Referent: Oliver Lemm, MT AG
 APEX, und sonst?
Node.js, Open Source Charting, Single Sign On und mehr ...
Referent: Niels de Bruijn, MT AG
16:00Fragen/Diskussion & Ende der Veranstaltung

Wednesday, September 3, 2014

Thursday, August 7, 2014

Inhalt des APEX UserGroup Düsseldorf Treffens am 02.09.2014

Das kommende Treffen der APEX UserGroup Düsseldorf / DOAG Regionaltreffen-NRW beinhaltet folgende Vorträge:
  • Doxxy: Reporting in APEX made easy - Karen van Hellemont (iAdvise, Twitter)
  • Oracle Application Express und Workflows - Sven Böttcher (apps associates, XING)
  • Eine steuert alle, alle gucken auf Eine - zentrale Berechtigungssteuerung im APEX Workspace - Thomas Schild (Noweda eG, XING)
Hier die Informationen zum Standort und Zeitpunkt
Datum & Uhrzeit:   Di, 02.09.2014, 17-20Uhr
Ort:                          MT AG, Balcke-Dürr-Allee 9, 40882 Ratingen
Anmeldung:            DOAG Regionaltreffen Anmeldelink (kostenfrei) 
Ansprechpartner:    Oliver Lemm (Twitter, XING, XING-Gruppe)