Donnerstag, 5. September 2013

Fehleranalyse für ANS0220E (RC400) bei Tivoli Data Protection for Oracle

TDPO hat die unangenehme Eigenschaft bei Fehlern in der Konfiguration nur eine einzige Meldung zu kennen:
"ANS0220E (RC400)  An invalid option was found during option parsing."
Aus dieser Meldung ist weder zu entnehmen was, noch wo der Fehler liegt.

Üblicherweise hat sich ein Tipfehler in einem der Pfade in der TDPO.OPT Datei bzw. DSM.SYS eingeschlichen oder die Berechtigungen auf die Verzeichnisse sind falsch.

$> ./tdpoconf password -tdpo_optfile=<tdpo.opt>
ANS0220E (RC400)  An invalid option was found during option parsing.


IBM gibt in einer Support-Note jedoch den Tip, man möge das DSMC-Programm aufrufen, dieses würde anständige Fehlermeldungen bringen.
Zuvor muss man noch die DSMC-Konfigdataei in der Umgebungsvariable DSM_CONFIG hinterlgen.
Diese Konfigdatei ist die TDPO.OPT-Datei die man bie TDPOCONFIG mit -tdpo_optfile angibt.

http://www-01.ibm.com/support/docview.wss?uid=swg21504500

$> export DSM_CONFIG=<tdpo.opt>
$> dsmc
ANS1036S The option 'ERRORLOGRED' or the value supplied for it is not valid. It was found in options file '/opt/tivoli/tsm/client/ba/bin/dsm.sys'
         at line number: 251
         The complete entry: '   ERRORLOGRED          30 D'

ANS1038S Invalid option specified


FUNKTIONIERT!

Der mit dem normalen Auge praktisch nicht zu findende Schreibfehler (aus ERRORLOGRET mach ERRORLOGRED) wird im Klartext angezeigt.

Samstag, 16. Februar 2013

Oracle Datapump Export mit konsistenten Daten und Zeitereise-Exports erzeugen

Beim klassichen Oracle Export Tool exp gibt es den Parameter CONSISTENT=YES um einen über alle Tabellen konsistenten Datenbank Export zu erhalten.

Dieser konsistente Export wird über die für Oracle ganz normale transaktionale Lesekonsistenz mittels UNDO bzw. Before-Images gelöst.

Zu beachten ist, dass man bei sehr großen bzw. lang laufenden die Undo Retention und den Undo Tablespace entsprechen groß bemisst.

Im neuen Datapump Export Tool expdp Tool ist es grundsätzlich auch möglich konsistente Exports zu erzeugen, man muss nur wissen wie es geht, da der native exdp-Syntax nicht selbsterklärend ist.
Datapump realisiert die Lesekonsistenz über die Oracle Flashback Features.
(Diese gehen zwar auch wieder auf Undo, heissen aber viel toller und haben eine eigene API und sind flexibler)

Mit dem Parameter FLASHBACK_TIME=SYSTIMESTAMP bringt man nun auch expdp dazu jede Datenzeile auf genau ein und den selben lesekonsisten Zeitpunkt zum Beginn des Exports zu beziehen

Beispiel:
expdp exdptst/exdptst dumpfile=expdptst.dmp logfile=expdptst.log directory=exp_dp_dir FLASHBACK_TIME=SYSTIMESTAMP

hier ein Full-Export mit der vollen Escape-Orgie wie man sie in der Realität benötigt:
 
expdp \"\/ as sysdba\" dumpfile=expdptst.dmp logfile=expdptst.log directory=exp_dp_dir full=yes FLASHBACK_TIME=\"TO_TIMESTAMP\(TO_CHAR\(SYSDATE,\'YYYY-MM-DD HH24:MI:SS\'\),\'YYYY-MM-DD HH24:MI:SS\'\)\"


