Posts

Es werden Posts vom Oktober, 2009 angezeigt.

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(&qu

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 > ' ); ... RINDEX und SLNO - sind intern gebrauchte Werte siehe Doku. OP_NAME - beschreibt die Aktion -> zu sehen z.B. auf der long-

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;

OID (Objekt-Identifikatoren) beim DIMDI

Erläuterungen zur Systematik der OID finden sich beim DIMI Quelle: http://www.dimdi.de/static/de/ehealth/oid/index.htm Die OID-Suche findet sich unter http://www.dimdi.de/dynamic/de/ehealth/oid/verzeichnis.html Datenobjekte für effiziente Software kommunikation in der Telematik Beim standardisierten Austausch von Gesundheitsinformationen ist es notwendig, Objekte und Nachrichten eindeutig zu bezeichnen. Objekt-Identifikatoren ( OID ) sind Zahlenketten zur Kennzeichnung dieser Objekte und Nachrichten. Objekte sind dabei Informationseinheiten wie Institutionen, Klassifikationen, Nachrichten, Dokumente oder Tabellen. Beispiel: Mit der Klassifikation ICD -10- GM Version 2006 kann die Grippe durch nachgewiesene Vogelgrippe-Viren mit dem Kode J09 in XML - Technologie wie folgt dargestellt werden: < value code ="J09" codeSystem ="1.2.276.0.76.5.311"/> Sie können diese OID für den standardisierten Datenaustausch zwischen Software systemen nutzen und dadurch