Inhaltsverzeichnis
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
Umgebung optimieren
Backup Überlegungen:
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 NIE mehr ändern!
(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
- Siehe auch How to Disable IPv6 in Windows Server 2012
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
- Editor für Init- und Log-Files installieren wie Notepad++
- Prozesse überwachen und suchen wie Process Explorer von SysInternals
- 7zip weil Oracle Support Tools nicht mit Standard zip erstellt …. ⇒ https://www.7-zip.org/download.html
- Google Chrome oder Firefox um den IE zu übergehen für die DB Express Console
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:
- Als ORASYSTEM das Oracle Base Verzeichnis + Home anlegen wie d:\oracle\product\19\db_home1
- DB Software in das Oracle Home entpacken und aus Oracle Home mit dem Setup Programm initialisieren
- DB Home mit letzten DB Patch patchen
- 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
Nur falls im Einsatz;
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 nicht 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 (OPEN MIGRATE) 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!
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!)
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 .