Benutzer-Werkzeuge

Webseiten-Werkzeuge


dba:oracle_database_ms_windows

Windows 2019 Oracle Datenbank Umgebung vorbereiten - 19c installieren - Datenbank 12c nach 19c migrieren

Um unnötigen Bugs und ähnlichen Wirrungen der Softwareentwicklung aus den Weg zu gehen, eine Englische Version des Betriebssystems wählen und Usernamen mit „einfachen“ Buchstaben (ohne Umlaute etc.!) und Verzeichnisse immer ohne „ “ Leerzeichen angeben!

Ablauf:

  • Server planen
  • Server Betriebssystem nach den jeweiligen Betrieblichen Vorgaben installieren (Möglichst in der englischen Sprachvariante)
  • Server in das interne Netz / Domain etc. vollständig integrieren (Der Name der Maschine sollte sich nach einer Oracle Installation NIE mehr ändern!)
  • Betriebssysteme für eine Oracle Umgebung prüfen und optimieren
  • Oracle 19c Software je nach Lizenz installieren
  • Notwendige Produktionsfeatures wie .Net Integration / Transparent Gateway ( falls im Einsatz ) konfigurieren
  • Produktion
    • PreUpgrade 19c Script auf „alter“ Produktion laufen lassen und Anweisungen befolgen, DB für Upgrade soweit als möglich optimieren, wie Jobs Umstellung, MV refreschs kurz vor dem Upgrade stoppen, DD Statistik optimieren, etc.
    • Aus der gv$session bzw. aus dem AWR / dem Listener Log ermitteln was und wer alles so mit der DB arbeitet um zu ermitteln welche Connections angepasst werden müssen
    • Full Backup inkl. Controlfiles erstellen + letzte Archivelogs
  • Datenbank aus Backup Kopie mit RMAN auf neuer Maschine wiederherstellen
  • Letzte Archive aus Produktion in neue DB einspielen und Produktion entgültig stoppen
  • Datenbank Upgrade auf 19c
  • Produktiven Status herstellen und Applikationen neu verbinden wie globale tnsnames.ora anpassen etc.

Zu beachten:

Ein Clone der Datenbank per RMAN über das Netz ( Eine Oracle Datenbank 11g R2 mit RMAN "DUPLICATE TARGET DATABASE TO xxxx FROM ACTIVE DATABASE " klonen] kann nicht durchgeführt werden, da der 19c RMAN kann nicht mit der 12c Datenbank so einfach zusammenarbeitet.

Auch sollten vor der Umstellung alle DB Jobs auf DBMS_SCHEDULER umgestellt werden, mit der aktuellen 19c steht DMBS_JOB nicht mehr zur Verfügung, die JOBS werden automatisch nach DBMS_SCHEDULER migriert. Diese Migration hat aber leider bzgl. NLS Settings und andere Einstellungen Ihre Tücken, besser zuvor bereits alles umstellen! Siehe dazu auch ⇒ Oracle DBMS_JOB Migration nach Scheduler in Oracle 19c

Risiko bei der Umstellung von 11g nach 19c:

Prinzipiell kann auch eine 11g so migriert werden, auf folgenden Punkt aber dringend achten ⇒ Oracle 12c R2 - Password Handing - ORA-1017 Invalid Username or Password after upgrade


Server planen

Speicher

  • Min 2 GB Ram, besser wohl so ab 32GB

Disk:

  • Min 4GB Temp Bereich
  • Min 10GB für Oracle Software ( es wird zwischen 6.5 und 7 GB für die Software benötigt aber jeder Patch bring schnell mal 1-2 GB dazu da alte Files für Rollback des Patches aufgehoben werden!)
  • Viel Plattenplatz für die eigentliche DB + min. 2x. Plattenplatz für Backup / Archivelogs

Wie :

  • C:\ - min 60GB für Windows
  • D:\ - pro Oracle Home min 10GB + Platz für Tools und Logs + Patches etc » 50GB
  • E:\ - Daten »100GB ( z.B. NTFS mit 8K Blockgröße wenn 8K Block Größe DB geplant)

Virtuellen Test Server bei Bedarf aufsetzen bzw. ESX optimieren

VMWare Workstation

Die Virtuelle Platte (VHD) des Windows 2019 Server kann auch mit einer VMWare Workstation 14 genützt werden.

