Benutzer-Werkzeuge

Webseiten-Werkzeuge


dba:9i_10g_asm_migration

Rac 9i auf OCFS auf RAC 10g unter ASM migrieren

Keine Garantie auf Vollständigkeit, immer zuvor im Testsystem überprüfen!

Aufgabe:
Migration eines 6 Knoten RAC 9.2.0.8 / OCFS Cluster (Quelle) unter win2003 32bit ⇒ auf ⇒ 3 Knoten RAC 10gR2 10.2.0.3 / ASM (Ziel) unter win2003 64bit
Quell DB wird mit RMAN gesichert und aus diesem Backup wieder auf dem Ziel 10gR2 Cluster hergestellt und migriert. Dabei wird zusätzlich das Dateisystem für die Datendateien von OCFS auf ASM gewechselt.

Ablauf in der Übersicht:

  1. RMAN Backup auf Cluster 9i
  2. 10g Cluster inkl DB Software Installation und Patch 29 auf den neuen drei Knoten
  3. Kopieren Backup und letzte Archivelogs von der Quelle
  4. Restore in der 10g Umgebung inkl. Wiederherstellung auf dem ASM Laufwerken
  5. Migration der Datenbank auf 10g
  6. Anpassen der Datenbank

Vorbereitungen im Quellsystem

Auf dem Quellsystem muss das Backup mit RMAN für Datendateien/Controlfile/Archivelogs sauber erstellt werden.

Auf Quellsystem 9i:

1. Tablespaces System auf mindestens 50% freien Platz optimieren
2. Controlfile Trace als Vorlage für neuen Controlfile in Zielsystem 10g erzeugen

 sqlplus>ALTER database backup controlfile TO trace AS 'd:\scripts\controlfileV3.txt'

Aus dem Controlfile Trace das create Controlfile Kommmando kopieren und auf die neuen Pfade anpassen. Mit diesem Befehl wird später im ZIEL ein neuer Controlfile angelegt.
Befehl für das Hinzufügen der Redologs für den Knoten zwei und drei kopieren und Script mit passenden Pfaden erstellen.

3. Restore Script Vorlage auf Quellsystem erstellen (mit Pfaden des Zielsystems!)
Diese Informationen werden dann später für das RMAN Backup benötigt um Tipp Arbeit zu sparen

SET lines 140
SET pages 500
spool d:\setnewname.txt
SELECT 'set newname for datafile ' || file# || ' to ''+ORADATA/' || SUBSTR(name, 25, LENGTH(name)) ||''';' 
 FROM v$datafile;
spool off

Vorbereitungen im Zielsystem

1. Wenn es schon eine Datenbank (aus vorherigen Tests) für die neuen Ziel Software Version vom Produktionsystem V5 gibt, dies zuvor wieder löschen:

  1. command line: srvctl stop database –d ZIEL
  2. initZIEL.ora auf die initZIEL.ora.restore ändern. (Clustermodus aus, jobs aus etc.)
  3. Node1 – connect as sysdba using sqlplus
    1. startup mount restrict
    2. select host_name from v$instance: → wirklich die richtige DB?
    3. drop database
  4. control01.ctl bleibt i.d.R. übrig:
    1. set oracle_home=d:\oracle\1020\asm
    2. set oracle_sid=+ASM1
    3. asmcmd rm oradata/control01.ctl

Restore 9i in 10g Cluster

Das Backup der Quelle nach F:\backup auf Node1 kopieren inkl. Kopien der Read Only Tablespaces!

Kopieren aller Archive Logs auf F:\backup\archs (von allen 6 Knoten)

Anpassung D:\oracle\admin\ZIEL\pfile\initZIEL.ora auf Node1
init.ora:

#-- damit keine jobs das Upgrade stören
job_qeue_processes=0
aq_tm_processes=0
# Archivelog Destination setzen
log_archive_dest_1='LOCATION=F:\backup\archs REOPEN=120'\\
#
_no_recovery_through_resetlogs=true 

RMAN starten

 rman 
 rman>connect target /
 rman>startup nomount pfile='D:\oracle\admin\ZIEL\pfile\initZIEL.ora'
 rman>restore controlfile from ’f:\backup\name…..’  --hier das aktuellste controlfile nach dem backup nehmen

Prüfung über asmcmd

