Oracle Datenbank kopieren (cold copy und control files generieren)
Freitag, 23. Oktober 2009 | Autor: Michael Zimmer
Eine Oracle DB zu kopieren ist schwer?
Nö – kleines Beispiel:
Die orginal DB wird heruntergefahren und die DB Files (Datafiles, Redologs) werden an eine neue Stelle kopiert. Dann erstellt man eine neue init$SID.ora Datei (kann man auch kopieren, aber die Einträge müssen sowohl vom Namen der DB, als auch vom neuen Ort angepasst werden). Jetzt erzeuge ich ein neues Password File:
orapwd file=<location> entries=10 password=<sollten sie sich merken>
Datenbank hochfahren und Skript ausführen:
sqlplus “/ as sysdba”
SQL>@create-db.sql
Das Skript könnte folgendermaßen aussehen:
STARTUP NOMOUNT
CREATE CONTROLFILE SET DATABASE “PWLTUA” RESETLOGS ARCHIVELOG
MAXLOGFILES 192
MAXLOGMEMBERS 3
MAXDATAFILES 1024
MAXINSTANCES 32
MAXLOGHISTORY 3403
LOGFILE
GROUP 1 ‘/oradata/ts/PWLTUA/redo1-1.log’ SIZE 50M,
GROUP 2 ‘/oradata/ts/PWLTUA/redo3-1.log’ SIZE 50M,
GROUP 3 ‘/oradata/ts/PWLTUA/redo5-1.log’ SIZE 50M
DATAFILE
‘/oradata/ts/PWLTUA/system01.dbf’,
‘/oradata/ts/PWLTUA/undotbs01.dbf’,
‘/oradata/ts/PWLTUA/plink_inq_01.dbf’,
‘/oradata/ts/PWLTUA/tools01.dbf’,
‘/oradata/ts/PWLTUA/undotbs02.dbf’,
‘/oradata/ts/PWLTUA/users01.dbf’
CHARACTER SET WE8ISO8859P1 ;
alter database open resetlogs ;
ALTER TABLESPACE TEMP ADD TEMPFILE ‘/oradata/ts/PWLTUA/temp01.dbf’ SIZE 62915379
2 REUSE AUTOEXTEND OFF;
Im ersten Teil werden die Control Files neu generiert. Die Tablespaces in der alten DB muss man sich natürlich vorher rausschreiben:
select file_name from dba_data_files;
listet sie alle auf.
Jetzt sollte man die DB stoppen und im Mount Status wieder öffnen und dann die DB-Id ändern:
SQL> shutdown immediate;
SQL> startup mount;
nid TARGET=sys/<passwort>@PWLTUA
Und zu guter Letzt noch die DB neu starten mit open resetlogs, ganz so wie es die Ausgabe von nid wünscht.
SQL> startup mount;
SQL> alter database open resetlogs
Und schon haben wir eine neue Kopie einer alten Datenbank.




