Oracle Datenbank 12c Release 2 auf RedHat Enterprise Linux 7.5
Auch wenn Oracle Linux 7.5 (mit UEK) auf RHat 7.5 basiert, funktioniert die Installation darauf leider nicht so einfach wie beim Oracle eigenem Produkt. Leider gibt es sowohl in der Oracle Dokumentation als auch auf Support.oracle.com einige Fehler, die zu Problemen bei der Installation führen können.
Mit dieser Anleitung sollten Sie diese aber umschiffen können.
Verwendete Produkte
-
Redhat Enterprise Linux 7.5 (64Bit)
-
Oracle Datenbank 12.2.0.1 für Linux x68_64
-
Datenbank Patchset DATABASE APR 2018 RELEASE UPDATE 12.2.0.1.180417
-
OPatch Version 12.2.0.1.13
RedHat Enterprise Linux 7.5 Installation
Wie von Oracle auch im Oracle Database Installation Guide 12c Release 2 for Linux empfohlen, haben wir uns für eine Minimal Installation entschieden. Dies hat den Vorteil, dass wirklich nur die Software auf dem Server ist, die man auch benötigt und dadurch sowohl die Security höher ist (weniger Packages, weniger Fehler) als auch die Upgrades schneller werden (weniger Packages zum Updaten).
Allerdings hat dies den Nachteil, dass man keine vollständige GUI bekommt und nur mit X-Forwarding und/oder VNC installieren kann.
Folgende Namen und IP Adressen nutzen wir für unser Beispiel:
-
Hostname: oel7.example.com
-
LAN IP Adresse: 192.168.0.22
-
Storage IP Addr: 10.0.11.22
-
NFS Storage IP Addr: 10.0.11.1
-
Alle Oracle Software Produkte habe wir auf /u01/stage für die Installation bereit gestellt.
Minimal Installation
Bei der Minimal Installation muss man nur sicherstellen, dass die Zeitzone korrekt ist und die Netzwerkkarten richtig konfiguriert sind, damit man dann sofort remote (ssh) weiter arbeiten kann.
Nach der Installation und Registration des Servers bei RedHat sollte man unbedingt noch die aktuellsten Patches einspielen.
yum update
Loaded plugins: product-id, search-disabled-repos, subscription-manager
...
Pre Installation Tasks
Jetzt hätte man es mit dem Oracle Linux einfacher - hier reicht oft schon, wenn man mittels YUM das Package oracle-database-server-12cR2-preinstall-1.0-3.el7.x86_64 installiert. Dieses installiert alle benötigten RPMs, legt die Gruppen und Benutzer an und führt alle nötigen OS Einstellungen durch. Bei RedHat ist etwas mehr Handarbeit gefordert.
Host Namensauflösung
Damit der Oracle Installer kein Problem bekommt, muß man den Server im eigenen Hostsfile eintragen.
vi /etc/hosts
192.168.0.22 oel7.example.com oel7
Danach mittels ping verifizieren, dass dies auf funktioniert
# ping `hostname`
PING oel7.example.com (192.168.0.22) 56(84) bytes of data.
64 bytes from oel7.example.com (192.168.0.22): icmp_seq=1 ttl=64 time=0.021 ms
Benötigte Packages nachinstallieren
Wenn man das Display umleiten kann bzw. X-Forwarding nutzt, braucht man den VNC Server nicht installieren - er schadet aber auch nicht.
yum install tigervnc-server
Dann die von Oracle angegebenen Packages - alles in einer Zeile:
yum install bc ksh binutils.x86_64 gcc-c++.x86_64 compat-libcap1.x86_64 glibc.i686 glibc.x86_64 glibc-devel.i686 glibc-devel.x86_64 libaio.i686 libaio.x86_64 libaio-devel.i686 libaio-devel.x86_64 libX11.i686 libX11.x86_64 libXau.i686 libXau.x86_64 libXi.i686 libXi.x86_64 libXtst.i686 libXtst.x86_64 libgcc.i686 libgcc.x86_64 libstdc++.i686 libstdc++.x86_64 libstdc++-devel.i686 libstdc++-devel.x86_64 libxcb.i686 libxcb.x86_64 make.x86_64 make.x86_64 smartmontools.x86_64 sysstat.x86_64 net-tools
Die folgenden Packages gibt es mit RHat 7.5 nicht mehr - die Oracle Datenbank Installation war trotzdem erfolgreich.
yum install compat-libstdc++.i686 #### nicht vorhanden
yum install compat-libstdc++.x86_64 #### nicht vorhanden
Nicht installiert wurden die folgenden Packages, weil wir kein ASM und damit auch kein ACFS nutzen. Sollten Sie dieses einsetzen wollen, müssen Sie noch folgende Packages installieren:
yum install nfs-utils.x86_64 python.x86_64 python-configshell.noarch python-rtslib.noarch python-six.noarch targetcli.noarch
Als nächstes die Packages, die der Oracle Installer als noch fehlend bemängelt:
yum install unixODBC.x86_64 unixODBC.i686 unixODBC-devel.x86_64 unixODBC-devel.i686
Damit OPatch funktioniert und nicht mit dem folgendem Fehler abbricht, wird auch noch etwas benötigt...
## OPatch Fehler, wenn man versucht den April 2018 Patch zu installieren
Missing command :fuser
UtilSession failed:
Prerequisite check "CheckSystemCommandAvailable" failed.
...
Das fehlende Package:
yum install psmisc.x86_64
Dann die Packages, die man zum Arbeiten auf alle Fälle noch benötigt - oder wie wollen Sie die Patches entzippen?
yum install zip unzip xhost xterm
Damit haben wir einmal alle Packages, die man so benötigt, installiert.
OS Gruppen und Benutzer anlegen
Beginnend mit Oracle 12c werden eine Reihe weiterer OS Gruppen unterstützt um die neuen Connects (as SYSDM, SYSBACKUP, etc) mit Betriebssystem Authentifizierung durchführen zu können. Zwingen nötig sind nur die Gruppen oinstall und dba (sofern man diese nicht anders nennen möchte).
/usr/sbin/groupadd -g 54321 oinstall
/usr/sbin/groupadd -g 54322 dba
/usr/sbin/groupadd -g 54323 oper
/usr/sbin/groupadd -g 54324 backupdba
/usr/sbin/groupadd -g 54325 dgdba
/usr/sbin/groupadd -g 54326 kmdba
/usr/sbin/groupadd -g 54327 racdba
/usr/sbin/groupadd -g 54328 asmdba
Jetzt noch der Oracle Benutzer selbst.
/usr/sbin/useradd -u 54321 -g oinstall -G dba,asmdba,backupdba,dgdba,kmdba,racdba oracle
Wenn Sie einen grid Benutzer benötigen, können Sie diesen wie folgt anlegen:
/usr/sbin/useradd -u 54322 -g oinstall grid
Als nächsten Schritt dem Benutzer Oracle noch ein Passwort geben:
# passwd oracle
Und das Login Profile für die Bash etwas erweitern
su - oracle
vi .bash_profile
...
# User specific environment and startup programs
umask 022 export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/12.2.0/dbhome_1
export PATH=$PATH:$HOME/.local/bin:$HOME/bin:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch
Betriebssystem Session Limits für den Oracle Benutzer einstellen
Die Datenbank Instanz(en) benötigen viele Prozesse, Memory und Filezugriffe. Die von Oracle angegebenen Werte können zu klein sein, diese hier sollten auch für einen leistungsfähigen Server mit vielen Oracle Datenbank Instanzen reichen:
vi /etc/security/limits.conf
oracle soft nproc 131072
oracle hard nproc 131072
oracle soft nofile 131072
oracle hard nofile 131072
oracle soft core unlimited
oracle hard core unlimited
oracle soft memlock 50000000
oracle hard memlock 50000000
Als nächster Schritt die Betriebssystem Limits erhöhen
Sie können die aktuellen Einstellungen von jedem Parameter wie folgt prüfen. Sind die aktuell genutzten Werte kleiner, als die weiter unten angegebenen, sollten diese angepasst werden.
## Abfragen der aktuellen Einstellung
# sysctl -a |grep -e net.ipv4.tcp_rmem
net.ipv4.tcp_rmem = 4096 87380 6291456
Die Werte gehören eigentlich in /etc/sysctl.d/99-sysctl.conf eingetragen, Oracle schreibt diese aber immer noch auf /etc/sysctl.conf. Wir empfehlen das korrekte File...
Bitte die Werte nur dann setzen, wenn diese aktuell niedriger sind!
vi /etc/sysctl.d/99-sysctl.conf
kernel.sem = 250 32000 100 128
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
kernel.panic_on_oops = 1
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 4194304
net.ipv4.conf.all.rp_filter = 2
fs.file-max = 6815744
fs.aio-max-nr = 1048576
Und jetzt noch aktivieren
sysctl -p
Firewall deaktivieren
Damit es während der Installation keine Probleme gibt, sollte man temporär die Firewall deaktivieren und diese nach der Installation reaktivieren und die benötigten Ports freischalten.
# systemctl stop firewalld.service
# systemctl disable firewalld.service
# systemctl status firewalld.service
Danach verifizieren, dass das Service auch wirklich nicht mehr läuft:
# systemctl status firewalld.service
firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)
Die Verzeichnisse für die Installation (als root) vorbereiten
Wir nehmen an, daß die Installation auf den Standardpfad /u01/app/oracle erfolgen soll.
mkdir -p /u01/app/oracle
chown -R oracle:oinstall /u01
chmod -R 775 /u01/app
Oracle Software auspacken - als Benutzer oracle
Wir haben die Oracle Software zwischenzeitlich auf /u01/stage kopiert. Diese muß jetzt noch entpackt werden.
## als Benutzer Oracle
$ cd /u01/stage/
$ mkdir ora122
$ cd ora122
$ unzip ../linuxx64_12201_database.zip
$ unzip ../p27674384_122010_Linux-x86-64.zip
Oracle Datenbank Software Installation und Patch einspielen
Ab hier kommt es darauf an ob Sie mittels VNC oder X11-Forwarding (ssh -X oel7.example.com) arbeiten. Das Beispiel zeigt den Weg für VNC, weil dieser einige zusätzliche Schritte hat.
VNCserver als Benutzer Oracle starten
Als Oracle den VNCserver einfach folgenden Befehl starten. Beim ersten Start wird man nach dem Passwort für die VNC Session gefrage. Bitte bei der Frage nach "read only" unbedingt "n" für Nein eingeben!
$ vncserver
Danach das Display auf den VNCserver umlegen - in unserem Beispiel gehen wir davon aus, dass der VNCserver auf ":1" läuft (der default).
$ export DISPLAY=:1
$ xhost +
$ xterm
Oracle Installer starten (VNC und X11 Forwarding)
Ab hier sind die Schritte für VNCserver und X11 Forwarding wieder gemeinsam. Weiterhin als Benutzer Oracle:
$ cd /u01/stage/ora122/database/
$ ./runInstaller
... wir gehen davon aus, dass Sie die Schritte im Oracle Installer kennen. Wir empfehlen zuerst nur die Software zu installieren und erst nach dem Patchen mit dem DBCA die benötigte(n) Datenbank(en) anzulegen ...
Als Benutzer root die "root Scripts" ausführen, sobald der Installer dies verlangt.
# /u01/app/oraInventory/orainstRoot.sh
# /u01/app/oracle/product/12.2.0/dbhome_1/root.sh
Und jetzt den Installer beenden.
OPatch Patch installieren (immer noch als Benutzer Oracle)
Es ist ja quasi schon tradition, dass man vor dem einspielen eines Patches zuerst das Patching Tool OPatch selbst patchen darf...
$ cd $ORACLE_HOME
$ pwd ### prüfen ob man auch wirklich an der gewünschten Stelle steht!
$ unzip /u01/stage/p6880880_122010_Linux-x86-64.zip
Zuletzt noch den aktuellen Patchset einspielen
In unserem Beispiel verwenden wir den April 2018 Patchset
$ export PATH=$PATH:$ORACLE_HOME/OPatch
$ cd /u01/stage/ora122/27674384/
$ opatch apply
Optional: für Oracle dNFS relinken
Wir legen unsere Datenbanken auf eine NFS Storage. Aus Performancegründen mit Oracle dNFS (und JumboFrames mit MTU=9000).
$ cd $ORACLE_HOME/rdbms/lib
$ make -f ins_rdbms.mk dnfs_on
Damit haben Sie die Oracle Datenbank Software 12c Release 2 Installation auf RedHat Enterprise Linux 7.5 erfolgreich durchgeführt. Jetzt steht dem Erstellen von Datenbanken nichts mehr im Wege.
Zusammenfassung
Obwohl Oracle Linux 7.5 auf RedHat Enterprise Linux 7.5 basiert, ist es mit dem Oracle eigenen Linux etwas einfacher. Trotzdem geht die Installation auch auf RHat - mit einige kleineren Fallen - sehr einfach uns schnell.