Benutzer-Werkzeuge

Webseiten-Werkzeuge


dba:db_umzug_win32_10g_ubuntu_11g

Umzug einer Datenbank 10g R2 nach 11g inkl. Betriebsystemwechsel

Die PreUpgrade Vorgaben im Detail von Oracle zuvor beachten! Besonders die Timezone Problematik!

Aufgabe: Eine Datenbank 10g unter Windows 2003 wird nach Linux umgezogen und auf 11g gehoben

1. Variante: längere Downtime möglich

Ablauf:

  1. Metainformationen des Quellsystems beschaffen / bereitstellen
  2. Datenbank preUpgrade Script der Ziel Version auf Quellsystem starten und Ergebnisse in der Quelle fixen!
  3. Kopieren der Datendateien in das neue Zielsystem
  4. Pfile und Controlfile für neue Umgebung anpassen und erstellen
  5. Datenbank upgrade durchführen

1. Metadaten der Quelldatenbank


Struktur der Datenbank Files anzeigen und merken

rman
rman> CONNECT target /
RMAN> report schema;
 
Kontrolldatei der Zieldatenbank wird anstelle des Recovery-Katalogs verwendet
Bericht: Datenbankschema
 
Liste mit permanenten Datendateien
===========================
Dateigr÷▀e (MB) Tablespace           RB-Segmente Datendateiname
---- -------- -------------------- ------- ------------------------
1    510      SYSTEM               ***     C:\ORACLE\ORADATA\PRIM01\SYSTEM01.DBF
2    40       UNDOTBS1             ***     C:\ORACLE\ORADATA\PRIM01\UNDOTBS01.DBF
3    280      SYSAUX               ***     C:\ORACLE\ORADATA\PRIM01\SYSAUX01.DBF
4    170      USERS                ***     C:\ORACLE\ORADATA\PRIM01\USERS01.DBF
5    440      PMDB_DAT1            ***     C:\ORACLE\ORADATA\PRIM01\PMDB_DAT1.DBF
6    510      PMDB_NDX1            ***     C:\ORACLE\ORADATA\PRIM01\PMDB_NDX1.DBF
7    250      PMDB_LOB1            ***     C:\ORACLE\ORADATA\PRIM01\PMDB_LOB1.DBF
 
Liste mit temporõren Dateien
=======================
Dateigr÷▀e (MB) Tablespace           MAX. Gr÷▀e (MB) Name von temp.Datei
---- -------- -------------------- ----------- --------------------
1    56       TEMP                 32767       C:\ORACLE\ORADATA\PRIM01\TEMP01.DBF


Textkopie des SPFiles erzeugen

sqlplus / AS sysdba
SQL> CREATE pfile='c:\temp\initprim01.ora' FROM spfile;


Textkopie vom Kontrolfile erstellen

sqlplus / AS sysdba
SQL> ALTER database backup controlfile TO trace AS 'C:\temp\control_prim01.ctl';

2. PreUpgrade Probleme beheben

Umkopieren preUpgrade utlu112i Script, das preUpgrade Script MUSS zuvor auf der unter 10g gestarteten DB laufen!

Für das Script see „How to Download and Run Oracle's Database Pre-Upgrade Utility (Doc ID 884522.1)“

sqlplus>@utlu112i.SQL
   ORA-04023: Objekt SYS.STANDARD konnte nicht validiert oder autorisiert werden

⇒ NICHT auf dem Ziel Datenbank laufen lassen ⇒> Im Quellsystem muss erst alles gefixt werden!

sqlplus>@utlu112i.SQL
 
**********************************************************************
Miscellaneous Warnings
**********************************************************************
WARNING: --> Database is using a timezone file older than version 11.
.... After the RELEASE migration, it IS recommended that DBMS_DST PACKAGE
.... be used TO upgrade the 10.2.0.4.0 database timezone version
.... TO the latest version which comes WITH the NEW RELEASE.

⇒ Timezone Problem muss gelößt werden, sonst startet 11g upgrade nicht!

3. Kopieren der Datendateien

  • Auf dem Ziel Datenverzeichnis anlegen
  • Datenbank sauber schließen
    sqlplus>shutdown IMMEDIATE
  • per scp alle Datendateien der Datenbank auf den Zielrechner kopieren
    C:\oracle\oradata\prim01>pscp *.DBF oracle@192.168.178.32:/opt/oracle/oradata/prim01
  • Text Kopie des spfile und des Controlfiles auf die Linux Maschine kopieren