Das Escapen ist notwendig, damit die Shell nicht Zeichen selbständig interpretiert.
Der etwas umständliche Syntax mit TO_TIMESTAMP(TO_CHAR(SYSDATE... verhindert, dass die jeweiligen NLS-Einstellungen eine Ausführung verhindern.

Nun kann man das ganze auch einfacher haben, indem man die im relativ neuen Kompatibilitätsmodus wieder CONSISTENT=YES nutzt, was intern auf FLASHBACK_SCN zum Startzeitpunkt des Backups umgewandelt wird.
Das ist aber nicht der native Syntax und funktioniert mit den ersten Versionen von Datapump noch nicht.

Jetzt kommt der eigentlich spannende Teil!

Man kann selbstverständlich nicht nur SYSTIMESTAMP als Wert angeben, sondern jeden beliebigen gültigen Flashback-Zeitpunkt und somit Daten auch aus der Vergangenheit exportieren - sehr praktisch, wenn man Daten retten will.

Auch hier gilt wieder: man muss genug Undo Retention und Tablespace eingestellt haben.

Beispiel:
expdp exdptst/exdptst dumpfile=expdptst2.dmp logfile=expdptst.log directory=EXPDP_TEST_DIR flashback_time=\"TO_TIMESTAMP\(\'2013-02-08 15:50:00\', \'YYYY-MM-DD HH24:MI:SS\'\)\"

Die vielen Backslashes sind dem Escap-Syntax der der Shell geschuldet, die gerne die Zeichen die für sie ansonsten eine Bedeutung haben escaped haben will.

Als Belohnung bekommt man:

Export: Release 11.2.0.2.0 - Production on Fri Feb 8 21:09:14 2013

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Starting "EXDPTST"."SYS_EXPORT_SCHEMA_01":  exdptst/******** dumpfile=expdptst2.dmp logfile=expdptst.log directory=EXPDP_TEST_DIR flashback_time="TO_TIMESTAMP('2013-02-08 15:50:00', 'YYYY-MM-DD HH24:MI:SS')"
Estimate in progress using BLOCKS method...
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 0 KB
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/TABLE/COMMENT
. . exported "EXDPTST"."EXDPTST"                             0 KB       0 rows
Master table "EXDPTST"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded
******************************************************************************
Dump file set for EXDPTST.SYS_EXPORT_SCHEMA_01 is:
  /export/home/oracle/expdptst2.dmp
Job "EXDPTST"."SYS_EXPORT_SCHEMA_01" successfully completed at 21:09:53




Daten wurden aus der Vergangenheit exportiert (im Testcase absichtlich leer).

Als Geschwister Parameter von FLASHBACK_TIME gibt es auch noch
FLASHBACK_SCN, hier kann man eine gültige SCN angeben auf die sich das Flashback bezieht - intern wird sowieso jede Zeit in eine SCN umgewandelt.

PS:
Die Meldung
FLASHBACK automatically enabled to preserve database integrity
darf im im Übrigen nicht so interpretiert werden, dass man nun automatisch einen konsistenten Export erhält. Sie ist nur ein Hinweis, dass für manche Tabellen spezielle SCNs für Replikationszwecke eingebaut werden.
Das hat aber nichts mit dem oben beschriebenen konsistenten Backup zu tun.
Siehe auch MOS-Note "Expdp Message "FLASHBACK automatically enabled" Does Not Guarantee Export Consistency [ID 377218.1]"

Mittwoch, 28. November 2012

Oracle 9i und "/ as SYSDBA"

Lange ist es her seitdem Oracle 9i aktuell war.
Was nicht bedeutet, dass es nicht noch genug Datenbanken gibt, die auf dieser Version laufen.

Sollte das beliebte

sqlplus / as sysdba

nicht funtkionieren, sondern mit dem Hilfetext beantwortet werden, so kann es daran liegen, dass man unter Oracle 9i Anführungszeichen benutzen muss um "/ as SYSDBA" einzuklammern.

sqlplus "/ as SYSBA"

funktioniert einwandfrei.

Es ist doch erstaunlich, was man alles mal ganz selbstverständlich wusste und nun vergesse hat :-)



Donnerstag, 8. November 2012

Shell automatisch an Änderung der Terminal-Größe anpassen

Greift man auf ein Unix-System über ein Terminal-Programm wie zum Beispiel PuTTY zu, so kann man sehr leicht die Größe des Ausgabefensters mit der Maus verändern.
Hat man nach einer Größenänderung ein seltsames Verhalten in der letzten Zeile, wenn über deren Ende hinaus geschrieben wird, so hat die Shell die Änderung sehr wahrscheinlich nicht mitbekommen.

In der BASH reicht es, wenn man den Befehl

shopt -s checkwinsize

aufruft um die Shell auf Größenänderungen reagieren zu lassen.

Will man diesen Befehl immer aktiv haben, so ist es am einfachsten, wenn man diese in die .profile oder .bash_rc einträgt.


Mittwoch, 7. November 2012

Oracle Installer Abbruch mit: Refer associated stacktrace #oracle.install.commons.util.exception.DefaultErrorAdvisor:35


Oracle Silent Installation bricht mit folgender Meldung im Installer-Log ab:


SEVERE: [FATAL] <hostname>: <hostname>.
Refer associated stacktrace #oracle.install.commons.util.exception.DefaultErrorAdvisor:35
INFO: Advice is ABORT
SEVERE: Unconditional Exit
INFO: Adding ExitStatus FAILURE to the exit status set
INFO: Finding the most appropriate exit status for the current application
INFO: Exit Status is -1
INFO: Shutdown Oracle Database 11g Release 2 Installer

anstelle von <hostname> stand selbstverständlich der reale Hostname

Betriessystem: Solaris 10
Oracle Version: 11gR2

Lösung:
Der eigene Hostname konnte nicht in der /etc/hosts aufgelöst werden wegen eines Tippfehlers - nach Bereinigung des Tippfehlers war eine Installation wie erwartet möglich.



Sonntag, 28. Oktober 2012

Fritz Box zum Mitschneiden von Netzwerkverkehr verwenden

Die Fritz Box kann auch zum Mitschnitt von Netzwerk-Datenverkehr verwendet werden.

Hierzu muss man auf die spezielle URL http://fritz.box//html/capture.html gehen und sich anmelden.

Dort kann man einen Netzwerk-Trace im Wireshark Format erzeugen lassen.

Windows Patch KB 2656351 und KB 2600217 werden immer wieder zur Installation aufgeführt

Windows meldet die Patches KB 2656351 und KB 2600217 permanent als wichtig und noch zu installierend.

Es handelt sich um Patches für das .Net-Framework.

Das Framework selbst scheint noch einwandfrei zu funktioneren, aber scheinbar sind irgendwelche Rahmenbedingungen für den Patch nicht mehr so, dass er sauber installert und dies auch entsprechend einträgt.

Ein Eintrag bei Microsoft bringt einen auf die richtige Lösung:
Das Microsoft Dot-Net-Cleanup-Tool herunterladen (dotnetfx_cleanup_tool.zip) und entpacken
Mit dem Cleanup-Tool die Dot-Net Frameworks löschen lassen
Windows Update aufrufen und die dort vorgeschlagenen Komponenten nachinstallieren lassen

Mir hat es geholfen.

Interessant ist auch ein Hintergrundartikel bei Tecchannel über das Cleanup-Tool.