Neuer Oracle APEX Podcast
Hört es Euch an! "The Buzz about Oracle APEX"
Update: Habe gerade gesehen, dass der Dimitri eine Zusammenfassung des Podcasts veröffentlicht hat.
Freitag, 25. Mai 2007Neuer Oracle APEX Podcast
Lewis Cunningham von ITToolbox hat einen Podcast zum Thema Oracle APEX erstellt. Mit dabei sind David Peak (Oracle APEX Product Manager) und Peter Martin (ein APEX Benutzer).
Hört es Euch an! "The Buzz about Oracle APEX" Update: Habe gerade gesehen, dass der Dimitri eine Zusammenfassung des Podcasts veröffentlicht hat.
Dienstag, 22. Mai 2007Das Mysterium Outer Join
In meinen vielen Jahren die ich jetzt schon mit Datenbanken/Oracle arbeite, ist mir aufgefallen, dass viele Leute Probleme mit Outer Joins haben. Besonders wenn die Outer Join Tabelle noch eine zusätzliche Einschränkung haben soll.
Vor ein paar Tagen habe ich einen guten Artikel zu dem Thema im Blog vom Jeff's gelesen - aber Warnung, es handelt sich um einen MS SQL Server Blog ;-) - Der Artikel heißt Criteria on Outer Tables und enthält gute Beispiele welche das Problem erklären. Übrigens, wenn Ihr noch wenig mit dem "neuen" ANSI Join Style zu tun gehabt habt, dann schaut Euch mal die Artikel Serie am Eddie Awad's seinem Blog an, wo er über die verschiedenen ANSI Join Styles schreibt. ![]()
Sonntag, 20. Mai 2007Oracle APEX Builder Plugin jetzt auch für den Internet Explorer!
Das Oracle APEX Builder Plugin ist jetzt auch für den Internet Explorer verfügbar!
Schon bereits seit einer längeren Zeit suche ich für den Internet Explorer ein Äquivalent zu Greasemonkey. Es wäre ja nicht so, dass ich nichts gefunden hätte, da gibt es Greasemonkey für IE, Trixie oder Turnabout. Aber leider werden diese Add-on's nicht mehr wirklich aktiv weiterentwickelt. In den meisten Fällen wurde die Entwicklung bereits vor mehr als einem Jahr eingestellt und die Homepages sagen nicht wirklich aus ob sie auch mit dem Internet Explorer 7 funktionieren oder nicht. Aber am Samstag habe ich zum Glück IE7Pro gefunden, welches den IE 6/7 unterstützt. Und die gute Nachricht ist, dass es aktiv weiterentwickelt wird. Es hat auch noch ein paar andere nette Features, aber ich war primär am Scripting Feature interessiert. Nachdem ich gestern mein Greasemonkey APEX Builder Plugin Script angepasst habe, bin ich jetzt stolz Oracle APEX Builder Plugin Version 1.6 ankündigen zu dürfen, welches sowohl den Internet Explorer als auch den Firefox Browser unterstützt! Internet Explorer Benutzer können jetzt die selben Produktivitäts- und Ergonomieverbesserungen im Oracle APEX Builder genießen, wie bereits zuvor die Firefox Benutzer. Das wäre zum Beispiel
Labels: APEX, APEX builder plugin, APEX hacks, Oracle, Produktivität ![]()
Die Oracle APEX Blog Community wächst und wächst!
Die Oracle APEX Blog Community wächst und wächst. In den letzten paar Wochen wurden 7 neue Blogs zum Thema Oracle APEX gestartet.
Schaut Euch mal die Blogs von
Willkommen an Bord! Labels: Andere Blogs, APEX, Oracle
Arikel zu Oracle APEX welche Ihr lesen solltet
In den letzten Tagen wurden ein paar Artikel mit Bezug zu Oracle APEX veröffentlicht, welche Ihr lesen solltet.
Labels: Andere Blogs, APEX, Oracle, Sicherheit
Neue Version der Migration Workbench verfügbar![]() Wenn Ihr noch nicht von der Migration Workbench gehört habt, das ist ein Tool welches dazu verwendet werden kann eine MS Access/SQL Server/MySQL Datenbank nach Oracle zu migrieren. Labels: Migration, MS Access, MS SQL Server, mySQL, Oracle
Was ist eure Lieblings PL/SQL Entwicklungs IDE?
Meine ist der PL/SQL Developer von allroundautomations.
Warum? Weil es ein PL/SQL Entwicklungstool mit einem Fokus auf PL/SQL Entwicklung ist. Die meisten anderen Tools wie TOAD oder SQL Developer (welche ich bereits auch in der Vergangenheit verwendet habe) haben gute DBA/Abfrage Funktionalität, aber versagen kläglich von einem "State of the Art" Programmierer Standpunkt. Sicher, alle haben einen PL/SQL Editor mit "Auto Replace" und "Template" Unterstützung. In der Zwischenzeit kann man mit dem SQL Developer auch schon eine Datei basierende PL/SQL Entwicklung machen. In einer der ersten Version konnten nur Packages aus der Datenbank bearbeitet werden. Könnt Ihr Euch eine Professionelle Entwicklung vorstellen wo der Code nur in der Datenbank gespeichert ist?!?! Ich nicht! Das war damals für mich ein Killer Kriterium es nicht zu benutzen - auch wenn es gratis war. Also was ist jetzt besser am PL/SQL Developer, verglichen zu TOAD und SQL Developer? Es ist die Code Vervollständigung/Code complete/code insight/auto complete oder wie auch immer die IDEs es nennen und was man inzwischen von modernen Java/.Net/... IDEs gewöhnt ist. Jetzt werden viele sagen: "Hey, TOAD und SQL Developer können das auch!". Ja das stimmt, aber nur die "Basic" Variante mit Vervollständigung für Tabellen/Views. Die Code Vervollständigung von der ich rede kennt den PL/SQL Code den Ihr geschrieben habt. Sie funktioniert für lokale Variablen, Packages, Prozeduren der Packages, Parameter dieser Prozeduren, ... Wenn Ihr Euch daran gewöhnt Alt+Leerzeichen zu drücken um das Geschriebene zu Vervollständigen, dann kann das Eure Entwicklungsgeschwindigkeit wirklich erhöhen! Und da spreche ich noch nicht von den anderen Features wie "Refactoring", Variablen Hervorhebung und so weiter. Oder zum Beispiel den Integrierten Compiler, welcher Euch nicht verwendete Variablen/Parameter oder nicht dem Styleguide entsprechende Schreibweise anzeigt. Schaut es Euch einfach mal selbst an. Wenn Ihr aktuell den TOAD verwendet, dann kann es am Anfang ein wenig gewöhnungsbedürftig sein, wenn Ihr auf die neue IDE wechselt, da das Fenster Handling anders aufgebaut ist und im SQL Fenster ein Beistrich nach jedem SQL Statement benötigt wird. Aber es ist es wirklich wert - aus Sicht eines PL/SQL Entwicklers - ein DBA sollte bei seinem TOAD/SQL Developer bleiben. Übrigens, ich werde nicht für diesen Artikel bezahlt :-) Bin einfach ein zufriedener Benutzer dieses Tools und sehe viel zu oft unproduktive PL/SQL Entwicklung mit den falschen Tools. ![]()
Oracle APEX Builder aufmotzen
Einer der Nachteile der neuen "Web-Welt" ist, dass die meisten Web Seiten/Applikationen nicht wirklich mit der Tastatur bedient werden können. Es gibt keine Tastenkürzel um verschiedene Aktionen wie "Änderungen speichern", ... auszulösen. Es muss dazu immer die Maus verwendet werden. Was von einem Ergonomie Gesichtspunkt nicht ganz so optimal ist...
Die Oracle APEX Entwicklungsumgebung leidet an dem gleichen Problem, da sie ja selbst mit APEX geschrieben ist und daher auch im Web läuft. So gibt es zum Beispiel keine Tastenkombination um "Apply Changes", "Run the page", usw. auszulösen. Aber, hier kommt die Rettung der Produktivität und Ergonomie! ;-) Ich dachte mir, es wird mal wieder Zeit für eine neue Version des Oracle APEX Builder Plugin's, besonders weil es ja jetzt auch sein eigenes Sourceforge Projekt hat. Was ist jetzt neu in dieser Version? Zuallererst habt Ihr jetzt die Möglichkeit Tastenbelegungen für Buttons, Links, Tabs oder Felder zu definieren. Ich habe bereits ein paar generelle Tastenbelegungen definiert, aber es ist Euch überlassen diese zu ändern.
Eine weitere Erweiterung verwendet auch die Tastatur. Auf Seiten mit "Tabular Forms" Darstellung, wie zum Beispiel "Bulk update page items", kann jetzt Cursor Up/Down dazu verwendet werden zwischen den Zeilen zu navigieren. ![]() Du brauchst diesen Hintergrund nicht? Einfach die entsprechenden Zeilen aus config\apex_builder_plugin.js entfernen. Noch nie das Oracle APEX Builder Plugin verwendet? Dann schaut Euch mal die ganzen anderen Funktionen an. Plugin herunterladen und den Installations- und Konfigurationsschritten des HowTo Install Dokuments folgen! Änderungshistorie der neuen Version
Labels: APEX, APEX builder plugin, Oracle ![]()
Sonntag, 13. Mai 2007Drucker freundliches Layout
Ich habe ein paar neue CSS Styles zu meinem Blog Layout hinzugefügt, welche alle Grafiken und die Sidebar entfernen wenn ein Artikel gedruckt wird. Damit sollte das ganze jetzt wesentlich Drucker freundlicher sein.
Viel Spass beim drucken! Labels: Blog
Donnerstag, 10. Mai 2007Top Oracle Blogs
Eddie Awad hat heute eine Liste der Top Oracle Blogs Ranked by Technorati Authority veröffentlicht.
Ich bin am 17. Platz! :-) Zur Zeit bin ich gleich auf mit IT-eye. Kann bitte jemand noch einen Link auf meinen Blog erstellen, damit ich sie überhole ;-)
URL in einem neuen Fenster öffnen
Ihr wollte einen Button oder einen Navigationslisteneintrag erstellen welcher einen URL in einem neuen Browser Fenster öffnet?
In reinem HTML würdet Ihr normalerweise einfach <a href="http://url/" target="_blank"> schreiben. Aber wie kann man das target="_blank" in Oracle APEX angeben, wenn es nur die Eigenschaft "URL Target" gibt, in der man nur einen URL eingeben kann? Sicher könnte man sich auch mit ein wenig Javascript Code behelfen um ein neues Fenster zu öffnen. Hört sich aber ein wenig kompliziert für so eine einfache Aufgabenstellung an, oder? Es muss auch einen einfacheren Weg geben! Es gibt ihn auch! Ihr könnt die gleiche Technik wie für eine SQL Injection verwenden. Einfach http://url/" target="_blankin die "URL Target" Eigenschaft schreiben. APEX fügt dann das schließende Hochkomma nach _blank hinzu, den es denkt der URL endet dort. Auf diesem Weg generiert APEX ein gültiges a href Tag mit einem target. ![]()
Mittwoch, 9. Mai 2007Ein Gantt-Chart mit SQL erstellen
For ein paar Tagen hat Lucas Jellema von AMIS ein wirklich interessantes und nettes SQL Statement auf seinem Blog beschrieben mit dem es möglich ist ein Character based Gantt-Chart zu erstellen.
Ich finde das demonstriert wieder mal sehr gut die unendlichen Möglichkeiten und die Flexibilität von SQL. Schaut es auch an! Labels: chart, Oracle, SQL, Tipp
Montag, 7. Mai 2007Nette Erfolgsgeschichte zu APEX
Bin gerade über dem Herod seinem Blog gestolpert auf dem er eine nette Erfolgsgeschichte zu einer APEX Migration erzählt.
Labels: APEX, Migration, Oracle
Sonntag, 6. Mai 2007Neues Blog Layout
Wie Ihr vielleicht bemerkt habt habe ich das Layout meines Blogs geändert. Ich habe mir gedacht es wird Zeit, dass mein Blog sein eigenes Layout hat und nicht eines der Standard Layouts von Blogspot verwendet.
Einer der Vorteile des neuen Layouts ist, dass es sich an die Breite des Browser Fensters anpasst und daher mehr Platz für die Artikel zur Verfügung stehen sollte, besonders auf großen Bildschirmen. Das stört mich zum Beispiel an vielen Blogs, dass sie noch immer auf 800x600 optimiert sind, weil ja die Standard Templates das so vorgeben und dadurch kaum Platz für den Artikel zur Verfügung steht, der halbe Bildschirm aber leer bleibt... Ich würde mich über Feedback freuen, ob das neue Layout auch auf den verschiedenen Browsern und Betriebsystemen ok aussieht, denn wenn Ihr Euch vielleicht schon ein wenig mit CSS herumgespielt habt, dann hattet Ihr sicher auch schon ein paar Alpträume davon. Wenn es unter Firefox gut aussieht, dann könnt Ihr sicher sein, dass es der IE 7 anders darstellt. Und wenn es dann mit diesem Browser auch passt, dann stellt es der IE 6 sicher wieder anders dar... Safari, Opera und wie sie alle heißen haben sicher auch ihre eigene Vorstellung vom CSS "Standard". Jedenfalls viel Spass mit dem neuen Look and Feel!
SMS an ein Handy schicken
Heute habe ich einen Artikel im Grant Rolands seinem Blog über SMS from Oracle Forms through a Web-Service gelesen.
Ich habe mir gedacht, es wäre nett so etwas auch in Oracle APEX und PL/SQL zu haben. Kann man ja für Eskalationen oder System Fehler, ... verwenden. Grant verwendet ein Web-Service von Esendex, aber ich bin mir sicher es gibt genügend andere SMS Gateway Anbieter. Google liefert jedenfalls einige Angebote für Deutschland. Zuerst habe ich mir gedacht ich verwende auch das angebotene Web-Service und schreibe einen PL/SQL Wrapper dafür oder ich verwende die Web-Service Funktion von APEX. Aber ich habe mich dann dafür entschieden die einfache HTTP POST Version zu verwenden, welche auch von Esendex angeboten wird. Gründe? Warum soll ich mir das ganze Java rundherum antun und es nur unnötig kompliziert und fehleranfällig machen wenn es einfach auch geht. Die APEX Web-Service Funktion konnte ich nicht verwenden, weil ich das ganze ja auch von PL/SQL zum Beispiel in einem Batch-Job verwenden wollte. Der Code ist eigentlich sehr einfach. Holt Euch ein Gratis Konto, ersetzt die Konstanten in der Beispiel Prozedur und los geht es! Hinweis: Wenn Ihr einen Proxy habt, dann müsst Ihr den Kommentar für die Proxy Zeile entfernen. Es gibt auch eine sicherere Version mit HTTPS, aber die benötigt wieder ein Wallet, ... eigentlich wollte ich ja nur zeigen wie einfach es ist und das es funktioniert. Die Fehlerbehandlung in der Prozedur könnte sicher auch noch verbessert werden, aber das ganze soll ja nur ein Grundgerüst sein! :-) Viel Spass beim aufwecken Eurer Bereitschaft/DBAs in der Nacht! ;-) Um eine SMS zu schicken, einfach die Prozedur mit BEGINaufrufen. Nachfolgend die Beispiel Prozedur: CREATE OR REPLACE PROCEDURE sendSMS Labels: APEX, Oracle, pl/sql, SMS, Tipp ![]()
Mittwoch, 2. Mai 2007Lock Konflikte bei Automatic Row Processing (DML) Prozessen
Oracle APEX 3.0 beinhaltet ein nettes neues Feature das Ihr kennen solltet. Es gibt eine neue "Substituation Variable" APEX_DML_LOCK_WAIT_TIME welche dazu verwendet werden kann um das Verhalten der "Automatic Row Processing (DML)" und der ApplyMRU/D Prozesse zu definieren, wenn ein verarbeiteter Datensatz in der Datenbank bereits gelockt ist.
Mit der Standardeinstellung wartet APEX ewig, oder so lange bis der Datensatz wieder freigegeben wird. Das Schlechte daran ist, dass Benutzer normalerweise nicht so lange warten sondern den Abbrechen Button im Browser drücken und die Änderungen erneut an den Server schicken und wieder schicken und wieder schicken. Und jedesmal wird dabei eine neue Datenbankverbindung aus dem Connection Pool verwendet, welche niemals dorthin zurückgegeben wird, weil sie ja beim Lock hängenbleibt. Wenn man sich das genauer überlegt, könnte man damit sicher eine interessante Denial-of-Service Angriffsmethode entwickeln, aber das ist eine andere Geschichte... Wie kann so eine Locking Situation aussehen? Zum Beispiel wenn Ihr eine Datenbank habt auf deren Daten auch von einer Oracle Forms Applikationen oder jede andere Client/Server Answendung zusätzlich zur APEX Anwendung zugegriffen wird. Für solche Anwendungen ist es meistens normal, dass sie eine pessimistische Locking Strategie implementiert haben. Das bedeutet, dass der Datensatz sofort gelockt wird wenn der Benutzer anfängt die Daten zu ändern. APEX und die meisten Web Anwendungen verfolgen eine optimistische Locking Strategie. Locks können auch entstehen wenn man lange laufende Batch Jobs hat die nur selten ihre Änderungen speichern. Welche Einstellung soll ich verwenden? Ich würde vorschlagen in jeder Applikation die "Substitution Variable" auf 0 zu setzen. Unabhängig ob man obiges Szenario hat oder nicht. Ein Wert von 0 bedeutet, dass sofort eine Fehlermeldung ausgegeben wird wenn ein Datensatz gelockt ist. Weitere Einstellungen können in der Online Dokumentation im Kapitel About DML Lockings nachgelesen werden. Weitere Hintergrund Informationen findet Ihr im zugehörigen OTN Forums Thread. Labels: APEX, Locks, Oracle, Vorsicht ![]()
|