Dazu VHD von Microsoft herunterladen (Test Version ist hier erhältlich ⇒ https://www.microsoft.com/en-us/evalcenter/evaluate-windows-server-2019 ) und in ein Verzeichnis kopieren.

Unter VMWare einen neue Virtuelle Maschine mit 4GB RAM anlegen und dabei als IDE Platte die VHD Datei angeben.

Zusätzlich eine D Platte für die Oracle Datenbank Software und die Test Datenbank anlegen.

Für die Software 10GB einplanen + die eigentlichen Datenbank Daten, in meinen Fall nochmals 40GB.

Bei ersten Start die Sprache der Maschine auswählen (alles US) und DE für die Tastatur wählen.

Passwort für den Administrator Account setzen und an der Maschine anmelden.

Die D Platte wie gewohnt einrichten, um die D Platte aber auch als d: verwenden zu können muss das DVD Laufwerk auf einen anderen Buchstaben gemappt werden.

Das geht am einfachsten wie gewohnt im alten Server Manager, diesen mit „compmgmt.msc“ aufrufen, im neuen Server Manager leider diese Funktion nicht wie gewohnt gefunden.

Danach die die VMWare Tools installieren und neu starten (an die neue Funktion mit der rechten untern Ecke und dem Zahnrad denken um die Power Button von Windows 2012 zu erreichen).

VMware vSphere Hypervisor (ESXi) Umgebung

Server für Oracle konfigurieren

Name und Domain setzen

Neuen Maschinenname vergeben (wie 12CWIN2012ORA01) und in die Domain aufnehmen.

Nach der Installation sollte der Name und die Domain sich <fc #800000>NIE mehr ändern</fc>!

(Neuer Server Manager ⇒ Local Server ⇒ Computer Name anklicken, gewohnten Dialog ausfüllen)

Prüfen das der Name der Maschine auch sauber im Netzwerk aufgelöst werden kann!

ping 12CWIN2012ORA01

Netzwerk kontrollieren / konfigurieren

Das Netzwerk kontrollieren und bei Bedarf IPV6 so weit wie möglich deaktivieren

Laut Microsoft ist das abschalten von IPV6 keine so gute Idee mehr!

In einer Single DB Umgebung kann auch darauf verzichtet werden bzw. vorher gut in das Thema einlesen!

In neuen Umgebungen verzichte ich inzwischen auf diese Schritte, allerdings sollte dann geprüft werden das der Oracle Listener auf wirklich auf der IP V4 Adresse läuft!

So würde IP V6 deaktiviert:

  • Auf den Adaptern direkt das IPV6 Protokoll deaktivieren
  • In der Host Datei (Der Pfad zur Hostdatei lautet : %systemroot%\system32\drivers\etc ) Eintrag für localhost mit 127.0.0.1 einfügen und evtl. den IPv6 Eintrag ::1: auskommentieren!
    Administrative Powershell Session starten
    cd $ENV:systemroot\system32\drivers\etc
     notepad .\hosts
  • Registry Eintrag hinzufügen (in der CMD starten!)
    cmd
    reg add hklm\system\currentcontrolset\services\tcpip6\parameters /v DisabledComponents /t REG_DWORD /d 0xFFFFFFFF
  • System neu starten
  • Ein ping auf localhost muss die 127.0.0.1 Adresse zurückgeben, ein ipconfig darf keine IPv6 Adressen anzeigen

Falls später der Listener NUR auf der IPV6 Adresse hört, Host Datei anlegen.


OS Einstellungen Swap Size
  • Swap Size prüfen (2-16GB = RAM Größe ) ab » 16GB = 16GB

User Software Owner anlegen

Oracle Software Owner zum Beispiel „ORASYSTEM“ als User lokal oder in der Domain anlegen und in die lokale Admin Gruppe auf dem Server explizit aufnehmen!

Auch hier am einfachsten erst mal wieder mit „compmgmt.msc“ bzw. „lusrmgr.msc“ arbeiten!

Vergeben der Local Security Policies für diesen User über Server Manager, Tools in der oberen Bar → Local Security Policy auswählen

Knoten Local Policies → User Rights Assignment

Dem Account ORASYSTEM die folgenden Policies (Richtlinien) zuweisen:

Single Instance

  • Log on as a batch job
  • Log on as a service

RAC

  • Act as part of the operating system
  • Adjust memory quotas for a process
  • Back up files and directories
  • Restore files and directories

Über den Oracle Installer wird dann später ein eigener lokalen User für die Datenbank Prozesse angelegt!

Mit dem neuen Oracle User anmelden

Prüfen das sich der Oracle Software Owner selber die Laufwerke der Maschine mit „net“ mounten kann:

net use \\localhost\c$
net use \\localhost\d$
 
The command completed successfully.

TMP Verzeichnis erstellen

Auf C: oder D: einen Ordner TEMP erstellen und systemweit diesen kurzen Pfad d:\temp für TMP und TEMP setzen.

Umgebungseinstellungen für den User und das System anpassen!


Advanced System Settings setzen

Aufruf „Advanced System Settings“ ( Control Panel\System and Security\System\Advanced System Settings ) oder einfach über die Suche eingeben und suchen lassen Reiter Advanced:

  • Performance Options :: Visual Effects :: „Best performance“ aktivieren
  • Performance Options :: Advanced :: „Background services“ aktivieren
  • Data Execution Prevention :: „Turn on DEP for essential Windows programs and services only“
  • Environment Variables :: TEMP und TMP auf d:\temp für „System variables“ und „User variables“

Internet Explorer Securtiy

Internet Explorer Security ausschalten, falls lokal mit der DB Console gearbeitet werden soll Server Manager starten, Local Server anwählen, auf der rechten Seite unter Windows Error Reporting! siehe auch http://blog.blksthl.com/2012/11/28/how-to-disable-ie-enhanced-security-in-windows-server-2012/

Daher alternativ Firefox oder Chrome installieren und sich nicht mit dem Mist ärgern .-).


Bildschirmschoner

Bildschirmschoner auf „Blank“ stellen bzw. deaktivieren (Control Panel\Appearance\Display)


Hintergrund

Hintergrund Bild mit Maschinen Info setzen um immer sofort die richtige Umgebung zu erkennen wie grün = Prod , gelb = Standby etc.


