Showing posts with label Oracle. Show all posts
Showing posts with label Oracle. Show all posts

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.

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)

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.

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)

Tuesday, July 9, 2013

A Review on the ODTUG KScope13 conference in New Orleans

This year I got the great opportunity to join the ODTUG Kaleidoscope conference in New Orleans. Joining the conference as one of the most important conferences for an oracle developer I was excited to meet all the people, which i mostly knew of blogs and news.

getting ready
For preparation to travel to America I had to request a passport for travelling beside the European borders. Further on you have to request a visa, even for a vacation the USA. Making a presentation about a project we developed for a German customer, we also had contact the customer approving our presentation.

the flight
Flying from Germany to America was a took overall nearly 20hours. Flying  7hours"back in time" was for me no big problem, but flying back after the conference was even more hard. A good advice for all who are travelling through different time zones is, to change your sleeping time some days before the journey starts. For me it was my first flight more which took more than 4hours, but it was even easier than the short flies. The air planes are bigger and the flight itself is not so hectic.
Really annoying for some people was, that they have lost their luggage. About 10% of all people who travelled over more than one airport lost it. It's always wise to put the really expensive things like laptop, photo camera and other possible stuff in the cabin luggage. As far as i know you can always take a laptop bag and another cabin luggage.
During the flight I met Dietmar Aust and it was really interesting to talk in our waiting time about his presentation and other interesting stuff.
Miami


the hotel
Arriving at the Louis Armstrong airport in New Orleans it took another 30minutes to get to the Sheraton hotel in the middle of the city. Using the airport shuttle service for 20$ it was a little bit cheaper than the taxi. Arriving at the hotel my first impression was, how cold it is inside the buildings. After I got my room and put my luggage upstairs, I went to the hotel lobby met some more people out of the apex community. It's always a big advantage to travel to a conference before the first day, even when you could arrive in the morning. Talking about experiences and get in contact to other people, out of the community is a great experience and a big advantage for every one.
 A big advantage compared to some other conferences was, that the rooms for the attendees where in the same hotel as the conference itself. Further on the arrangement for the rooms during the conference was really good. The different areas or especially apex was concentrated to one area, so that the ways through the different rooms were really short. One disadvantage was, that the air conditioning was in some rooms really too cold. Till know i don't understand why a room is cooled down to 64F / 18Grad or even lower.
Swimming pool on the eights floor


the conference
For me the main topic in that conference was of course apex. But before the conference starts everyone got
During the first day (Sunday), all presentation where presented by the apex team or other oracle employees connected to the apex topic. The best presentation on this day, was Shakeeb's presentation talking about User Interfaces in apex.
Shakeeb presenting

Overall presentations of the oracle apex team were all interesting, but the content of apex 5.0 was scattered a little bit through 3-4 different presentations. Perhaps for next conferences i would enjoy it to get an overview of the new features in a presentation on the first day, divided by topics a reference through the other presentations which are also talking about related content.
Between the different session, there was a break of 15 or 30 minutes. This time is perfect to change the room and talk about the last presentation.
Another really good idea, was the combination of some presentation having the same topic. Related to the topic "Responsive Design" Martin D'Souza, Christian Rokitta, Mark Lancaster and  Dimitri Gielis, gave some great presentations and many interesting tools for developing really good looking applications for different devices.
Another really good presentation was from John Scott about "APEX: Version Control with Git". He managed it to present the features from Git with slides and while demoing Git on command line.
Beside the presentations there was the "open-mic-night", where everyone could present his apex application's. Thats always interesting to see in how many different ways apex is used and can look like.
During the conference there was also 2nd meeting of nearly all people who are part of the advisory board. It's really a great opportunity to get involved into some possible features, which could take place in future apex releases. So, keep on bringing new ideas for next releases at apex.oracle.com/vote.  Here is an overview of the people who joined this meeting and are part of the advisory board:
APEX Advisory Board Meeting


