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)