Spracheeinstellungen kontrollieren

Region and Language (English US)

Control Panel → Clock, Language, and Region →Region

Welcome Screen and new user account settings Hacken setzen bei:

  • Welcome screen and system accounts
  • New user accounts

Firewall deaktivieren oder konfigurieren

Listener Port 1521 mit hinzufügen


Virenscanner

Während der Installation, besonders bei einem Real Application Cluster, sollte der Virenscanner am besten deinstalliert sein!

Läuft das System kann der Virenscanner wieder installiert werden, sollte aber nicht permanent das Filesystem mit den Logs und Daten Dateien scannen!


Zeitzone und Windows Zeit-Dienst konfigurieren

Zeitzone einstellen (Control Panel/time/date and time)

siehe NTP Service MS Windows 2008 / 2012 auf einen eigenen NTP Server konfigurieren


Software Update

Auf letzte Updates prüfen und diese einspielen. (Control Panel\Updates)


Tools / Werkzeuge einrichten

Software herunterladen und zum Beispiel unter d:\tools installieren.


Umgebung validieren nicht nur für eine Oracle Cluster Installation

CVU Tool unter https://www.oracle.com/database/technologies/cvu-downloads.html herunterladen.

Bzw. über Support unter „Patch 30839369: Standalone CVU version 19.10 January 2021“7

  • Datei „cvupack_windows_x86_64.zip“ herunter laden
  • SHA-1 Key prüfen SHA-1 7360C14C9400F6F1676279D5B8735116A2940BBA
  • Datei auspacken z.B. nach C:\oracle\products\cvu
  • Adminstrative PowerShell öffnen
  • Clufy Util über
     cd C:\oracle\products\cvu\bin\
      .\cluvfy.bat
      # nützlich für eine Single Installation
      .\cluvfy.bat comp sys -p database
      .\cluvfy.bat comp admprv -o db_inst
     

    aufrufen


Mit einen Snapshot die Maschine sichern falls VM

Abschließen die Maschine herunterfahren, Offline Snapshot ziehen (als Basis für weitere Maschinen) und neu starten.


Datenbank Software Installation

Generelle Ablauf:

  1. Als ORASYSTEM das Oracle Base Verzeichnis + Home anlegen wie d:\oracle\product\19\db_home1
  2. DB Software in das Oracle Home entpacken und aus Oracle Home mit dem Setup Programm initialisieren
  3. DB Home mit letzten DB Patch patchen
  4. Oracle Listener konfigurieren

Mehr zu einer 19c Installation siehe auch ⇒ https://www.pipperr.de/dokuwiki/doku.php?id=dba:upgrade_18c_windows_2016_to_19c

Installation Software 19c

Es sollten noch mindestens 7 GB Platz für die Software Installation zur Verfügung stehen.

Ein 4k Display wird nicht unterstützt, hier hilft dann nur die Windows Lupe zu verwenden, oder versuchen die DPI Eigenschaften unter „Compatible“ anzupassen.

Seit der 18c wird das Oracle Home der Datenbank Software komplett kopiert als ZIP File mitgeliefert und die Software wird in das gewünschten Verzeichnis einfach ausgepackt.

Das Setup Programm konfiguriert dann dieses ORACLE_HOME Verzeichnis.

Ablauf:

  • Download der Software Oracle Database 19c (19.3) for Microsoft Windows x64 (64-bit) über das Edelivery Portal ⇒ https://edelivery.oracle.com/ oder https://www.oracle.com/database/technologies/oracle19c-windows-downloads.html
    • Prüfen der Checksum
      -- (3,105,763,999 bytes) (sha256sum - 64d92018207829833bd4d00f1a7fb40c531c8a4a68ded9e430a5d6fbaedaca95)
       
       Get-FileHash .\WINDOWS.X64_180000_db_home\ -Algorithm SHA256
      Algorithm       Hash
      ---------       ----
      SHA256          64D92018207829833BD4D00F1A7FB40C531C8A4A68DED9E430A5D6FBAEDACA95
  • Auspacken der Datei WINDOWS.X64_193000_db_home.zip mit der Oracle 19c Software in eine neues Oracle Home wie „C:\oracle\products\19.3.0.0\dbhome_1“
    mkdir  C:\oracle\products\19.3.0.0\dbhome_1
     
    expand-archive -path 'D:\install\oracle\database\19c\WINDOWS.X64_193000_db_home.zip' -destinationpath 'C:\oracle\products\19.3.0.0.0\dbhome_1'
  • Öffnen einer administrativen Powershell Session und starten der setup.bat Datei im Oracle Home Verzeichnis
     cd C:\oracle\products\19.3.0.0\dbhome_1
     .\setup.bat

Install Wizard Ablauf:

  • „Software only“ Auswahl
  • Single Instance
  • EE oder SE Edition auswählen
  • Neuen Oracle Run User anlegen lassen und !!Password aufschreiben!!
  • Auf das richtiges Oracle Base Verzeichnis achten, in meinen Fall „C:\oracle“
  • Mit Install abschließen, die Software in dem Home wird nun konfiguriert
Oracle Home hinterlegen

Falls nur das eine ORACLE_HOME auf der Maschine geplant ist dieses als Umgebungsvariable mit dem Pfad C:\oracle\products\19.3.0.0\dbhome_1 hinterlegen