set oracle_home=d:\oracle\1020\asm
set oracle_sid=+ASM1
asmcmd ls ORADATA/control01.ctl
amscmd ls ORAREDO/control02.ctl


Tip: Alertlog in zweiten Fenster gnutail mit d:\scripts\gnu\tail –f d:\oracle\admin\ZIEL1\bdump\alert_Ziel1.log überwachen

Controlfile Informationen aktualisieren – nicht bekannte RMAN Backups löschen:

rman
rman>CONNECT target /
rman>ALTER database mount;
rman>crosscheck backup;
rman>DELETE expired backup;

Katalogisieren des vorhandenen Backups:

rman>catalog START WITH ’f:\backup’;

Den Restore Befehl um den set newname Block ergänzen (siehe zuvor erzeugtes Script unter Vorbereitung auf der Quelle)

Restore starten im RMAN

rman>run {
SET newname FOR datafile 1 TO '+ORADATA/SYSTEM01.DBF';
SET newname FOR datafile 2 TO '+ORADATA/UNDOTBS01.DBF';
SET newname FOR datafile 3 TO '+ORADATA/TOOLS01.DBF';
SET newname FOR datafile 4 TO '+ORADATA/FINDATA01.DBF';
SET newname FOR datafile 5 TO '+ORADATA/FININDX01.DBF';
SET newname FOR datafile 6 TO '+ORADATA/LOGDATA01.DBF';
....
-- ZUVOR!  set newname Spool für das Erstellen des Rename Befehls verwenden und einfügen
....
SET newname FOR datafile 162 TO '+ORADATA/FININDX23.DBF';
SET newname FOR datafile 163 TO '+ORADATA/FININDX24.DBF';
 
allocate channel dev0 TYPE disk;
allocate channel dev1 TYPE disk;
allocate channel dev2 TYPE disk;
allocate channel dev3 TYPE disk;
allocate channel dev4 TYPE disk;
restore database CHECK readonly;
switch datafile ALL;
recover database;
}

Controlfile neu anlegen, damit später weitere Archive eingespielt werden können und die Rodo Log Gruppen richtig angelegt werden

Dazu die zuvor auf dem Quellsystem aus dem Trace des Orginal Controlfiles das passende Kommando erzeugen und anpassen

rman>EXIT
sqlplus / AS sysdba
sqlplus>shutdown IMMEDIATE
sqlplus>startup nomount
sqlplus>CREATE CONTROLFILE REUSE DATABASE "ZIEL" RESETLOGS  ARCHIVELOG
    MAXLOGFILES 200
    MAXLOGMEMBERS 3
    MAXDATAFILES 200
    MAXINSTANCES 8
    MAXLOGHISTORY 9075
LOGFILE
  GROUP 1 (
    '+ORADATA/REDO1_01.RDO',
    '+ORAREDO/REDO1_01.RDO'
  ) SIZE 200M,
  GROUP 2 (
    '+ORADATA/REDO1_02.RDO',
    '+ORAREDO/REDO1_02.RDO'
  ....
  -- um alle Redolog Gruppen ergänzen
  ....
  GROUP 10 (
    '+ORADATA/REDO1_10.RDO',
    '+ORAREDO/REDO1_10.RDO'
  ) SIZE 200M
 
DATAFILE
  '+ORADATA/SYSTEM01.DBF',
  '+ORADATA/UNDOTBS01.DBF',
  '+ORADATA/TOOLS01.DBF',
  '+ORADATA/FINDATA01.DBF',
  .....  
  -- um alle Datendateien ergänzen
  .....
  '+ORADATA/FININDX25.DBF',
  '+ORADATA/LOGDATA26.DBF',
  '+ORADATA/FINDATA12.DBF',
  '+ORADATA/FININDX26.DBF'
CHARACTER SET UTF8
;

Umschaltzeitpunkt von alter Produktion Quelle auf neue Produktion ZIEL

Die letzte Archivelogs von der Quell Datenbank bzw. alten Produktion holen und einspielen, dazu:

  • finale archive logs erzeugen
    • keiner ist angemeldet
    • kein job läuft (alter system set job_queue_processes=0 auf Quelle)
    • alle Knoten mit immediate runterfahren
    • startup restrict auf einem Knoten
    • create synonym checktable for ZIEL.resort;
    • alter system archive log all;
    • alter system archive log current;

Nun die restlichen Archivelogs von Quelle V3 zum Ziel V5 kopieren
Restliche Archive Logs einspielen – mit Catalog Befehl und RMAN

Auf Node1 als sysdba anmelden

RMAN> catalog START WITH ’f:\archlogs’;
RMAN> recover database;


oder zur Not

sqlplus> RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL;

Achtung: wenn weitere Archive Logs benötigt werden, dann einspielen

Die Redo Log Groupe für Thread 2 und 3 mit vorbereiteten Script neu anlegen

-- Create log files for threads other than thread one.
ALTER DATABASE ADD LOGFILE THREAD 2
  GROUP 11 (
    '+ORADATA/REDO2_01.RDO',
    '+ORAREDO/REDO2_01.RDO'
  ) SIZE 200M REUSE,
  .....
  -- um alle Redolog Gruppen ergänzen
  ....
  GROUP 20 (
    '+ORADATA/REDO2_10.RDO',
    '+ORAREDO/REDO2_10.RDO'
  ) SIZE 200M REUSE;
ALTER DATABASE ADD LOGFILE THREAD 3
  GROUP 21 (
    '+ORADATA/REDO3_01.RDO',
    '+ORAREDO/REDO3_01.RDO'
  ) SIZE 200M REUSE,
  ....
  -- um alle Redolog Gruppen ergänzen
  ....
  GROUP 30 (
    '+ORADATA/REDO3_10.RDO',
    '+ORAREDO/REDO3_10.RDO'
  ) SIZE 200M REUSE;

Achtung: Datenbank nicht mit „alter database open“ öffnen.

Datenbank für das Upgrade öffenen:

sqlplus>ALTER database OPEN resetlogs migrate;

Thread 2 und 3 des Cluster enablen

sqlplus>ALTER database enable thread 2;
sqlplus>ALTER database enable thread 3;

Die alten threads 4 - 6 löschen

sqlplus>ALTER database disable thread 4;
sqlplus>ALTER database disable thread 5;
sqlplus>ALTER database disable thread 6;

Datendatei, die zuvor im Read Only Modus war, umbennen. (Spezifisch für diese Installation!)

sqlplus>SELECT name FROM v$datafile;
-- Auf Datei(en) MISSINGxxx prüfen
-- Files in read-only tablespaces umbennen
sqlplus>ALTER DATABASE RENAME FILE 'MISSING00046'  TO '+ORADATA/sys_read01.dbf';
-- prüfen ob alle Tablespaces online sind falls nicht 
sqlplus>ALTER tablespace SYS_READ online;

Tempfile für den Temp Tablespace anlegen

sqlplus>ALTER tablespace tempseg add tempfile '+ORADATA/TEMPSEG01.DBF' size 8192M reuse;

DB Upgrade von 9i auf 10g

Um die DB von der Version 9i auf die 10g upzugraden, sind die folgenden Schritte notwendig:

Archive Log Destination online auf das neue Storage ändern und in der initZIEL.ora eintragen.

sqlplus>ALTER system SET log_archive_dest_1='LOCATION=+ORARECO REOPEN=120' scope=memory;
-- testen
sqlplus>ALTER system archive LOG CURRENT;

Das Alertlog kontrollieren auf korrektes Archivieren

Den 10g sysaux Tablespace anlegen

sqlplus>create tablespace SYSAUX datafile '+ORADATA/SYSAUX01.DBF' size 1024M reuse extent management local ;

Prüfen ob alle Tablespace komplett und online sind.


Oracle Upgrade Script starten

sqlplus / asysdba
sqlplus>spool d:\upgrade_1020.LOG
sqlplus>@D:\oracle\1020\database\RDBMS\ADMIN\catupgrd.SQL

Nach dem Upgrade das spool File auf Fehler kontrollieren.

Objekte der Datenbank für 64bit behandeln

sqlplus>@?\rdbms\admin\utlirp

Security Patch aktualiseren - run catcpu

  1. Datenbank stoppen und sqlplus beenden
  2. in das Verzeichnis des Bundle Patches wechseln d:\oracle\1020\database\bundle\patch29
  3. startup DB normal
  4. run database upgrade to 10.2.0.3 P29
  5. DB Recompilieren / durchstarten
  6. Views aus Security Patch P29 neu aufbauen
sqlplus>shutdown IMMEDIATE
sqlplus>EXIT
cd d:\oracle\1020\database\bundle\patch29
sqlplus / a sysdba
sqlplus>startup
sqlplus>@catcpu

Alle ungültigen Objekte der Datenbank übersetzen
zwei mal laufen lassen!

sqlplus>@?\rdbms\admin\utlrp 		

Datenbank herunterfahren und wieder im normal mode starten.

sqlplus>shutdown IMMEDIATE
sqlplus>startup
sqlplus>@?\rdbms\admin\utlrp.SQL								

Die Ausgaben utlrp.sql prüfen, falls ungültige Objekte exisiteren, versuchen diese Problem zu beheben.
Mit folgender Abfrage auf ungültige Objekte prüfen:

sqlplus>SELECT object_name, object_type, owner 
  FROM dba_objects
WHERE status=’INVALID’;

Datenbank stoppen und neustarten im migrate mode

sqlplus>shutdown IMMEDIATE
sqlplus>startup migrate
sqlplus>EXIT;
cd /d D:\oracle\1020\database\BUNDLE\view_recompile
sqlplus / AS sysdba
sqlplus>@view_recompile_jan2008cpu.SQL

Datenbank stoppen und neustarten
Das utlrp.sql script laufen lassen.

sqlplus>@?\rdbms\admin\utlrp 		
sqlplus> SELECT object_name, object_type, owner 
  FROM dba_objects
 WHERE status=’INVALID’;
-- prüfen und ungültiges beseitigen

Dual Tabelle prüfen
Falls die Dual Tabelle in einen read Only Tablespace lag (Produktspezifisch!) wieder in den System Tablespace verschieben

sqlplus>ALTER TABLE dual move tablespace system;
sqlplus>DROP tablespace sys_read including contents AND datafiles;

Installation von OLAP (10 – 15min) bei Bedarf bzw. weitere Optionen je nach eingeesetzter Software

Wichtig! Zuvor mit sqlplus neu anmelden!

sqlplus>CONNECT AS SYSDBA
sqlplus>SET echo ON
sqlplus>spool d:\olap.LOG
sqlplus>@d:\oracle\1020\database\olap\admin\olap.SQL sysaux tempseg
sqlplus>spool off

Prüfen ob der User OLAPSYS exisitiert:

sqlplus>SELECT * FROM all_users;

Tablespaces auf unlimited setzen
Spool Script zum Erzeugen des Kommandos:

SET pages
SET lines 100
spool d:\autoextent.SQL
SELECT 'alter database datafile ''' || file_name || ''' autoextend on next 500m maxsize 30G;' 
  FROM dba_data_files 
 WHERE tablespace_name NOT LIKE 'SYS%' AND tablespace_name NOT LIKE 'UNDO%'; 
spool off
-- Spool starten
@d:\autoextent.SQL

Tablespaces prüfen


init.ora auf produktive Parmeter setzen Clustermodus wieder einschalten

#Jobs starten
job_qeue_processes=64
aq_tm_processes=2
 
# Archivelog Destination setzen
log_archive_dest_1='LOCATION=+ORARECO REOPEN=120'
 
cluster_database=TRUE
 
#auskommentieren/löschen !
#_no_recovery_through_resetlogs=TRUE 

Init.ora auf alle Knoten verteilen

Datenbank auf Node 1 mit sqlplus stoppen und gesamtes Cluster mit „srvctl start database -d ZIEL“ starten.

Nacharbeiten:

  1. Oracle 10g Cluster Views nachinstallieren: @?/rdbms/admin/catclust.sql
  2. Datenbank Systemstatistiken erzeugen (siehe ⇒ Statistiken anlegen und überwachen
  3. Undo Tablespace 4-6 offline setzen und löschen
    1. sqlplus>alter tablespace undotbs4 offline;
    2. sqlplus>drop tablespace undotbs4 including contents and datafiles;
    3. usw.
  4. RMAN aufräumen und Backup neu einrichten/prüfen
  5. Perfstat User droppen und neu anlagen

(Vielen Dank an Anja Giesecke )

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/9i_10g_asm_migration.txt · Zuletzt geändert: 2010/09/22 09:53 von Gunther Pippèrr