Blog

Installation von Oracle Linux 8 mit Oracle Grid - Teil 1

Attila
IT–Consultant

Mit Oracle erweitern wir unsere Kompetenzen und unser Dienstleistungsspektrum in Person von Rainer und Attila. In diesem Artikel nimmt uns Attila mit in seine tägliche Arbeit und erklärt uns in zwei Teilen, wie man Oracle Linux 8 mit Oracle Grid installiert. Im zweiten Teil widmen wir uns mit der Erstellung einer 21c DB Home Datenbank.

Systemanforderungen

Das System muss mindestens folgende Parameter beinhalten:

  1. zwei logische CPUs
  2. 1,5 GB Arbeitsspeicher pro CPU
  3. 20 GB Speicherplatz (Oracle Empfehlung)

Wir arbeiten mit folgenden Parametern:

  1. 8 GB RAM
  2. 4 CPU Cores
  3. 60 GB für das OS
  4. 30 GB für ASM (Oracle Automatic Storage Management)

Vorgehen

Wir starten den Installationsprozess in dem wir Oracle Linux 8 ISO hier herunterladen.

  1. Sprache auswählen
  1. Die mit einem Ausrufezeichen markierten Punkte müssen manuell eingestellt werden und sind Pflichtaktionen. Zuerst erstellen wir die Laufwerke mit der Schaltfläche Installation Destination.
  1. Wählen Sie unter Storage Configuration -> Custom aus und klicken Sie auf Done.

Die automatische Aufteilung des Installers ist nicht wirklich optimal. Das Partitionskonzept sollte bestenfalls folgende Parameter berücksichtigen:

  • Den Verwendungszweck des Hosts
  • Die Anzahl der User
  • Oracle Software Installationen wie Grid Infrastruktur, Oracle Homes
  • Speicherung der datenbankspezifischen Dateien (wie Datafiles, FRA, Backups etc.) und auch externe Storage Optionen

Empfehlung von Oracle:

  • /boot: mindestens 1 GB
  • /boot/efi: mindextens 200 MB maximal 600 MB
  • / mindestens 10 GB
  • /home: Die allgemeine Empfehlung ist die "User Homeverzeichnisse" separat von der System Partition zu halten
  • /swap: Abhängig vom RAM des Systems. Empfehlung für Redhat und darauf basierende Linux Distributionen:

Wir empfehlen für die Installation der Oracle Software Binaries (RDBMS und ggf. ASM) eine separate Partition (/u01) zu verwenden.

Für unsere Konfiguration reichen folgende Partitionen:

  1. Unter Manual Partitioning muss man auf das “+” drücken, um einen neuen Mountpoint zu erstellen:

Folgende Kapazität legen wir dafür fest:

  • 2G für boot

Wir verfahren gleich mit boot/efi, geben hier allerdings 600 MB als Kapazitätsgrenze ein.

Für swap legen wir 8 GB fest und für / lassen wir die Kapazitätsgrenze weg.

Anschließend klicken wir auf done und accept changes.

  1. Wir geben unter User Settings das Root Passwort ein und legen einen Admin Account fest.
Das Heraufstufen auf eine Root-Shell mithilfe des Befehls su kann für Einzelbenutzerumgebungen und Workstations gut funktionieren, da nur eine Person das System verwaltet und das Root-Benutzerkennwort kennen muss. Dies lässt sich jedoch nicht ausreichend für gemeinsam genutzte Systeme mit mehreren Benutzern und Administratoren skalieren, die unterschiedliche Zugriffsebenen erfordern.

Oracle rät dringend davon ab, das root-Passwort mit anderen Benutzern zu teilen oder Remote-Benutzern zu erlauben, sich als root-Benutzer anzumelden, was beides eine schlechte und hochriskante Sicherheitspraxis darstellt.

Für Einzelbenutzerumgebungen kann man hier oracle auch anlegen für ein shared system ist das aber nicht empfohlen. Das Preinstall Paket erstellt den Oracle User beim Installieren und konfiguriert die richtigen Gruppen.

Systemrechte können mit der Datei /etc/sudoers vergeben werden.

  1. Unter Software Selection kann man einige nützliche Pakete mit installieren. Als Base Environment wählen wir Server aus. Zusätzliche Pakete und Tools sind optional und können auch später installiert werden. Nützliche Pakete sind:
  • Debugging Tools
  • Network File System Client
  • Performance Tools
  • Remote Management for Linux
  • Headless Management
  • System Tools
  1. Nun stellen wir das Netzwerk und den Hostnamen ein.
  1. Anschließend auf Beginn Installation drücken, damit die Installation gestartet wird. Nach Abschluss der Installation muss dann ein Reboot durchgeführt werden.

