Posts

Es werden Posts vom Dezember, 2009 angezeigt.

APEX und Sicherheit - Proxy-Schema

Ein weiterer Schritt zu sicheren APEX-Anwendungen ist die Nutzung eines Proxy-Schema's: Während die komplette Anwendung im Schema A liegt, arbeitet die APEX-Anwendung mit dem leeren Schema B. User B hat nur create session und create synonyme Recht. Hier werden zu den relevanten Objekten des Schema A Synonyme erstellt. Per Objekt-Berechtigung kann B auf die Objekte in Schema A zugreifen. Wurde die APEX-Anwendung zuvor im Schema A entwickelt und soll nun nach B umgezogen werden, so ist: die Anwendung zu exportieren ein neuer Workspace (WS) für Schema B zu erstellen in den neuen WS die Anwendung importieren anschliessend ist auf allen Seiten mit folgenden Prozessen der owner zu ändern : process row fetch row ApplyMRU Anschliessend sollte alles wie gewünscht funktionieren.

Error Logging im DML, DBMS_ERRLOG, ERR$

Mindestend ab Version 10g erlaubt Oracle das Loggen von Fehlern in einer separaten Tabelle - sehr nützlich für Fehleranalyse: Vorgehen: 1) Zur entsprechenden Tabelle die ERR$-Tabelle anlegen: exec dbms_errlog.create_error_log( <Tbl>); 2) Das entsprechende Statement mit dem Zusatz LOG ERRORS REJECT LIMIT UNLIMITED; aufrufen. 3) Nach dem Lauf evtl. Prüfen: select * from ERR$_<Tbl> ; Quellen: http://www.psoug.org/reference/dbms_errlog.html http://askanantha.blogspot.com/2008/06/error-logging-using-dbmserrlog.html http://download.oracle.com/docs/cd/B19306_01/server.102/b14223/transform.htm#sthref786 Wichtig: Die ERR$-Tabelle will gepflegt werden. Gerade bei LIMIT UNLIMITED kann die Tabelle u.U. schnell sehr groß werden! U.U. VOR dem Lauf diese Tabelle truncaten, damit sofort die Meldungen des aktuellen Laufs analysiert werden.

Die drei Schreibweisen in APEX

Heute wieder ein Beitrag aus der Reihe: "Zum tausendsten Mal gesucht" Notation in APEX: APP_USER Syntax Bind variable -  :APP_USER PL/SQL -   V('APP_USER') Substitution string -  &APP_USER.

Neues im Toad 10

Wichtigste Neuerungen in der 10er Version des Toad: - Erweiterung der ER-Diagramme - Script Manager -> paralleler Zugriff auf mehrer Datenbanken - Automation Designer -> weitere Details: http://www.toadworld.com/Portals/0/ToadTechPapers/Toad%20for%20Oracle%20AppDesigner.pdf - Search Bar - braucht heute jedes Programm ;-) - neues DataGrid - mit Gruppierungsfunktion - Unicode-Support weitere Details zur neuen Version finden sich hier: http://www.quest.com/Quest_Site_Assets/TechnicalBriefs/TBD-Toad4Oracle10-US-AG.pdf Hinweis: Zur neuem Version gibt es bereits auch einen Patch.

Test Data Modeler (SDDM)

Als eigenständiges Tool neben dem SQL Developer wurde im Juli der SQL Developer Data Modeler veröffentlicht (siehe auch http://www.oracle.com/technology/products/database/datamodeler/index.html ). Ein erster Test hat folgende Ergebnisse gebracht: 1. Test: * Logisches Modell mit 2 Dimensionen (DIM_LE, DIM_PAT) und 1 Fakt-Tabelle (FACT_VO) neu erstellen -> Problem: FK über Quartal+LE_ID und Quartal+PAT_ID nicht möglich (es wird immer eine zusätzliche Spalte Quartal1 an FACT_VO angefügt). 2. Test * relationales Modell mit 2 Dimensionen (DIM_LE, DIM_PAT) und 1 Fakt-Tabelle (FACT_VO) neu gebaut - FK-Beziehung nun möglich + Naming-Standards können manuell angewendet werden + eigene Domain aufbauen + Modell als XML-File z.B. in svn verwalten + Typ einer Tabelle (Dimension, Fact) kennzeichenbar -> farbliche Unterscheidung * Abkürzungen im Tabellennamen für sinnvolle FK-Namen wichtig * physikal. Modell erstellen -> Einstellung physikal Parameter (Partitionen, IOT etc.

DROP TABLE IF EXISTS (or SEQUENCE or INDEX or COLUMN) - ohne ORA- Fehler

Scripting: Leider habe ich keine SQL-Möglichkeit gefunden ORA-00942 Fehler bei DROP TABLE im Script zu vermeiden: Die Tabelle soll durch DROP ja gelöscht werden und wenn diese nicht existiert (= ORA-00942 Table does not exists) ist das eigentlich kein Fehler. meine Lösung: begin execute immediate'   DROP TABLE list_pzn   '; exception when others then if sqlcode = -1418 then null; else raise; end if; -- Index   --exception when others then if sqlcode = -2289 then null; else raise; end if; -- Sequenz     --exception when others then if sqlcode = -942 then null; else raise; end if; -- Tabelle --exception when others then if sqlcode = -2443 then null; else raise; end if; -- Constraint  --exception when others then if sqlcode = -1918 then null; else raise; end if; -- User  --exception when others then if sqlcode = -4043 then null; else raise; end if; --Type --exception when others then if sqlcode = -904 then null; else raise; end if; -- Spalte   end; /  Nachteil