kscope "not technical"
Of course not all content is directly connected to the technical stuff. On this conference doc hendley was talking about his wine to water project. It's always impressive how people can change their life and can activate other people with their ideas.
The event on this conference was another great impression. We were collected by bus, which brought us to the hall's, where the wagon's for Mardi Gras were standing. It was directly beside the Mississippi, where a great firework took place. There were many different options, where you could drink something, hear good music or get something to eat.
Mardi Gras

offtopic
As last it was a great pleasure to meet all the interesting people and see how much effort they are putting into organizing such an event. Further on every evening it was possible to get in contact with so many people only knowing from the blogs, articles and books. Especially thanks to the oracle apex team (Joel, Patrick, Shakeeb, Marc, Vlad, Jason, David), to the foex guys (Peter & Matt), to the enkitec guys (Christoph, Scott, Timothy, Jorge, Dan, Doug), to the odtug team (Martin, Monty), Steven, Patrick, Christian, the apex evangelists (Roel, Dimitri, John), Dietmar, Niels and everyone i missed at that point.
Lunch after the last conference day
after conference
After joining the conference we used one more day to travel through the city. Using the hop and ride bus, it was a good opportunity to get an overview of many different points of the city. Some interesting points we went were: 
Garden District
French Quarter
Bourban Street
Harrahs Casino
Graveyards
Superdome
Ghost tour - Bourbon Hotel
And as last two of my favorites
Oysterbar - really good burgers :)
Cafe du Monde (thx Martin)

with delicious dessert :)
At last, if I mixed something up, please let me know I will correct it.

Tuesday, March 5, 2013

Oracle VirtualBox experiences

As an APEX developer it's always interesting to have a small environment on your laptop for demonstrations or tests.
Many people in our company used VMWare as a primary virtual system platform. In nower days oracle has it's own virtual technology named Oracle Virtual Box.
You can find the client tool for using a virtual system on www.virtualbox.org. The last version is from 28th. of february in the version 4.2.8 and has 96MB. When installed it needs about 132MB on your local storage took 10minutes to install. As usual the installation needs admin rights, because a virtual network adapter and some other stuff will be installed.

One big advantage of using virtual box instead of vmware is, that oracle has predifined some images with nearly all current versions of software. You can find the images on http://www.oracle.com/technetwork/community/developer-vm/index.html. If your focus is developing apex applications the first image called "Database App Development VM" would be the right one. The download "Oracle_Developer_Day.ova" is 4.2GB huge and contains the Oracle Enterprise 11gR2 database with APEX 4.2. (even if there stands APEX 4.1 the APEX version in the image is "4.2.0.00.27")

After you have installed the client and downloaded the image it has to be imported into the client. This importing process takes 15-30minutes and extracts 2 files with 12GB out of you 4.2GB download files. These files will be placed per default in "C:\Users\<user>\VirtualBox VMs\Oracle Developer Days". As far as i can see, there is no option where i can change this default extract destination. That could be a problem for people who have a small first partition, only for your os.
After the extraction it's possible to move the files into another directory. Close your client before and move the folder "\Oracle Developer Days" to another directory. After restarting the virtual box client you have to remove the old image and add the new folder. Now you choose the extracted "*.ovf"-file and after that you can use the image.

The two image files are not completly used in the image (7.5/12GB and 4/12GB).
This image uses apex listener 1.1.4 on port 8888 for APEX. So you can start developing apex under http://localhost:8888/apex. Log in under Workspace internal/ user: admin/ password: oracle and configure your own workspace.

If you are interested in using the last version of apex, this blogposting (Ronald van Dijk) can be interesting how to patch to apex 4.2.1.
Further on if you wanna configure your virtual machine, that you can call the apex url from other systems this blogposting (german description how to configure the network) might be interesting.

Conclusion:
Overall it's an easy way to develope apex on a local system, even for people who havn't big knowledge with linux machines.
Keep in mind that installing virtual box beside vmware will cause problems with the different images and the network adopters. So deactivate the other network when using your virtual device.
And as always the command line is configured to american english, so for german developer it might be interesting to adjust that configuration.
As last note: The command "ifconfig" has to be called with /sbin/ifconfi

I hope you will enjoy developing on this machines and let me know if there are any more tricks or interesting points while using virtual box or apex :)