Posts

date und timestamp - Artikel von Carsten Czarski

Carsten Czarski hat einen sehr guten Artikel zum Thema date und timestamp geschrieben. Zu finden unter http://sql-plsql-de.blogspot.com/2009/09/date-und-timestamp-in-sql-und-plsql.html ... unbedingt mal reinschauen.

APEX und Sicherheit

Da das Thema Sicherheit von APEX-Anwendungen mir immerwieder über den Weg läuft, werde ich hier einige - mir nützlich erscheinende - Link zusammenfassen, die sich mit diesem Thema beschäftigen: Sichere Application Express-Anwendungen: Einige Tipps Von Niels de Bruijn, MT AG, Ratingen Schutz vor "SQL Injection": So bleibt Ihre APEX-Anwendung sicher! Mandantenfähige HTML DB-Anwendungen Mehr Sicherheit mit "Session State Security" Developing Secure Applications By David Peake ... ... weitere Einträge werden sicher noch folgen...

Langlaufende Prozesse in ApEx darstellen - Teil 1

Um während der Verarbeitung von Prozessen im Hintergrund den Anwender zu informieren, dass da noch was "am Laufen" ist gibt es verschiedene Möglichkeiten. Nach einiger Rechereche habe ich mich für den Anfang (daher Teil 1) dafür entschieden folgende Lösung umzusetzen: Während der Hintergrundverarbeitung für ein animiertes GIF (ähnlich der Sanduhr) mit entsprechendem Infotext angezeigt. (Sicher noch nicht informativ, aber besser als nichts.) Zusätzlich wird der ungeduldige Anwender vor sich selbst geschützt: Die Schaltfläche zum Starten des Hintergrundprozesses wird für die Dauer der Ausführung ausgeblendet. (Dadurch wird verhindert, dass der Prozess parallel erneut gestartet wird.) Umsetzung: 1) Die Region mit dem Startknopf mit einer ID versehen: button_region 2) Page-Header und -Footer anpassen: Header Text < script type="text/javascript"> < !-- function html_Submit_Progress(pThis){ $x_Show('AjaxLoading'); window.setTimeout('$s(...

DBMS_APPLICATION_INFO.SET_SESSION_LONGOPS

Für langlaufende Prozesse kann es hilfreich sein, entsprechende Informationen über den Prozessfortschritt in die entsprechende Oracle-View einzutragen. Dazu dient DBMS_APPLICATION_INFO.SET_SESSION_LONGOPS Oracle-Doku: http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28419/d_appinf.htm#i996999 Am konkreten Beispiel kann das so aussehen: procedure proc    (      p_A in number,      p_B in number    ) is    ...    -- für APP_INFO    rindex pls_integer := -1;    slno pls_integer; begin   ... -- APP_INFO dbms_application_info.set_session_longops(    RINDEX => rindex    ,SLNO => slno    ,OP_NAME => 'APEX: < Name des Paketes > '    ,SOFAR => 1    ,TOTALWORK => 7    ,target_desc => ' < Name der Prozedur ...

Oracle Launch 11gR2 in München

Einleitung / Verschiedenes 11gR2 XE: neue Express-Edition 11gR2 wird kommen (erst 2010) ASM Conig Assistent, neu intelligent DataPlacement Spaltenorientierte Speicherung nur als Option (HCC) mit Exadata2 mit Komprimierung 80% Platz sparen HCC = Hybrid Columnar Compression Neuheiten für den DBA Upgrade Manual - für Umstieg auf 11gR2 vorhanden neuer Installer erlaubt Response-File Erstellung (kostenpflichtige) Optionen nur noch, wenn EE ausgewählt wurde Test's für Upgrades sind bereitgestellt Sheduler shagent start -> eigene Agenten auf DB-Servern Job's auf fremden DB's laufen lassen File Watcher -> wartet auf Eintreffen einer Datei, als Event für DB-Job Email-Benachrichtigung Data-Pump alle Exp/Imp-Parameterdateien weiterverwendbar langfristig KEIN Exp mehr unterstützt Execute-Privileg für Directories Erlaubt unzip, dann Laden von Daten aus der DB heraus DB Vaul...

SQL: Vorsicht bei LAG / LEAD

Mit den Analytischen Funktionen von Oracle lassen sich elegant tolle Dinge lösen. Ein Bsp. ist LAG siehe auch Doku: http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/functions070.htm#SQLRF00652 Doch Vorsicht : LAG(spalte, 1) liefert den Nachfolger im ROWSET ! Das ist aber nicht immer der gesuchte Wert! Bei Lücken im Rowset (für ein Quartal gab es keine Werte) verschieben sich die mit LAG gelieferten Ergebnisse. Bsp: drop table fs_tst; create table fs_tst ( quartal number, hnr number, wert number ); insert into fs_tst values (20091, 10, 1); insert into fs_tst values (20092, 10, 2); -- Quartal 20093 fehlt insert into fs_tst values (20094, 10, 3); insert into fs_tst values (20091, 20, 4); insert into fs_tst values (20092, 20, 5); -- Quartal 20093 fehlt insert into fs_tst values (20094, 20, 6); insert into fs_tst values (20101, 10, 7); insert into fs_tst values (20102, 10, 8); insert into fs_tst values (20111, 10, 9); commit; select * from fs_tst; select quarta...

select mit with

Quelle: Oracle 10R2 Doku: http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_10002.htm#i2129904 Subquery Factoring : Example The following statement creates the query names dept_costs and avg_cost for the initial query block containing a join, and then uses the query names in the body of the main query. WITH dept_costs AS ( SELECT department_name, SUM(salary) dept_total FROM employees e, departments d WHERE e.department_id = d.department_id GROUP BY department_name), avg_cost AS ( SELECT SUM(dept_total)/COUNT(*) avg FROM dept_costs) SELECT * FROM dept_costs WHERE dept_total > (SELECT avg FROM avg_cost) ORDER BY department_name;