4. Pfile und Controlfile für neue Umgebung anpassen und erstellen

  • Umgebung (Oracle Home, SID etc) setzen bzw. setdb Script einbinden ⇒ Arbeitsumgebung setzen und einrichten unter Linux
  • pfile anpassen mit minimalen Parametern für die 11g
    *.control_files='/opt/oracle/oradata/prim01/control01.ctl','/opt/oracle/oradata/prim01/control02.ctl'
    *.db_block_size=8192
    *.db_domain=''
    *.db_file_multiblock_read_count=16
    *.db_name='prim01'
    *.db_recovery_file_dest='/opt/oracle/flash_recovery_area'
    *.db_recovery_file_dest_size=2147483648
    *.job_queue_processes=2
    *.nls_language='GERMAN'
    *.nls_territory='GERMANY'
    *.open_cursors=300
    *.pga_aggregate_target=95420416
    *.processes=150
    *.remote_login_passwordfile='EXCLUSIVE'
    *.sga_max_size=241172480
    *.sga_target=241172480
    *.undo_management='AUTO'
    *.undo_tablespace='UNDOTBS1'
  • prüfen ob alle notwendigen Verzeichnisse vorhanden sind
    oracle@venus:/opt/oracle$ mkdir flash_recovery_area 
  • Controlfile Script mit neuen Pfaden aus der Trace Datei von Schritt 1 erstellen (Abschnitt in der Datei mit dem Reset Logs Statement)

5. Datenbank upgrade durchführen

  1. Instance im nomout Status mit geänderter init.ora starten
    sqlplus / AS sysdba
    SQL> startup nomount pfile='/home/oracle/initprim01.ora'
  2. Mit Controlfile Script neue Controlfiles erstellen
    CREATE CONTROLFILE REUSE DATABASE "PRIM01" RESETLOGS  NOARCHIVELOG 
       MAXLOGFILES 16
        MAXLOGMEMBERS 3
        MAXDATAFILES 100
        MAXINSTANCES 8
        MAXLOGHISTORY 292
        LOGFILE
      GROUP 1 '/opt/oracle/oradata/prim01/REDO01.LOG'  SIZE 50M,
      GROUP 2 '/opt/oracle/oradata/prim01/REDO02.LOG'  SIZE 50M,
      GROUP 3 '/opt/oracle/oradata/prim01/REDO03.LOG'  SIZE 50M
      DATAFILE
      '/opt/oracle/oradata/prim01/SYSTEM01.DBF',
      '/opt/oracle/oradata/prim01/UNDOTBS01.DBF',
      '/opt/oracle/oradata/prim01/SYSAUX01.DBF',
      '/opt/oracle/oradata/prim01/USERS01.DBF',
      '/opt/oracle/oradata/prim01/PMDB_DAT1.DBF',
      '/opt/oracle/oradata/prim01/PMDB_NDX1.DBF',
      '/opt/oracle/oradata/prim01/PMDB_LOB1.DBF'
     CHARACTER SET UTF8
    ;
  3. Datenbank im upgrade Modus starten und Upgrade starten
       ALTER database OPEN resetlogs upgrade;
       ALTER TABLESPACE TEMP ADD TEMPFILE '/opt/oracle/oradata/prim01/TEMP01.DBF' SIZE 58720256 REUSE AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;
  4. Timezone Problem von Punkt 2 beheben, falls zum Beipiel die 10g gar nicht mehr zur Verfügung steht, utlu112i nach registry$database durchsuchen und per hand anwenden! DIES IST EIN GEFÄHLICHER HACK!!!
     sqlplus>ALTER TABLE registry$database ADD (tz_version NUMBER);
     sqlplus>UPDATE registry$database SET tz_version = 11;
  5. Upgrade durchführen
     sqlplus>@?/rdbms/admin/catupgrd.sql
     sqlplus>startup
     sqlplus>@?/rdbms/admin/utlu112s.sql

Quellen

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/db_umzug_win32_10g_ubuntu_11g.txt · Zuletzt geändert: 2015/07/29 13:06 von Gunther Pippèrr