Wer sich die Datenbankanlage bei Oracle 12c genau ansieht erkennt, dass Skripte und Prozeduren ausgeführt werden, die zur Anlage der XML DB gehören.
Liest man im MOS nach, so findet man heraus, dass ab Version 12c die XML DB als integraler Bestandteil der Datenbank gesehen wird und immer angelegt wird.
Auch bei einer Migration wird sie hinzugefügt, wenn sie nicht schon vorher Bestandteil der DB war.
Sammlung (für mich) interessanter Informationen. Voraussichtlich sehr Oracle-lastig, mit Einschlägen aus der Fantasy und Rollenspielrichtung und Fotografie und Bildbearbeitung und ...
Dienstag, 12. November 2013
Oracle 12c - manuelle CDB-Anlage
Will man in Oracle eine CDB von Hand anlegen ohne den DBCA, so funktioniert das fast genau so wie eine "normale" DB.
Wichtig ist dabei beim Create Database die Erweiterung
Den Patch installiert man wie immer mittels "opatch apply" im Verzeichnis des ausgepackten Patches.
Wichtig ist dabei beim Create Database die Erweiterung
ENABLE PLUGGABLE DATABASE
zu verwenden.
Danach als SYSDBA das Skript
@?/rdbms/admin/catcdb.sql
ausführen.
Hier werden so bekannte Skripte wie
Hier werden so bekannte Skripte wie
@?/rdbms/admin/catalog.sql @?/rdbms/admin/catproc.sql
@?/sqlplus/admin/pupbld.sql
usw.
intern ausgeführt und die CDB-Fähigkeit eingerichtet.
Leider hat Oracle vergessen im ersten 12er Release dieses Skript mit auszuliefern.
In der MOS Note "MISSING FILE CATCDB.SQL IN $ORACLE_HOME/RDBMS/ADMIN in 12C RDBMS software (Doc ID 1575778.1)" wird das bestätigt und auf einen Patch 17316776 verwiesen der diese Dateien nachliefert.
Das macht der Patch auch ganz brav.
Den Patch installiert man wie immer mittels "opatch apply" im Verzeichnis des ausgepackten Patches.
Leider bekam ich beim Aufruf von catcdb.sql permantent Fehler in der Art:
Can't open perl script "{/opt/oracle/db/12.1/rdbms/admin/}catcon.pl": Datei oder Verzeichnis nicht gefunden
Da stimmt wohl irgendwas mit dem Syntax nicht - die geschweiften Klammern bleiben erhalten.
Wenn man die geschweiften Klammern entfernt und die schließende Klammer durch einen Punkt ersetzt funktioniert das Skript einwandfrei.
Aufpassen: es gibt einige Stellen im hinteren Bereich von Zeilen an denen der gleiche nicht funtkionierende Syntax genutzt wird.
z.B. bei hlpbld.sql
Aufpassen: es gibt einige Stellen im hinteren Bereich von Zeilen an denen der gleiche nicht funtkionierende Syntax genutzt wird.
z.B. bei hlpbld.sql
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.
"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]"
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]"
Abonnieren
Posts (Atom)