Benutzer-Werkzeuge

Webseiten-Werkzeuge


dba:recover_omf_db_asm_rac

Restore einer RAC Datenbank (Oracle Managed File OMF im Einsatz ) in einer Single ASM Umgebung mit geänderten Diskgroup Namen

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.

  1. Backup RAC Umgebung erstellen
  2. Letze Archive sichern und aktuelles Controlfile sichern
  3. Trace vom SPFile als Vorlage für die Restore init.ora erstellen
  4. Trace vom Controlfile als Vorlage für das Neuanlegen des Controlfiles erzeugen
  5. Spool aus v$datafile für die Namen der Datendateien
  6. Backup auf ASM Umgebung (SPAREDB) kopieren
  7. Restore init.ora auf SPAREDB erstellen
  8. Verzeichnisse auf der ASM Disk anlegen
  9. Instance mit nomount starten
  10. Controlfiles zurücksichern
  11. Instance stoppen
  12. Mit asmcmd die neuen Controlfile Namen ermitteln
  13. Restore init.ora auf neue Controlfile Namen anpassen
  14. Instance im Mount modus starten
  15. Rman Datenbank mit „set NewName“ zurücksichern
  16. Instance stoppen und mit nomount starten
  17. Mit asmcmd die Name der neuen Datendateien ermitteln
  18. Create Controlfile Script anlegen
  19. Backups mit Rman erneut katalogisieren und Datenbank recovern
  20. Marker in RAC DB setzen
  21. Backup der Archive der RAC Datenbank und kopieren auf SPAREDB
  22. Archive mit Rman erneut katalogisieren und Datenbank recovern
  23. Logfiles vom Thread 2 wieder anlegen
  24. Datenbank mit Reset Logs öffnen
  25. Temp File anlegen
  26. Thread 2 disablen, bei Bedarf Logs löschen
  27. Spfile erzeugen

Backup RAC Umgebung erstellen

RAC Umgebung GPIDB Backup der RAC Umgebung erstellen, Backup auf Disk sichern

Letze Archive sichern und aktuelles Controlfile 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

Trace vom SPFile als Vorlage für die Restore init.ora erstellen

RAC Umgebung GPIDB

sqlplus / AS sysdba
CREATE pfile='/export/home/oracle/initGPI.ora' FROM spfile;

Trace vom Controlfile als Vorlage für das Neuanlegen des Controlfiles erzeugen

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';

Spool aus v$datafile für die Namen der Datendateien

RAC Umgebung GPIDB

 SELECT name FROM v$datafile;

Backup auf ASM Umgebung (SPAREDB) kopieren

RAC Umgebung GPIDB

Per scp oder NFS Mount die Daten auf die SPARE Maschine kopieren.

Restore init.ora auf SPAREDB erstellen

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'

Verzeichnisse auf der ASM Disk und im Betriebsystem anlegen

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

Instance mit nomount starten

ASM Umgebung SPAREDB

# Umgebung GPI DB im 10g Home setzen
sqlplus / as sysdba
 
startup nomount pfile='/export/home/oracle/initGPI.ora';
exit

Controlfiles zurücksichern

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';

Instance stoppen

ASM Umgebung SPAREDB

# Umgebung GPI DB im 10g Home setzen
sqlplus / as sysdba
 
shutdown immediate
exit

Mit asmcmd die neuen Controlfile Namen ermitteln

ASM Umgebung SPAREDB

# ASM Umgbung setzen
asmcmd
ls +GPI/gpi/controlfile
current.277.802113799
current.390.802113791

Restore init.ora auf neue Controlfile Namen anpassen

ASM Umgebung SPAREDB

vi initGPI.ora

Instance im Mount modus starten

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

Rman Datenbank mit "set NewName" zurücksichern

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;
}

Instance stoppen und mit nomount starten

ASM Umgebung SPAREDB

sqlplus / AS sysdba
 
startup nomount pfile='/export/home/oracle/initGPIIP.ora';
 
exit

Mit asmcmd die name der neuen Datendateien ermitteln

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.

Create Controlfile Script anlegen

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

Backups mit Rman erneut katalogisieren und Datenbank recovern

ASM Umgebung SPAREDB

rman
 
connect target /
 
catalog start with '/ora_backup/';
 
recover database;
 
# bis zum letzen Archive 

Marker in RAC DB setzen und Letze Archive erzeugen

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;

Backup der Archive der RAC Datenbank und kopieren auf SPAREDB

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/

Archive mit Rman erneut katalogisieren und Datenbank recovern

ASM Umgebung SPAREDB

rman
connect target /
catalog start with '/ora_backup/'
 
recover database

Logfiles vom Thread 2 wieder anlegen

ASM Umgebung SPAREDB

sqlplus / AS sysdba
 
ALTER DATABASE ADD LOGFILE THREAD 2
  GROUP 3 SIZE 251200K ,
  GROUP 4 SIZE 251200K ;
 

Datenbank mit Reset Logs öffnen

ASM Umgebung SPAREDB

sqlplus / AS sysdba
 
ALTER DATABASE OPEN RESETLOGS;

Temp File anlegen

ASM Umgebung SPAREDB

ALTER TABLESPACE TEMP ADD TEMPFILE  SIZE 3070M  AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;

Thread 2 disablen, bei Bedarf logs löschen

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;

Spfile erzeugen

ASM Umgebung SPAREDB

CREATE spfile FROM pfile='/export/home/oracle/initGPI.ora';
 
startup force
Cookies helfen bei der Bereitstellung von Inhalten. Durch die Nutzung dieser Seiten erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Rechner gespeichert werden. Weitere Information
"Autor: Gunther Pipperr"
dba/recover_omf_db_asm_rac.txt · Zuletzt geändert: 2014/11/21 15:23 von Gunther Pippèrr