Patch installieren

Nach der Software Installation wird geprüft ob ein aktueller Patch für die 19c unter Windows schon zur Verfügung steht.

Siehe dazu Assistant: Download Reference for Oracle Database/GI Update, Revision, PSU, SPU(CPU), Bundle Patches, Patchsets and Base Releases (Doc ID 2118136.2)

Hier ein paar Link zur Oracle Release Strategie ⇒Eleanor Meritt - Oracle Open World 2017 https://static.rainfocus.com/oracle/oow17/sess/1496886539973001Z80G/PF/CON6550-NewReleaseModelForOracleDatabase-v9_1506958121732001IJYT.pptx und https://mikedietrichde.com/2017/10/24/differences-psu-bp-ru-rur/

Zuerst OPATCH und dann die jeweils passenden Patche , WINDOWS DATABASE BUNDLE PATCH und dann den OVJM einspielen mit apply.

Listener konfigurieren

Mit den „NetConfigrationAssistent“ (über Programme\Oracle suchen und starten ) den Listener Dienst einrichten.

über den „NetworkManager“ die listner.ora Datei unter $ORACLE_HOME\network\admin erstellen lassen.

Prüfen das die Datei auch existiert!

Der DBCA Schritt benötigt diese Information falls eine neue DB installiert konfiguriert werden soll.

TNS_ADMIN Umgebungsvariable konfigurieren

Umgebungsvariable TNS_ADMIN auf $ORACLE_HOME\network\admin setzen.

DBCA Starten um eine neue Datenbank anzulegen

DBCA verwenden um eine Datenbank anzulegen

Nach dem Anlegen darauf achten, das die Oracle Patche auch registriert sind!

Je nachdem wie gut die obigen DB Create Skripte implementiert sind, fehlt die Patch Historie in der DB, das sieht dann so aus als ob kein Patch eingespielt wäre!

  • Datenbank Patch Level mit „datapatch -verbose“ in der DB registrieren lassen
  • Datenbank mit
     sqlplus / AS sysdba ; @?/rdbms/admin/utlrp.sql 

    neu übersetzen


OraPowerShell einrichten

Über https://github.com/gpipperr/OraPowerShell bei Bedarf die Scripte für die Verwaltung / Backup etc. für die Datenbank herunterladen und aufsetzen.


Autonomous Health Framework (AHF) Trace File Analyzer (TFA) & ORAchk/EXAchk neu installieren

Leider benötigt das Tool das Perl aus dem DB Home, d.h. wir können das Oracle Support Tool erst nach der DB Installation fertig aufsetzen.

Siehe auch Trace File Analyser einrichten ⇒ Oracle 12c / 18c - Die RAC Umgebung mit Oracle Trace File Analyzer (TFA) überprüfen - 19 Autonomous Health Framework (AHF)

Inzwischen (02.2021) ist das auch für Windows verfügbar.

Download über „ Autonomous Health Framework (AHF) - Including TFA and ORAchk/EXAChk (Doc ID 2550798.1)“

Falls schon mal installiert:

net stop "Oracle Trace File Analyzer"

Ein Update ist im Prinzip eine neue Installation!

Neue Installation:

mkdir C:\oracle\products\ahf\20.4.0
 
expand-archive -path 'C:\Users\gpipperr\Downloads\AHF-Win_v20.4.0.zip' -destinationpath 'C:\oracle\products\ahf\20.4.0'

Problem

"ExpandArchiveHelper : Can not process invalid archive entry '../oracle.ahf/orachk/.cgrep/mineocr.pm'.
   + CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException"
 

Was für ein …. aus der Doku:

The native Windows unzip command does not extract correctly. If you do not see the installahf.bat after unzipping use a different unzip utility like 7Zip

.

Unbegreiflich ….. mit 7zip läßt es sich dann entpacken.

Fertig installieren:

Administrative Powershell starten:

cd C:\oracle\products\ahf\AHF-Win_v20.4.0

# get help
 .\installahf.bat  -perlhome C:\oracle\products\19.3.0.0\dbhome_1\perl\


#start install

.\install.bat -local -tfabase C:\oracle\products\ahf\20.4.0 -perlhome  C:\oracle\products\19.3.0.0\dbhome_1\perl\


# testen mit:
C:\oracle\products\ahf\20.4.0\oracle.ahf\tfa\bin\tfactl print status

#Umgebung prüfen
C:\oracle\products\ahf\20.4.0\oracle.ahf\tfa\bin\tfactl summary

Konfigurieren mit:

cd C:\oracle\products\ahf\AHF-Win_v20.4.0\oracle.ahf\ahf\bin
 
.\tfactl.bat menu


Bestehende Datenbank 12c nach 19c per RMAN Backup wiederherstellen

Voraussetzung:

  • Bestehende DB mit dem Pre-Upgrade Utility analyiseren ⇒ Support Node How to Download and Run Oracle's Database Pre-Upgrade Utility (Doc ID 884522.1) ) analysieren
  • SPFile der bestehenden Umgebung als Textdatei erzeugt und auf die neue Umgebung angepasst
Auf Directory Objekte achten

