Aufgabe: Produktionsdatenban RAC 10g (GPI) auf eine ASM Single Umgebung 10g (SPAREDB) restoren um im Fehlerfall eine Ersatzumgebung zur Verfügung zuhaben. Die Quelldatenbank ist eine RAC 10g DB mit OMF.
RAC Umgebung GPIDB Backup der RAC Umgebung erstellen, Backup auf Disk sichern
RAC Umgebung GPIDB Letzte Archive holen
connect target / SQL "alter system archive log current"; backup archivelog ALL tag "ARCHIVE_DISK" NOT BACKED UP 1 TIMES format '/export/home/oracle/GPI/backup-nfs/archive_%U'; backup current controlfile format '/export/home/oracle/GPI/backup-nfs/controlfile_aktuell.ora'; exit
RAC Umgebung GPIDB
sqlplus / AS sysdba CREATE pfile='/export/home/oracle/initGPI.ora' FROM spfile;
RAC Umgebung GPIDB Mit dieser Vorlage wird später auf der SPAREDB das Create Controlfile Script erzeugt.
sqlplus / AS sysdba ALTER DATABASE backup controlfile TO trace AS '/export/home/oracle/controlfile_trace_GPI.ora';
RAC Umgebung GPIDB
SELECT name FROM v$datafile;
RAC Umgebung GPIDB
Per scp oder NFS Mount die Daten auf die SPARE Maschine kopieren.
ASM Umgebung SPAREDB
Die initGPI.ora anpassen und die neue OMF Location (db_create_file_dest) einstellen!
vi initGPI.ora # wichtigeste anzupassende Parameter *.cluster_database=false *.db_recovery_file_dest='+GPI' *.db_create_file_dest='+GPI'
ASM Umgebung SPAREDB
Im Betriebssystem die Verzeichnisse für das Log der DB anlegen:
# User oracle mkdir -p /opt/oracle/admin/GPI/bdump mkdir -p /opt/oracle/admin/GPI/adump mkdir -p /opt/oracle/admin/GPI/cdump mkdir -p /opt/oracle/admin/GPI/udump
In der ASM Umgebung auf der ASM Platte die Verzeichnisse anlegen:
# ASM Umgebung asmcmd cd +GPI mkir GPI cd GPI mkdir controlfile mkdir datafile mkdir onlinelog
ASM Umgebung SPAREDB
# Umgebung GPI DB im 10g Home setzen sqlplus / as sysdba startup nomount pfile='/export/home/oracle/initGPI.ora'; exit
ASM Umgebung SPAREDB
# GPI DB Umgebung rman connect target / restore controlfile to '+GPI/gpi/controlfile/current.277.801931859' from '/ora_backup/control_aktuell.ora'; restore controlfile to '+GPI/gpi/controlfile/current.390.801931869' from '/ora_backup/control_aktuell.ora';
ASM Umgebung SPAREDB
# Umgebung GPI DB im 10g Home setzen sqlplus / as sysdba shutdown immediate exit
ASM Umgebung SPAREDB
# ASM Umgbung setzen asmcmd ls +GPI/gpi/controlfile current.277.802113799 current.390.802113791
ASM Umgebung SPAREDB
vi initGPI.ora
ASM Umgebung SPAREDB
# GPI 10g Umgebung sqlplus / as sysdba startup mount pfile='/export/home/oracle/initGPI.ora'; select name from v$controlfile; +GPI/gpi/controlfile/current.277.801931859 +GPI/gpi/controlfile/current.390.801931869 exit
ASM Umgebung SPAREDB
rman connect target / catalog start with '/ora_backup/'; # alte Backup einträge bereinigen run { crosscheck backup; crosscheck archivelog all; delete noprompt EXPIRED archivelog all; delete noprompt EXPIRED backup; } # restore mit set newname run { SET newname FOR datafile 1 to '+GPI'; SET newname FOR datafile 2 to '+GPI'; SET newname FOR datafile 3 to '+GPI'; SET newname FOR datafile 4 to '+GPI'; SET newname FOR datafile 5 to '+GPI'; SET newname FOR datafile 6 to '+GPI'; SET newname FOR datafile 7 to '+GPI'; SET newname FOR datafile 8 to '+GPI'; SET newname FOR datafile 9 to '+GPI'; SET newname FOR datafile 10 to '+GPI'; SET newname FOR datafile 11 to '+GPI/gpi/datafile/test_tbs_manuel.dbs'; restore database; }
ASM Umgebung SPAREDB
sqlplus / AS sysdba startup nomount pfile='/export/home/oracle/initGPIIP.ora'; exit
ASM Umgebung SPAREDB
# Umgebung auf ASM Home asmca ASMCMD> ls -l +GPIHM/GPIIP/datafile DATAFILE UNPROT COARSE DEC 15 17:00:00 Y SYSAUX.289.802114031 DATAFILE UNPROT COARSE DEC 15 17:00:00 Y SYSTEM.257.802114031 DATAFILE UNPROT COARSE DEC 15 17:00:00 Y TSY.260.802114365 DATAFILE UNPROT COARSE DEC 15 17:00:00 Y UNDOTBS1.324.802114223 DATAFILE UNPROT COARSE DEC 15 17:00:00 Y UNDOTBS2.393.802114269 DATAFILE UNPROT COARSE DEC 15 17:00:00 Y USERS.286.802114281
Namen merken.
ASM Umgebung SPAREDB
Mit den Namen aus der obigen Liste und der Vorlage aus dem Controlfile Trace der Datenbank
Ein creCreate Script für das Controlfile erstellen:
CREATE CONTROLFILE REUSE DATABASE "GPIIP" RESETLOGS ARCHIVELOG MAXLOGFILES 192 MAXLOGMEMBERS 3 MAXDATAFILES 1024 MAXINSTANCES 32 MAXLOGHISTORY 1168 LOGFILE GROUP 1 ( '+GPI/gpi/onlinelog/group_1.262.671385803', '+GPI/gpi/onlinelog/group_1.263.671385805', '+GPI/gpi/onlinelog/group_1.neu.ora' ) SIZE 251200K, GROUP 2 ( '+GPI/gpi/onlinelog/group_2.264.671385807', '+GPI/gpi/onlinelog/group_2.265.671385809' ) SIZE 251200K DATAFILE '+GPI/gpi/datafile/SYSTEM.257.802114031', '+GPI/gpi/datafile/UNDOTBS1.324.802114223', '+GPI/gpi/datafile/SYSAUX.289.802114031', '+GPI/gpi/datafile/USERS.286.802114281', '+GPI/gpi/datafile/UNDOTBS2.393.802114269', '+GPI/gpi/datafile/PDB.285.802114345', '+GPI/gpi/datafile/OLA.296.802114345', '+GPI/gpi/datafile/rip_test.03' CHARACTER SET UTF8 ;
Controlfile über das obige Script anlegen:
sqlplus / AS sysdba @makeGPICtrl.sql
ASM Umgebung SPAREDB
rman connect target / catalog start with '/ora_backup/'; recover database; # bis zum letzen Archive
RAC Umgebung GPIDB
In der Quell Datenbank in Object anlegen um später im Ziel zu prüfen ob auch alle Daten bis zu diesem Zeitpunkt auch da sind.
# DB Umgebung sqlplus / as sysdba create synonym system.LAST_ARCHIV_BEFORE_SHUTDOWN from dual; alter system archive log current; # auf zweiten Knoten anmelden # besser eins zu viel als einz zu wenig .-) connect sys@gpi2 as sysdba alter system archive log current;
RAC Umgebung GPIDB
rman connect target / SQL "alter system archive log current"; backup archivelog ALL tag "ARCHIVE_DISK" NOT BACKED UP 1 TIMES format '/export/home/oracle/GPI/backup-nfs/new_archive_%U'; exit # die neuen Backups auf die Spare Maschine kopieren scp new* oracle@gpi:ora_backup/
ASM Umgebung SPAREDB
rman connect target / catalog start with '/ora_backup/' recover database
ASM Umgebung SPAREDB
sqlplus / AS sysdba ALTER DATABASE ADD LOGFILE THREAD 2 GROUP 3 SIZE 251200K , GROUP 4 SIZE 251200K ;
ASM Umgebung SPAREDB
sqlplus / AS sysdba ALTER DATABASE OPEN RESETLOGS;
ASM Umgebung SPAREDB
ALTER TABLESPACE TEMP ADD TEMPFILE SIZE 3070M AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;
ASM Umgebung SPAREDB
ALTER DATABASE DISABLE THREAD 2; SELECT GROUP# FROM v$log WHERE thread#=2; GROUP# ---------- 3 4 ALTER SYSTEM CHECKPOINT; ALTER SYSTEM ARCHIVE LOG ALL; ALTER DATABASE DROP LOGFILE GROUP 3; ALTER DATABASE DROP LOGFILE GROUP 4;
ASM Umgebung SPAREDB
CREATE spfile FROM pfile='/export/home/oracle/initGPI.ora'; startup force