...und wenn dann x-Terabyte an Datafiles geschrieben sind und das Recovery der Datenbank durch ist, bricht das Duplicate mit einer Fehlermeldung ab. Alles was fehlt, ist das Öffnen der Datenbank.
Ein Restart des Duplicate hilft nicht, der ist zwar schnell, weil die vorhandenen Datafiles genutzt werden, bricht aber ebenfalls mit einer Fehlermeldung ab.
Was liegt näher, als das Duplicate manuell zu vollenden:
startup nomount
alter database mount
Fehler!!
=>ORA-19838: CANNOT USE THIS CONTROL FILE TO OPEN DATABASE
Also stimmt das Controlfile nicht. Erstellen wir eines. Das ist zwar aufwändig, aber machbar. Dazu sollte man die Namen der duplizierten Datafiles aus dem Dateiverzeichnis auslesen und mit dem Pfad in das Create Controlfile Statement einbauen.
Ganz wichtig hierbei ist, dass der Datenbankname mit SET gesetzt wird, sonst laufen Sie Gefahr, dass das Statement abgewiesen wird, weil in den Datafiles der falsche Datenbankname steht:
Das sollte dann grob so aussehen:
CREATE CONTROLFILE REUSE SET DATABASE "<newname>" RESETLOGS ARCHIVELOG
MAXLOGFILES 192
MAXLOGMEMBERS 3
MAXDATAFILES 1024
MAXINSTANCES 32
MAXLOGHISTORY 1168
LOGFILE ...
DATAFILE
+data/<newname>/datafile/SYSAUX.1261.1037108573,
+data/<newname>/datafile/SYSTEM.1250.1037108765,
+data/<newname>/datafile/TOOLS.1254.1037108579,
+data/<newname>/datafile/UNDOTBS1.1252.1037108765,
+data/<newname>/datafile/UNDOTBS2.1251.1037108765,
+data/<newname>/datafile/USERS.1253.1037108579,
+data/<newname>/datafile/xxxx.1256.1037108573
CHARACTER SET WE8MSWIN1252
;
Was jetzt noch passieren kann, ist, dass alte Datafiles in der Liste der Datafiles im Create Controlfile Statement enthalten sind.
Die Datenbank sollte man in den Nomount bringen und dann mit dem "Create Controlfile"-Befehl mounten:
startup nomount
alter database mount
Fehler!!
=> ORA-01159: file is not from same database as previous files - wrong database id
Da hilft nur Versuch und Irrtum und die so gemeldeten Dateien nach und nach aus dem Statement zu entfernen. Leider bricht der Create-Controlfile-Befehl ab, sobald ein falsches Datafile erkannt wird. Das "Aussortieren" der falschen Datafiles kann daher ein Geduldspiel werden, aber es lohnt sich.
Wenn der Befehl Create Controlfile geklappt hat, ist die Datenbank gemountet und muss mit alter database open resetlogs geöffnet werden und eventuell fehlende TEMP-Files müssen hinzugefügt werden.
Danach ist die Datenbank nutzbar.
Ernst Leber
Mitglied der DOAG Delegiertenversammlung Datenbank
ernst.leber@mt-ag.com
Bild von Devon Breen auf Pixabay