In unseren Fall wird die Datenbank ja auch auf einen anderen Server umgezogen, daher in der alten Datenbank die Datenbank Directories prüfen und auf den neuen Zielsystem die gleiche File Struktur anlegen und auf die Rechte für die Oracle „Run“ User achten (siehe Software Installation)!

DB Besonderheiten beachten und neu konfigurieren

RMan Restore

Backup der Original Datenbank

Auf der original Datendatenbank:

  • Auto Backup einschalten
    RMAN>CONFIGURE CONTROLFILE AUTOBACKUP ON;
  • Full Backup anlegen -
    RMAN>backup database;
  • „Merker“ in der Datenbank hinterlegen um später zu beweisen das alle Daten übertragen wurden
    CREATE TABLE gpi.UP_DATE_19C AS SELECT sysdate AS UPDATE_DATE FROM dual;
  • Backup der letzen Archive Logs -
    RMAN>backup archive log all;
  • Erstellen eines letzen Controlfile Backups -
    RMAN>backup current controlfike

Kopieren das Full Backups + Archivelog Backup + Auto Backup + Controlfile Backup in die Flash Recovery Struktur Verzeichnisstruktur auf den neuen Server wie in der alten Umgebung.

Restore in der neuen 19c Umgebung

Nun die Datenbank per RMAN in der alten Umgebung wieder herstellen.

Siehe dazu SPfile wiederherstellen

  • Datenbank mit dem zuvor erstellen Pfile im nomount Status starten
    sqlplus / AS sysdba
    startup nomount
  • Controlfile über ein Auto Backup oder mit Pfadangabe wieder herstellen
    rman
    CONNECT target /
    rman>restore controlfile FROM autobackup;
    # alternativ
    rman>restore controlfile FROM ’f:\backup\name…..--hier das aktuellste controlfile nach dem backup nehmen
  • Datenbank im Mount Modus öffnen
    rman>ALTER DATABASE mount;
  • Backup überprüfen und alte Backups aus dem Controlfile löschen
    rman>crosscheck backup;
    rman>DELETE expired backup;
    • Falls Backups <fc #800000>nicht</fc> in der Flash Recovery Area liegen, neu katalogisieren
      rman>catalog START WITH ’f:\backup’;
  • Datenbank zurücksichern
    rman>restore DATABASE; 
  • Datenbank recoveren
    rman>recover DATABASE; 
    • Oder Alternativ in SQLPlus recoveren um manuell noch letzten Archive (in Szenarien um noch von einer aktuellen DB die letzten Änderungen bzgl. minimal downtime) einzuspielen
       sqlplus> RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL; 
  • 12c Datenbank Dateien nun mit Rest Logs im Upgrade Modus öffnen
    rman>ALTER DATABASE OPEN resetlogs migrate;
     
    RMAN-00571: ===========================================================
    RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
    RMAN-00571: ===========================================================
    RMAN-03002: failure OF SQL statement command at 02/06/2021 18:25:43
    ORA-04023: Object SYS.STANDARD could NOT be validated OR authorized

    Fehlermeldung kann ignoriert werden!


DB Upgrade auf 19c

Als SYS der gestoppten Instance anmelden und diese im Upgrade Modus starten

Prüfen ob die DB auch im Upgrade Modus (<fc #800000>OPEN MIGRATE</fc>) gestartet ist:

$ENV:ORACLE_SID="VDS"
 
sqlplus / AS sysdba
 
-- über die OraPowerShell Skripte:
 
@STATUS
 
STATUS ALL Instances
 
Inst          CHECK      CHECK      Instance START           Server
  Id STATUS   RESTRICT   Quiesce    Name     TIME            Name
---- -------- ---------- ---------- -------- --------------- -------------------------
   1 OPEN MIG RESTRICTED NORMAL     ora01    06.02.21 17:58  SDB02
     RATE
 
-- alternativ:
SELECT inst_id
      , STATUS
	  , logins
	  , active_state
      , instance_name AS name
      , to_char(STARTUP_TIME, 'dd.mm.YY hh24:mi') AS startzeit
	  , host_name 
  FROM gv$instance
;

Falls nicht läuft im Upgrade Modus starten:

$ENV:ORACLE_SID="VDS"
 
sqlplus / as sysdba
 
startup upgrade
exit

Zur Überwachung des Alert Logs der DB diese mit einem Tail in zweiten Fenster anzeigen lassen:

adrci
 
adrci> show homes
ADR Homes:
diag\rdbms\vds\vds
diag\tnslsnr\12CWIN2012ORA01\listener
 
adrci> set home diag\rdbms\vds\vds
 
adrci> show alert -tail -f
 
...
Completed: ALTER DATABASE OPEN MIGRATE
...

Den DB Upgrade auf 19c mit dem Perl Script starten

Nach dem Klone die Datenbank auf 19 mit dem neuen (seit 12c .-)) Perl Script „perl catctl.pl catupgrd.sql“ upgraden.

Aufruf des perl catctl.pl catupgrd.sql

Für das Loging den Ordner d:\temp\upgtrade anlegen.

Gibt es die Hardware etwas her kann mit dem Schalter „-n“ die Parallelität beim Upgrade gesetzt werden.

Auch sollte ein Log File Directory mit -l definiert werden, sonst landen die Logs alle im rdbms/Admin Verzeichnis!

Immer in einer DOS BOX starten! Keine login.sql Einstellungen (SQLPATH darf nicht gesetzt sein)

