Blog-Rückblick 2014

Vielen Dank an die 29.000 Besucher, die in diesem Jahr das Durchbrechen der 100.000 Seitenaufrufe seit Start dieses Blogs ermöglicht haben! Bei einem Kommunikationskanal, bei dem die Leserschaft mir weitgehend verborgen bleibt, ist so eine Statistik ein großer Ansporn, in 2015 noch mehr zu bloggen. Dies ist verbunden mit dem Wunsch, mehr Feedback zu bekommen:

Liebe Leser, scheut Euch nicht, von der Kommentarfunktion Gebrauch zu machen oder auch einfach nur die Bewertungsfunktion unter den Artikeln zu nutzen. Eure Rückmeldungen, Korrekturen oder Anregungen sind mir wichtig!

Unten ist der Bericht zum Oraculix-Jahr 2014 in Zahlen verlinkt. Dem will ich noch ein paar wichtige Ereignisse aus meiner SIcht hinzufügen:

  • Neues Design zum Jahreswechsel: Das WordPress-Theme “Andreas09″ war etwas in die Jahre gekommen. Auch fand ich das dreispaltige Layout mit den vielen Widgets zu unruhig und unübersichtlich.
    Nun ist “Twenty Twelve” mit zwei Spalten angesagt, das nicht nur aufgeräumter wirkt sondern vor allem auch auf mobilen Geräten gut aussieht (Stichwort: “Responsive”).
  • Auflockerung durch Bilder: Die Themen dieses Blogs sind technisch und daher nüchtern. Eine Auswahl von Panoramen, die ich auf meinen Reisen fotografiert habe, soll dann wenigstens die Titelleiste und damit den Einstieg in die Artikel verschönern.
  • Werktags werden mittlerweile 100 bis 150 Artikel auf meinem Blog gelesen. Für so ein Nischenthema, dazu nur für den deutschsprachigen Raum, macht mich das schon ein kleines Bisschen stolz. ;-)

Für 2015 liegen schon zwei Artikelserien in der Pipeline, von denen eine gleich im Januar starten wird. Bis bald also!

Klicke hier um den vollständigen Bericht zu sehen.

Enterprise Manager: Ungültiges Zertifikat kann in Firefox nicht mehr akzeptiert werden

Vor einigen Tagen hat Mozilla den Firefox-Browser auf die Version 31 angehoben.
Seither ging bei mir die Verbindung zum Grid Control mit Firefox nicht mehr, Mit Chrom[e|ium] hingegen schon. Zumindest ist es in Chrome noch möglich, die Warnung vor dem nicht vertrauenswürdigen Zertifikat zu überspringen.

Mein deutschsprachiger Firefox meldet folgenden Fehler:

Fehler: Gesicherte Verbindung fehlgeschlagen

Ein Fehler ist während einer Verbindung mit xxxxxxxxxxxx aufgetreten.

Das Aussteller-Zertifikat ist ungültig.

(Fehlercode: sec_error_ca_cert_invalid)

Da bislang im Netz noch wenig Ergebnisse hierzu zu finden sind (jedenfalls bei den Suchbegriffen, die mir spontan einfielen), beschreibe ich hier kurz eine mögliche Lösung, wie sie auch in der Oracle Note 1912289.1 zu finden ist:

Edit vom 29.01.2015: Der Bug ist mittlerweile behoben. Es reicht also, Firefox zu aktualisieren.

Dieser Workaround funktioniert ab Firefox 33.1 nicht mehr! Siehe Kommentar weiter unten.

  1. In der Adressleiste “about:config” eingeben.
  2. Die Warnung mit dem Button akzeptieren.
  3. In der Suchleiste “security.use_mozillapkix_verification” eingeben.
  4. Doppelklick auf die Ergebniszeile stellt den Wert dieses Parameters von “true” auf “false” um.
  5. Enterprise Manager erneut aufrufen.

Hintergrund

Mozilla hat mit Firefox 31 die neue Library “mozilla::pkix” zum Check der SSL-Zertifikate eingeführt. Diese Library stuft aber offensichtlich alle selbst signierten Zertifikate als “nicht vertrauenswürdig” ein und gestattet kein manuelles Übergehen. Dies ist als Bug 1042889 bei Mozilla in Bearbeitung.

Normalerweise wird bei der Installation des OEM ein SSL-Zertifikat automatisch generiert und eben auch selbst (durch den Installer) signiert. Genau das bereitet der neuen Library aber derzeit Probleme.

Das Abschalten der neuen Library ist natürlich keine schöne Lösung und sollte wieder rückgängig gemacht werden, wenn der Bug behoben ist. Alternativ könnte man auch ein Zertifikat einer vertrauenswürdigen CA (kaufen und) importieren. Wie das geht, ist in der Oracle Note 1367988.1 beschrieben.

SYSDATE in SQL und PL/SQL

Heute fühle ich mich genötigt, ein Thema anzusprechen, das zwar ein Grundlagenthema ist, das aber immer wieder gerne in Vergessenheit gerät. ;-)

