2013-02-08

Fehler beim Start des integrierten WebLogic Servers vom JDeveloper unter Windows 7

Ich hatte bereits in einem vorherigen Post eine Möglichkeit beschrieben, wie vorgegangen werden kann, falls sich der lokale WebLogic Server unter Windows 7 nicht mehr vom JDeveloper aus starten lässt. Die ursprüngliche Lösung hatte den Nachteil, dass der Zwischenschritt über das Deployment der .ear Datei nötig war.

Eine weitere Lösungsmöglichkeit stellt das setzen einer neuen JDeveloper Home Variable dar. Dies kann ganz einfach über zwei Wege gemacht werden.

  1.  Setzen der Systemvariable JDEV_USER_DIR:
    Start -> Rechtsklick Computer -> Eigenschaften
    ErweiterteSystemeinstellungen im linken Bereich
     Umgebungsvariablen...
     Im Bereich Benutzervariablen -> Neu...

    Wert der Variablen entspricht dem Pfad zum gewünschten Verzeichnis (um den Fehler zu umgehen sollte ein Pfad ohne Leerzeichen und Sonderzeichen gewählt werden)


  2. Starten des JDeveloper Mittels Kommandozeilenparameter:

    Rechtsklick auf Verknüpfung -> Eigenschaften

    Einfügen des Parameters -J -Dide.user.dir="Pfad zum gewünschten Verzeichnis"

Der Vorteil der unteren Variante ist sicherlich, dass die Variable nicht für alle installierten JDeveloper Versionen allgemeingültig ist, sondern nur eine Instanz abdeckt, während erstere Variante eine Variable schreibt, die im Standardfall von allen JDeveloper Versionen ausgelesen wird. Will man dies unterdrücken, kann in der JDeveloper boot Datei ($JDEV_HOME/jdev/bin/jdev.boot) der Wert entsprechend geändert werden.

In dem nun gesetzten User Dir wird eine neue Instanz des integrierten WLS installiert, welcher sich nun auch wieder über den JDeveloper starten lassen sollte.

2013-02-05

Data Pump Export mit Flashback-Zeit über Enterprise Manager

Im Database Control einer 11.2.0.2 Datenbank habe ich versucht einen lesekonsistenten Data Pump Export auf eine Flashback-Zeit als Job zu konfigurieren. Dabei bin ich auf zwei Probleme getroffen:

  1. Bei der Auswahl der Flashback-Zeit kann keine volle Stunde gewählt werden, da als Minuten 5 bis 60 in Fünferschritten angeboten werden. 00 Minuten fehlen und 60 Minuten ist ja Unsinn bei einer Zeitangabe. Siehe auch folgenden Bildschirmabzug:
    OEM-DP-Job-Fehler
  2. Wenn eine sinnvolle Flashback-Zeit (z.B. 11.03.2013 15:05 Uhr) angegeben ist, dann führt das Weiterleiten des Jobs zum Fehler ORA-39001, ORA-39150, ORA-08186:
     OEM-DP-Job-Fehler2

Den ersten Fehler kann ich in anderen Installationen (10gR2, 11gR1 und 11gR2) nicht nachvollziehen. Das kann also eventuell an einer ungünstigen Kombination der NLS Parameter liegen.

Den zweiten Fehler habe ich auch in anderen Installationen, so auch beim Database Control einer 10.2.0.3 Datenbank als auch im Grid Control 11g bei einer 11.1.0.7 und einer 11.2.0.1 Datenbank. Das scheint also ein Bug zu sein.
Der eigentliche Fehler ORA-08186 resultiert aus dem generierten Data Pump Script, speziell aus der folgenden Zeile:
  dbms_datapump.set_parameter(handle => h1, name => 'FLASHBACK_TIME', value => '11-03-13 15.05');
Es wird implizite und keine explizite Typkonvertierung durchgeführt. Das Format der Datum/Zeitangabe, endspricht nicht dem Default. Dieser kann ermittelt werden mit dem folgenden Select (siehe MOS Note ID 464132.1):
  SELECT * FROM V$NLS_PARAMETERS where parameter = 'NLS_TIMESTAMP_FORMAT';
In meinem Fall ist das Ergebnis:
  PARAMETER VALUE
  NLS_TIMESTAMP_FORMAT DD.MM.RR HH24:MI:SSXFF

Das Format entspricht der deutschen Territory Einstellung. Diese wird aber weder im Database Control noch im Grid Control berücksichtigt.

Wenn man den Data Pump Export mit Flashback-Zeitpunkt über den Enterprise Manager machen möchte, bleibt also nichts anderes übrig als einen manuellen SQL-Skript Job anzulegen und darin dann entweder den Zeitpunkt im zum Default korrekten Format anzugeben oder aber eine explizite Typkonvertierung durchzuführen, z.B.:
  dbms_datapump.set_parameter(handle => h1, name => 'FLASHBACK_TIME', value => '11.03.13 15:00:00');

Ich hoffe diese Information hilft anderen bei der Problemanalyse.