Aufruf:

cd %ORACLE_HOME%\rdbms\admin
 
#am einfachsten dann mit dem kompletten Pfad aufrufen
 
#Optionen anzeigen lassen und prüfen ob der Aufruf auch klappt
 
D:\oracle\product\19\dbhome_1\perl\bin\perl catctl.pl -h
 
#Upgrade starten
D:\oracle\product\19\dbhome_1\perl\bin\perl catctl.pl -n 4 -l d:\temp\upgrade catupgrd.sql
 
...
Number of Cpus        = 2
SQL Process Count     = 4
 
------------------------------------------------------
Phases [0-73]
Serial   Phase #: 0 Files: 1     Time: 241s
Serial   Phase #: 1 Files: 5     Time: 66s
Restart  Phase #: 2 Files: 1     Time: 0s
 
...
 
    Time: 113s
Serial   Phase #:70 Files: 1     Time: 816s
Serial   Phase #:71 Files: 1     Time: 1s
Serial   Phase #:72 Files: 1     Time: 0s
Serial   Phase #:73 Files: 1     Time: 22s
 
Grand Total Time: 6321s
 
LOG FILES: (catupgrd*.log)
 
Upgrade Summary Report Located in:
D:\oracle\product\19c\dbhome_1\cfgtoollogs\VDS\upgrade\upg_summary.log
 
Grand Total Upgrade Time:    [0d:1h:45m:21s]

Über das Tail im zweiten Fenster mit adrci kann nun gut der Fortschritt beobachtet werden.

Auch kann über ein PowerShell Tail das Logfile beobachtet werden:

Get-Content -Path "catupgrd0.log" -Wait
.....

Allerdings werden soviel Log Daten erzeugt, das die Konsole mit dem Spool nicht mehr nachkommt und dann am Ende über 15 Minuten hinter dem Ende des Logfiles der Spool erzeugt wurde, ist also nicht in Echtzeit.

DB Starten und prüfen

Nach dem Durchlaufen des catctl.pl die Datenbank starten und prüfen:

cd $ENV:ORACLE_HOME\rdbms\admin
 
sqlplus / as sysdba
 
startup
 
 
@?/rdbms/admin/utlusts.sql TEXT
--
 
Oracle Database Release 19 Post-Upgrade Status Tool    02-06-2021 18:57:2
Database Name: ORA01
 
Component                               Current         Full     Elapsed Time
Name                                    Status          Version  HH:MM:SS
 
Oracle Server                          UPGRADED      19.9.0.0.0  00:08:16
JServer JAVA Virtual Machine              VALID      19.9.0.0.0  00:00:55
Oracle XDK                             UPGRADED      19.9.0.0.0  00:00:40
Oracle Database Java Packages          UPGRADED      19.9.0.0.0  00:00:06
Oracle Text                            UPGRADED      19.9.0.0.0  00:00:24
Oracle Workspace Manager               UPGRADED      19.9.0.0.0  00:00:25
Oracle Real Application Clusters     OPTION OFF      19.9.0.0.0  00:00:00
Oracle XML Database                    UPGRADED      19.9.0.0.0  00:00:58
Oracle Multimedia                      UPGRADED      19.9.0.0.0  00:01:52
Datapatch                                                        00:02:51
Final Actions                                                    00:03:01
Post Upgrade                                                     00:00:23
 
Total Upgrade Time: 00:17:36
 
Database time zone version is 18. It is older than current release time
zone version 32. Time zone upgrade is needed using the DBMS_DST package.
Total Upgrade Time: 00:31:33

Sieht alles gut aus!

Post FixUp Script + Recompile

Das auf der alten Umgebung unter cfgtools das erzeugte Post Upgarde SQL auf den neuen Server nach d:\temp kopieren.

Post FixUp Script vom 12g Server aufrufen:

sqlplus / AS sysdba
 
--Falls noch nicht gestartet
startup
 
 
@d:\temp\postupgrade_fixups.sql
 
 
EXECUTE DBMS_STATS.gather_fixed_objects_stats;
 
 
-- Recompile 
@?\rdbms\admin\utlrp.sql
 
--check 
 
 
-- 19c
@?\rdbms\admin\utlusts.sql TEXT
 
Oracle DATABASE Release 19 Post-Upgrade STATUS Tool    02-06-2021 19:08:4
DATABASE Name: ORA01
 
Component                               CURRENT         FULL     Elapsed TIME
Name                                    STATUS          Version  HH:MM:SS
 
Oracle Server                             VALID      19.9.0.0.0  00:08:16
JServer JAVA Virtual Machine              VALID      19.9.0.0.0  00:00:55
Oracle XDK                                VALID      19.9.0.0.0  00:00:40
Oracle DATABASE Java Packages             VALID      19.9.0.0.0  00:00:06
Oracle Text                               VALID      19.9.0.0.0  00:00:24
Oracle Workspace Manager                  VALID      19.9.0.0.0  00:00:25
Oracle REAL Application Clusters     OPTION OFF      19.9.0.0.0  00:00:00
Oracle XML DATABASE                       VALID      19.9.0.0.0  00:00:58
Oracle Multimedia                         VALID      19.9.0.0.0  00:01:52
Datapatch                                                        00:02:51
Final Actions                                                    00:03:01
Post Upgrade                                                     00:00:23
Post Compile                                                     00:05:10
 