Anlass ist ein Fund in einer Produktionsumgebung, in der eine Überlastung der CPU bei sehr hoher Anzahl an SQL-Ausführungen zu beobachten war. Die Umgebung basiert sehr stark auf PL/SQL, wobei häufig verwendete SQL-Abfragen gerne in einer Function gekapselt und dann aus SQL heraus aufgerufen werden. Weiterlesen

PL/SQL Injection in Oracle 12c

David Litchfield, der bereits andere Injection-Lücken in Oracle gefunden hatte (s. meine anderen Artikel der Kategorie “Sicherheit”), hat wieder zugeschlagen und eine Injection-Methode unter 12c aufgedeckt:
http://www.davidlitchfield.com/Exploiting_PLSQL_Injection_on_Oracle_12c.pdf

Sehr kurze Zusammenfassung des Dokuments:

  • Ein User mit Execute-Recht auf DBMS_SQL und DBMS_JAVA_TEST kann damit SQL Injections durchführen.
  • Der Entzug von Execute auf DBMS_JAVA_TEST und DBMS_JAVA wirkt dem entgegen.
  • Wenn Java in der DB nicht benötigt wird, sollten diese Packages gleich ganz deinstalliert werden, um die Angriffsfläche zu verringern.

Oracle 12c / Java7: setEndToEndMetrics() deprecated

Dies ist eine kurze Aktualisierung zu meinem früheren Artikel “DBMS_SESSION: Anwender und Sessions mehrschichtiger Anwendungen in der DB identifizieren“, der sich auf Oracle 11.2 nebst der damals unterstützten JDBC-Version bezog.

Die Oracle 12c JDBC-Treiber unterstützen JDBC 4.1 über das JDK 7 und damit auch die JDBC DMS Metrics, wenn entsprechende Treiber-Packages (z.B. ojdbc7dms.jar) verwendet werden. Die in meinem damaligen Beispiel verwendete Methode setEndToEndMetrics schließt allerdings die wechselseitige Verwendung mit DMS-Methoden aus. Daher empfiehlt es sich auf die neue Methode setClientInfo umzustellen. Ein Codefragment mit der neuen Methode kann dann so aussehen:

...
Connection conn = DriverManager.getConnection(myUrl, myUsername, myPassword);
conn.setClientInfo("E2E_CONTEXT.DBOP", "MeinTag");
Statement stmt = conn.createStatement();
// DBOP-Tag wird mit dem naechsten DB-Aufruf gesetzt:
stmt.execute("select 1 from dual");
...

Dem Nachteil, dass schon wieder eine andere Methode als bisher verwendet werden soll, steht der Vorteil gegenüber, dass man sich mit DMS Metrics in einem standardisierten Umfeld bewegt und auch nicht mehr zwingend eine OracleConnection verwenden muss; eine einfache Connection reicht aus.

WITH-Clause Reloaded: Hierarchie und Rekursion

Vor ein paar Jahren hatte ich schon einmal über die “WITH-Klausel” geschrieben, als sie noch ein relativ unbekanntes SQL-Feature war.

Mittlerweile hat sich auch die Oracle-Welt weiter gedreht, und es sind neue Möglichkeiten seit 11g hinzugekommen — z.T. Features, die mit dem ISO-Standard SQL1999 schon etwa 10 Jahre zuvor verabschiedet wurden.

Zeit also, sich einmal wieder mit der Syntax der WITH-Clause zu beschäftigen und sie mit Oracles bisherigen, proprietären Lösungen zu vergleichen!

Weiterlesen

sqlplus, ezconnect, ORA-12504 und kein Passwort

Aus der Kategorie “Heute dazugelernt”: Beim Versuch, mittels EZCONNECT (s. “Easy Connect Naming Method“) unter Verwendung eines Wallets eine Verbindung aufzubauen (um kein Passwort auf der Kommandozeile/im Script zu hinterlassen), wurde das stets mit einem “ORA-12504″ quittiert.

[oracle@myorabox bin]$ sqlplus scott@localhost/orcl

SQL*Plus: Release 11.2.0.3.0 Production on Mon Feb 24 16:19:14 2014

Copyright (c) 1982, 2011, Oracle. All rights reserved.

ERROR:
ORA-12504: TNS:listener was not given the SERVICE_NAME in CONNECT_DATA

Seltsam — der Service “orcl” ist doch angegeben?! Werfen wir mal einen Blick ins listener.log:

(CONNECT_DATA=(SERVICE_NAME=)(CID=(PROGRAM=sqlplus)(HOST=myorabox)(USER=oracle))) * establish * 12504

Tatsache — der “SERVICE_NAME” ist leer.

Interessanterweise findet sich bei MOS nichts dazu, aber Mark Williams hat das Problem schon mal gelöst und netterweise gebloggt! Offenbar “verheddert” sich SQL*Plus am fehlenden “/” vor dem nicht übergebenen Passwort; Wird der Connect String jedoch in Anführungszeichen gesetzt, dann geht’s!

sqlplus scott@\"localhost/orcl\"

SQL*Plus: Release 11.2.0.3.0 Production on Mon Feb 24 16:31:38 2014

Copyright (c) 1982, 2011, Oracle. All rights reserved.

Enter password:

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options