Fertig! Wir konnten mit diesen einfachen Schritten Oracle Linux 8 ganz simpel installieren. Nun geht es an die Konfiguration. Wie wir hier vorgehen, lesen Sie in den folgenden Abschnitten.

Unser Ziel ist es, Oracle Linux 8 als einen Standalone Host für die Oracle ASM und Grid Infrastructure zu konfigurieren.

1. Wir starten damit, die Netzwerkeinstellungen zu prüfen:

# IP Addresse abfragen
ifconfig

# Hostname prüfen und einstellen wenn nötig
vi /etc/hosts
127.0.0.1 localhost oratest1.mdf.testlab.local
123.123.123.123 oratest1.mdf.testlab.local oratest1

hostnamectl set-hostname oratest3.mdf.testlab.local --static

2. Wir erneuern den Repository Cache

Der remote Index und die Metadaten der Pakete werden lokal heruntergeladen, damit der dnf Befehl schneller ist.
Zunächst wechseln wir jedoch erst einmal auf root!

sudo -i
dnf makecache

3. Oracle Vorkonfiguration mit dem Preinstall Paket

Die Konfiguration von Linux für Oracle Software kann man entweder automatisch mit dem Preinstall RPM von Oracle ausführen oder man kann die Befehle manuell ausführen. Die manuelle Installation sollte man dann verwenden, wenn die Kundenumgebung eine spezielle Konfiguration braucht.

Die Oracle Dokumentation für die manuelle Vorkonfiguration kann man hier erreichen.

Das Preinstall Paket führt folgende Schritte durch:

  • Lädt und installiert extra Pakete
  • Konfiguriert die OS Gruppen
  • Erstellt den Oracle user
  • Stellt die Kernel Parameter richtig ein
  • Stellt die User Limits ein
  • Ändert die Bootkonfiguration
  • Stellt die netzwerkspezifischen Parameter ein
  • Schaltet die tranparent hugepages und die Defragmentierung aus entsprechend der Oracle Note: 1557478.1

Wir führen das Preinstall Paket mit folgendem Befehl aus:

dnf install -y oracle-database-preinstall-21c
Wenn es im Repository nicht gefunden wird, muss man den RPM herunterladen und lokal installieren:

oracle-database-preinstall-21c

dnf install -y oracle-database-preinstall-21c-1.0-1.el8.x86_64.rpm

4. OS Update

Die Aktualisierung des Betriebssystems kann eine gewisse Zeit in Anspruch nehmen, wenn es nicht aktuell ist.

# Updates prüfen
dnf check-update
# Update
dnf update
# Installations Dateien aufräumen wenn das Update erfolgreich war
dnf clean all

5. ASM Gruppen erstellen (optional)

Die Einrichtung verschiedener Gruppen hängt von der Sicherheitspolicy des Kunden ab. Fordert er Separation of Duties, also unterschiedliche Gruppen für die ASM-DB Administration, den ASM Betrieb und die ASM Administration, so müssen die geforderten Benutzer und Gruppen entsprechend eingerichtet werden. Hier im Beispiel werden alle Gruppen dem User oracle zugeordnet.

groupadd -g 54327 asmdba
groupadd -g 54328 asmoper
groupadd -g 54329 asmadmin

6. Benutzergruppen asmdba, asmoper und asmadmin dem oracle User zuordnen (optional)

Mit folgender Ausführung ordnen wir die Benutzergruppen dem oracle User zu.

usermod -a -G asmdba,asmoper,asmadmin oracle

7. Grid user erstellen

Der Grid-User wird nur benötigt, wenn zum Betrieb der Oracle Instanz die Datenfiles in ASM liegen sollen. Das ist i.d.R. im RAC Umfeld oder bei Verwendung von Oracle Restart (vgl. Grid Infrastructure Installation) der Fall.

Die im folgenden Codeblock verwendete Unix-interne Nummer des Grid-Users (54331) muss in Abstimmung mit eventuellen Richtlinien des Kunden gewählt werden. Oft hat der Kunde bereits Installationen auf anderen Servern. Dann sollten diese Nummern auf allen Servern gleich sein.

useradd -u 54331 -g oinstall -G dba grid

# Abhängig von Seperation of Duties Anforderungen(s.o.)
useradd -u 54331 -g oinstall -G dba,asmdba,asmadmin,asmoper,racdba grid

8. Passwörter für grid und oracle einstellen

In diesem Schritt richten wir die Passwörter für oracle und Grid ein.

passwd oracle
passwd grid

9. Verzeichnisse für die Grid Infrastruktur erstellen

Das Oracle Basisverzeichnis sollte lt. Oracle Empfehlung (OFA = Optimal Flexible Architecture) als /u01/app/oracle eingerichtet werden. Unterhalb des Basisverzeichnis werden dann die verschiedenen Produkte von Oracle installiert.

Oracle Optimal Flexible Architecture (OFA)-Regeln helfen die Datenbanksoftware zu organisieren und so zu konfigurieren, dass mehrere Datenbanken unterschiedlicher Versionen, die verschiedenen Benutzern gehören, koexistieren können.

Auch hier gibt es für die zu verwendenden Verzeichnisse Empfehlungen, vgl. Installation and Upgrade Guide (Einstieg in OFA), insbesondere Installation and Upgrade Guide (speziell zur Verzeichnisstruktur) und die Beispiele unter Pfadbeispiel gemäß OFA Empfehlungen

ORACLE_BASE
mkdir -p /u01/app/oracle

ORACLE_HOME
mkdir -p /u01/app/oracle/product/21.0.0/dbhome_1

Oracle als owner für /u01 und alle Unterverzeichnisse einstellen
chown -R oracle:oinstall /u01

GRID_BASE
mkdir -p /u01/app/grid
chown -R grid:oinstall /u01/app/grid/

GRID_HOME
mkdir -p /u01/app/21.0.0/grid
chown -R grid:oinstall /u01/app/21.0.0/grid

Berechtigungen für /u01 und Unterverzeichnisse einrichten
Eigentümer und Gruppe jeweils RWX, alle anderen User R-X
chmod -R 775 /u01

10. Grid Userprofil anpassen

Das Bash Profil wird mit oraenv erweitert, damit die Umgebungsvariablen automatisch nach dem Einloggen richtig gesetzt werden.

su - grid
cp /home/grid/.bash_profile /home/grid/.bash_profile_bkp

Folgende Umgebungsvariablen in der Datei .grid_env speichern und mit cat prüfen:

cd /home/grid/
echo "ORACLE_SID=+ASM" > .grid_env
echo "ORAENV_ASK=NO" >> .grid_env
echo ". oraenv" >> .grid_env

Umgebungsvariablen zum Profil hinzufügen

echo "source ~/.grid_env" >> ~/.bash_profile

Mit Grid ausloggen und wieder zurückgehen, um die Variablen neu zu laden.

exit
su - grid

11. NTP

Prüfen ob die Systemuhren synchronisiert sind, sofern ein NTP Server existiert.

systemctl status chronyd

12. SELinux konfigurieren

Security-Enhanced Linux prüft die Berechtigungen und Zugänge der Applikationen zu Dateien. Permissive loggt nur, enforcing erzwingt die Regeln.

sed -i s/SELINUX=enforcing/SELNUX=permissive/g /etc/selinux/config
setenforce Permissive

# Regeln von oracle für grid verwenden
# Wenn das Preinstall paket benutzt wurde (Version anpassen: 19c,21c)
cp /etc/security/limits.d/oracle-database-preinstall-19c.conf /etc/security/limits.d/grid-database-preinstall-19c.conf

# In der neuen Datei oracle auf grid ändern mit sed
sed -i s/oracle/grid/g /etc/security/limits.d/grid-database-preinstall-19c.conf

13. Standard Port der Firewall freischalten

Freischalten der Firewall. Oracle verwendet per Default den TCP Port 1521. Es sollte jedoch ein anderer Port verwendet werden, um die Sicherheit ein wenig zu erhöhen.

Für SSH ist es notwendig, Port 22 freizuschalten.

firewall-cmd --permanent --add-port=1521/tcp
firewall-cmd --permanent --add-port=22/tcp
systemctl stop firewalld
systemctl start firewalld

14. ASM Disk Partitionierung

Seit 11g empfiehlt Oracle, dass auch die CRS Dateien eine separate ASM Disk Gruppe haben sollten. Daher wird die Disk sdb (30 GB) auf drei Partitionen aufgeteilt:

  • CRS - 5 GB für Cluster Ressource Dateien wie OCR (Oracle Cluster Registry, Voting Disk Datei)
  • DATA - 15 GB für die Datenbank Datafiles, temporäre Dateien, redo logs und undo
  • FRA - 10 GB für die Flash Recovery Area (Archivelogs und Backups)

Voting Disk
Hierbei handelt es sich nicht um eine Platte, sondern um eine Datei, in der alle Knoten eines Clusters ihre Heartbeat-Informationen registrieren. Sie enthält auch die Liste der aktiven Knoten.

Oracle Cluster Registry (OCR)
OCR ist das, was die Registrierung für Windows ist. Sie enthält Schlüsselwertpaare verschiedener Ressourcen im Cluster. Grundlegende Informationen über die Ressourcen, deren Standort, Berechtigungen, aktueller Wert, Typ, Status usw. Es fungiert auch als Bootstrap für den Cluster Synchronization Services Daemon (CSSD) für Portinformationen, Knoten und Festplatten.

FRA - Flash Recovery Area
Die FRA bietet einen zentralen Speicherort für Sicherungs- und Wiederherstellungsdateien. Oracle erstellt archivierte Logs und Flashback-Logs im Fast-Recovery-Bereich. Oracle Recovery Manager (RMAN) kann seine Backup-Sätze und Image-Kopien im Fast-Recovery-Bereich speichern und verwendet sie beim Wiederherstellen von Dateien während des Mediarecovery. Der Fast-Recovery-Bereich fungiert auch als Disk-Cache für Backups auf Band.

Oracle Database verwaltet diesen Speicher automatisch und löscht Dateien, die nicht mehr benötigt werden. Durch das regelmäßige Kopieren von Sicherungen auf Band wird im Bereich für die schnelle Wiederherstellung Speicherplatz für andere Dateien frei.

# sdb Partitionierung 5G, 15G und 10G
fdisk /dev/sdb

Command (m for help): n
Partition type: Enter (ist Default)
Partition number: Enter
First sector (2048-62914559, default 2048): Enter
Last sector, +sectors or +size{K,M,G,T,P} (2048-62914559, default 62914559): +5G

Command (m for help): n
Partition type: Enter (ist Default)
Partition number (2-4, default 2): Enter
First sector (10487808-62914559, default 10487808): Enter
Last sector, +sectors or +size{K,M,G,T,P} (10487808-62914559, default 62914559): +15G

Command (m for help): n
Partition type: Enter
Partition number (3,4, default 3): Enter
First sector (41945088-62914559, default 41945088): Enter
Last sector, +sectors or +size{K,M,G,T,P} (41945088-62914559, default 62914559): Enter
Command (m for help): w
The partition table has been altered.

15. Udev-Regeln für die ASM Disks einstellen.

Udev ist der Device Manger für Linux.

cd /etc/udev/rules.d/
# ID der sdb Laufwerk speichern mit
/lib/udev/scsi_id -gud /dev/sdb
# ID für unseren /dev/sdb ist laut vorherigen Befehls:
36000c290247803885fc89cd157d518f6

# Mit vi 99-asm-disk.rules Datei erstellen und mit folgenden Inhalt speichern
vi 99-asm-disk.rules

# Inhalt:
# Den Disk ID zwischen den Klammern bei RESULT=="< disk ID >" einfügen
KERNEL=="sd*",ENV{DEVTYPE}=="partition",ATTR{partition}=="1",PROGRAM=="/lib/udev/scsi_id -gud /dev/$name",RESULT=="36000c290247803885fc89cd157d518f6",SYMLINK+="oracleasm/OCR_ASM_1", OWNER="grid", GROUP="oinstall", MODE="0660"
KERNEL=="sd*",ENV{DEVTYPE}=="partition",ATTR{partition}=="2",PROGRAM=="/lib/udev/scsi_id -gud /dev/$name",RESULT=="36000c290247803885fc89cd157d518f6",SYMLINK+="oracleasm/DAT_ASM_1", OWNER="grid", GROUP="oinstall", MODE="0660"
KERNEL=="sd*",ENV{DEVTYPE}=="partition",ATTR{partition}=="3",PROGRAM=="/lib/udev/scsi_id -gud /dev/$name",RESULT=="36000c290247803885fc89cd157d518f6",SYMLINK+="oracleasm/FRA_ASM_1", OWNER="grid", GROUP="oinstall", MODE="0660"

# Filesystem check für die Devices der drei Partitionen
fsck -N /dev/sdb?

# Die neuen Partitionen für den Kernel sichtbar machen
partx -u /dev/sdb1
partx -u /dev/sdb2
partx -u /dev/sdb3

# Simulation eines Udev Events (Test) auf den Partitionen
udevadm test /block/sdb/sdb1
udevadm test /block/sdb/sdb2
udevadm test /block/sdb/sdb3

# Udev Regel neu laden und prüfen
udevadm control --reload-rules && udevadm trigger --action=add
ls -l /dev/sdb?
ls -lt /dev/oracleasm

Mit dem vorigen und letzten Schritt sind wir nun auch fertig mit der Konfiguration von Oracle Linux 8 als Standalone Host.

Mit dieser Anleitung sollten Sie nun in der Lage sein, problemlos Oracle Linux 8 zu installieren und zu konfigurieren.
Falls Sie Probleme im Installationsprozess oder auch bei der Anwendung haben, stehen Ihnen unsere Oracle Experten mit Rat und Tat zur Seite.

Vereinbaren Sie gerne ein unverbindliches Beratungsgespräch und lassen sich von unseren Spezialisten umfangreich beraten. Kontaktieren Sie uns dafür gerne über unser Kontaktformular. Wir freuen uns von Ihnen zu hören!

Interesse geweckt?
Vielen Dank! Wir haben Ihre Anfrage erhalten!
Oops! Beim Senden ist etwas schiefgegangen, versuche es erneut.