Total Upgrade TIME: 00:22:47
 
DATABASE TIME zone version IS 18. It IS older than CURRENT release TIME
zone version 32. TIME zone upgrade IS needed USING the DBMS_DST package.
 
--

Die Empfehlungen beachten und dann auch befolgen.

Prüfen ob der aktuelle Patch auch in der DB registriert ist

SET LINESIZE 400
SET PAGESIZE 100
COLUMN action_time FORMAT A20
COLUMN action FORMAT A10
COLUMN STATUS FORMAT A10
COLUMN description FORMAT A40
COLUMN version FORMAT A10
COLUMN bundle_series FORMAT A10
--
SELECT to_char(action_time, 'DD-MON-YYYY HH24:MI:SS') AS action_time
  , action
  , STATUS
  , description
  , target_version
  , patch_id
 FROM sys.dba_registry_sqlpatch
 ORDER BY action_time;

https://mikedietrichde.com/2016/11/30/dba_registry_history-vs-dba_registry_sqlpatch/

Prüfen das die Passwort Datei existiert und verwendet wird

Einträge in der Datei anzeigen lassen:

SELECT * FROM v$pwfile_users;

Query muss min einen Wert anzeigen.

Temp Tablespace Verwendung und Einstellung prüfen

Prüfen ob der Temp Tablespace automatisch mit den Restore angelegt wurde.

SELECT TABLESPACE_NAME,file_name FROM dba_temp_files;

Testen was für DEFAULT_TEMP_TABLESPACE eingestellt ist:

SELECT PROPERTY_NAME 
    ,  PROPERTY_VALUE 
  FROM DATABASE_PROPERTIES 
 WHERE PROPERTY_NAME LIKE  '%TEMP%';

Bei Bedarf vergrößeren:

ALTER TABLESPACE TEMP ADD TEMPFILE 'R:\ORACLE\ORADATA01\GPI\TEMP01.DBF' SIZE 1GB REUSE AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;

Prüfen ob die Marker Daten vorhanden sind

Vor dem letzten Schreiben eines Archivelogs in der Quell DB noch einen „Merker“ hinterleget.

Diesen Merker nun abfragen.

Zeitzone aktualisieren

siehe auch https://docs.oracle.com/database/121/NLSPG/ch4datetime.htm#NLSPG261

  • Status überprüfen mit
    SELECT * FROM V$TIMEZONE_FILE;
    SELECT * FROM DATABASE_PROPERTIES WHERE property_name LIKE 'DST%’
  • Herunterfahren und im Upgrade Modus starten
     sqlplus / AS sysdba
    shutdown IMMEDIATE
    startup upgrade
  • execute DBMS_DST.BEGIN_UPGRADE(<new_version>)
    EXECUTE DBMS_DST.BEGIN_UPGRADE(32)
  • DB stoppen und normal starten
     sqlplus / AS sysdba
    shutdown IMMEDIATE
    startup
  • Truncate error und trigger tables sys.dst$error_table and sys.dst$trigger_table
    TRUNCATE TABLE  sys.dst$error_table;
     
    TRUNCATE TABLE sys.dst$trigger_table;
  • Führe den folgenden DBMS_DST.UPGRADE_DATABASE aus (Jede Zeile einzeln kopieren!):
    SET serveroutput ON
    VAR numfail NUMBER
    BEGIN
       DBMS_DST.UPGRADE_DATABASE(:numfail,
                parallel                  => TRUE,
                log_errors                => TRUE,
                log_errors_table          => 'SYS.DST$ERROR_TABLE',
                log_triggers_table        => 'SYS.DST$TRIGGER_TABLE',
                error_on_overlap_time     => TRUE,
                error_on_nonexisting_time => TRUE);
    DBMS_OUTPUT.PUT_LINE('Failures:'|| :numfail);
    END;
    /
  • die DBA_TSTZ_TABLES Tabelle prüfen
     SELECT * FROM DBA_TSTZ_TABLES;
    SELECT * FROM SYS.DST$ERROR_TABLE;
    SELECT * FROM sys.dst$trigger_table;
  • Upgrade window beenden
    VAR numfail NUMBER 
    EXEC  DBMS_DST.END_UPGRADE(:numfail);
    print

Mehr zu den Thema auch in diesem PDF ⇒ https://www.doag.org/formes/pubfiles/11849808/2019-DB-Christian_Gohmann-Daylight_Saving_Time_DST_entmystifiziert-Praesentation.pdf

Auf User mit SYSTEM als local default temporay achten - ORA-12911: permanent tablespace cannot be temporary tablespace

Vermutlich wäre das schon nach der letzten Migration auf 12 in dieser DB zu erledigen gewesen:

SELECT username FROM dba_users WHERE local_temp_tablespace='SYSTEM';

⇒ 12.2 Database Upgrade Has Marked SYSTEM TABLESPACE As LOCAL_TEMP_TABLESPACE For Few Database Users (Doc ID 2385430.1) ⇒ siehe auch ⇒ https://dban00b.wordpress.com/2018/03/14/new-local-temporary-tablespace-in-12-2-defaults-to-system-for-some-users-after-upgrade/

User umziehen auf TMP mit:

SELECT 'alter user '||username||' LOCAL TEMPORARY TABLESPACE '||TEMPORARY_TABLESPACE;'
  from dba_users 
 where username not in ('XS$NULL'); 

Falls das nicht gefixt wird, fällt das erst beim nächsten Full Import in einer andern Datenbank auf:

Starting "SYSTEM"."SYS_IMPORT_SCHEMA_01": userid=system/******** DIRECTORY=DATA_PUMP_DIR_1 DUMPFILE=EXPORT_%U.DMP LOGFILE=EXPORT.log schemas=TEST

Processing object type SCHEMA_EXPORT/USER
ORA-39083: Object type USER:"GPI" failed to create with error:
ORA-12911: permanent tablespace cannot be temporary tablespace

19c Database Express freischalten

Besonders für die Performance Überwachung sehr hilfreich (Nur wenn die Tuning/Diagnostic Pack Lizenz auch erworben wurde, nützen!)

Siehe Die 12c Datenbank mit Database Express administrieren

Backup einrichten

Backup nach Bedarf einrichten und erstes Backup der neuen Umgebung erstellen. siehe auch Was muss alles gesichert werden

VEEAM Backup einrichten (in dieser Umgebung in Einsatz):

Autostart einrichten

Den Datenbank Service auf „Automatic“ setzen und die Autostart Einstellungen kontrollieren, siehe auch Start der Oracle Instance unter Windows.

VMWare DB Betriebsoptimierungen

DB Block Checking Parameter einstellen?

SYS@GPI-saturn>show parameter DB_ULTRA_SAFE

NAME                                 TYPE                              VALUE
------------------------------------ --------------------------------- ------------------------------
db_ultra_safe                        string                            OFF

----------
DATA_ONLY

- DB_BLOCK_CHECKING will be set to MEDIUM.
- DB_LOST_WRITE_PROTECT will be set to TYPICAL.
- DB_BLOCK_CHECKSUM will be set to FULL.


----------

alter system set db_ultra_safe='DATA_ONLY' scope=spfile sid='*';                        

https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/DB_ULTRA_SAFE.html#GUID-7462165C-1868-489C-B268-15400602883F und https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/DB_LOST_WRITE_PROTECT.html#GUID-52B4045A-5500-4C02-AFEB-80121659C0EE .

https://davidloinaz.wordpress.com/2016/04/11/truths-and-lies-about-db_lost_write_protect/

Bei Problemen ⇒ https://oracle-base.com/articles/misc/detect-and-correct-corruption#DB_BLOCK_CHECKING

Redo Log Optimierung bei Bedarf

Nur das inactive Online Redo kann ersetzt werden!!

-- jweils status prüfen mit @redo bzw mit:
 
ttitle  "Redolog  Status of each group"  skip 1  -
LEFT "Sizes in MB" skip 2
 
SELECT THREAD#
       ,  GROUP#
       ,  STATUS
       ,  to_char (round (  BYTES / 1024 / 1024,  2))|| 'M' AS REDOLOG_SIZE
    FROM v$log
ORDER BY 1, 2
/
 
 
-- jeweils weiter schalten mit:
ALTER system switch logfile;
ALTER system archive log ALL;
ALTER system checkpoint;
 
-- droppen mit der jeweiligen Gruppen Nummer die inactiv ist
ALTER DATABASE DROP logfile GROUP 1;
-- neu anlegen 
ALTER DATABASE ADD LOGFILE GROUP 1 ('I:\Oracle\oradata\GPIDB\redo01.log','X:\Oracle\oradata\GPIDB\redo01.log') SIZE 250M;
--usw... bis die gewünschte Anzahl in der gewünschten Größe alle da sind

NLS Lang Settings für lokale Jobs/Aufgaben prüfen

Lokale Scripte auf der neuen Maschine, falls vorhanden, verwenden die NLS Settings des entprechenden DB Homes mit dem diese Skripte aufgerufen werden. Nach einer Neuinstallation steht diese Einstellung auf der Sprache des Betriebsystem, daher mit der alten Maschine vergleichen und bei Bedarf anpassen.

Per Default stellt die DB Installation (in der Registry unter HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDB19Home1\NLS_LANG. ) auf die Maschinen Sprache und Land wie „ENGLISH_UNITED.KINGDOM.WE8MSWIN1252“

Diese nun wieder auf die „richtigen“ Wert der alten Umgebung wie „GERMAN_GERMANY.WE8MSWIN1252“ setzen.

Applikationen auf neue DB umkonfigurieren

Die bestehenden Applikation anpassen, tnsnames.ora etc.


Wartungsaufgaben auf der Maschine optimieren

Trace Dateien abschneiden

Leider kann zwar mit ADRCI der aller größte Teil der Logfile nach Alter regelmäßig gelöscht werden, die „alten“ Trace Dateien bleiben aber stehen.

Unter Linux lassen diese sich ja im Betrieb „abschneiden“, unter Windows ist das leider nicht so einfach möglich.

Dazu kann nun aber dieses Tool eingesetzt werden https://sourceforge.net/projects/logrotatewin/ bzw. ⇒ https://github.com/plecos/logrotatewin .



Quellen

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
dba/oracle_database_ms_windows.txt · Zuletzt geändert: 2021/02/11 17:27 von gpipperr

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki