Die Template VM ist eine Vorlage, die bei Bedarf einfach kopiert wird.
Die VM beinhaltet das Betriebssystem und die Installationen der Datenbank-Software für Datenbanken der Version 18c und 19c.
Diese Vorlage beschleunigt die Bereitstellung von VM’s inklusive der benötigten Software extrem.
Die Bereitstellung dauert somit nur noch weniger als 5 Minuten. Die Methode ist für VM’s jeder Art anwendbar, in den Beispiel wird jedoch auf VMWare Workstation eingegangen. Eine Verwendung im Rechenzentrum mit VSphere / ESXi ist auch praxisüblich.
- VM Erstellung
- VM einschalten und die Installation starten
- Nach der Basis-Installation
- Oracle Datenbank spezifische Einstellungen
- Installation der Datenbanksoftware
- Einen Klon erzeugen
Wir starten mit der Erstellung der VM
Wichtig: Wir belegen den Platz erst dann, wenn er benötigt wird!
Die restlichen Parameter lassen sich jederzeit ändern.
Das ISO-Image der Red Hat Disk einlegen
VM einschlalten und die Installation starten
Die Installation mache ich in der Regel immer zweispraching deutsch und amerikanisch.
Beim Installationstype wird Server mit GUI gewählt.
Die Software kann auch noch feingranularer installiert werden, uns geht es jetzt jedoch um eine schnelle Bereitstellung.
Nach der Basis-Installation
Den Hostnamen, die IP-Konfiguration und die IP-Adresse anpassen.
Redhat neu im Subscription-Manager registrieren
# subscription-manager remove --all --force
# subscription-manager unregister
# subscription-manager clean
# subscription-manager register --username {{USERNAME}} --password {{PASSWORT}} --auto-attach
Einrichtugn NTP (RHEL7)
Ist für RHEL8 nicht erforderlich.
yum install ntp
/etc/ntp.conf anpassen mit den ntp-server
z.B.
server ntp1.noris.net iburst
server ntp2.noris.net iburst
server ntp3.noris.net iburst
#einmalig die Zeit abholen
ntpd -gq
#Den NTP-Service starten
systemctl start ntpd.service
#Den NTP-Service auf autstart stellen
systemctl enable ntpd.service
#den Status prüfen
ntpstat
NFS-Share mounten
#Directory anlegen
[root@rhel83 ~]# mkdir -p /remote/database
#/etc/fstab erweitern um
nfs.demo.local:/nfs-shares /remote/database nfs rw,bg,hard,nointr,rsize=32768,wsize=32768,tcp,actimeo=0,vers=3,timeo=600 0 0
#NFS-Share mounten
[root@rhel83 ~]# mount /remote/database/
Firewall deaktivieren
[root@rhel83 ~]# systemctl stop firewalld
[root@rhel83 ~]# systemctl disable firewalld
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
Mounten der VMware Workstation Folders in die Vorlagen-Maschine
Hier liegen die ganzen Software Binaries und andere hilfreiche Dateien.
Das Resultat:
Nach dem Reboot geht der Mount leider verloren, anbei der Workaround zum Problem.
# Das Skript anlegen
#!/bin/bash
vmhgfs-fuse /mnt/hgfs
und ausführbar machen
[oracle@rhel83 ~]$ chmod +x mount.hgfs
jetzt noch den Mountpoint anpassen
[root@rhel83 ~]# chmod 777 /mnt/hgfs/
nach dem Reboot nun einfach als User Oracle das Skript "mount.hgfs" ausführen.
Oracle Datenbank spezifische Einstellungen
dnf install -y https://yum.oracle.com/repo/OracleLinux/OL8/baseos/latest/x86_64/getPackage/oracle-database-preinstall-19c-1.0-1.el8.x86_64.rpm
Nach der Installation ist die benötigte Software installiert, die Systemparameter sind gesetzt, die Gruppen und der User Oracle sind vorhanden.
User:
root@rhel83 Oracle]# id oracle
uid=54321(oracle) gid=54321(oinstall) Gruppen=54321(oinstall),54330(racdba),54322(dba),54323(oper),54324(backupdba),54325(dgdba),54326(kmdba)
Gruppen:
oinstall:x:54321:oracle
dba:x:54322:oracle
oper:x:54323:oracle
backupdba:x:54324:oracle
dgdba:x:54325:oracle
kmdba:x:54326:oracle
racdba:x:54330:oracle
[root@rhel83 Oracle]#
Das Passwort für den User Oracle setzen:
[root@rhel83 Oracle]# passwd oracle
ändere Passwort für Benutzer oracle.
Geben Sie ein neues Passwort ein:
passwd: alle Authentifizierungsmerkmale erfolgreich aktualisiert.
SE-Linux deaktivieren:
die Datei anpassen /etc/selinux/config .
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
Server rebooten und die Einstellungen prüfen.
SSH-Zugriff für den Benutzer Oracle einrichten
# SSH keys erzeugen
[oracle@rhel83@USERMGR] /home/oracle
$ ssh-keygen
# Nun noch die wichtigsten Keys in die authorized_keys einfügen
# Der eigenen Schlüssel, der vom Cloud-Controll und meiner
$ cat authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDJLAvA0zf4WjUo6Mym45QNVXSnmj6zxk3c2JXTlsN5JgKZk3Q5avmlC0aLVIibQpSNm1MG/V5W9PKr39cmV8SwHlR6Nch4q1lw6ZeeMKhonFNn+CNgMbdoXPftR0Im/21exc6MDotC4GxGz5a4rv+6I12a9IJqsskUPNJqgy0sFYRTaf+Fv6qELlTQqOcfuMNfMYYXoEgVULjNf6VsjGpC8MG/qHQzZaYSd4i0iaZAHEvYKrNwHMG/YqVYDdOMBCWaaNmhO+k0nntVgrJusxkSSJ0oqGIf7/46jmjWPaX6oSQUZMhYOBvsUIDDtb1WRVCLrlrO3Tg5nQ64vVX/NAKr Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!
ssh-dss AAAAB3NzaC1kc3MAAACBALfXFb/d273VZiHBmMmuZuB+9Sc2St2lHTfCRY6zSxuspwxnQvS2txTiDaBggc7jjNMNGaVooAba84NYqE2WE4FGUadL+9ERpLO1rI4bgJl0ZdSaM4aeBESr2jkTjWYyFrwJ8mpmZjaN/AL17QiiO6zLAm2Ngdt3re3WusD07W2xAAAAFQDmumOZR+fuHKnvBc/hBOdNv6mHdwAAAIEAnQBp2aF6qqSPNGXFgaO9TVkUyU0Dr8qLQlA7isRSiZkiyKiAY8IhFzI5B6vZiig3FYgufHArKiR0hrSrL25Ck9Io0LwWgpUxVNY83tepROLmJ2CJw0VofCmS1buAzOFci4P/yzWpLTCnDVWiT0QOZEUuxdgKCJ5OvLeNZ2o+lKkAAACAK1Xx6lYz/31G5Ly7P7/HRu39s1LpEeLL7Z1GI4CREB/MYjMJL+I12BEnwb/DjQTmsi1CBzmb0+5XO5CAIUl0I6Yr+lInhAwArrYQ1m87PSpORr1nNCzhxeO1QTbJ4Mx4EUWQTaqQFZlg50NF8LWF51VmuB0bugLROZ+6fVn0vyc= Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDYbz1qot7iZuVwB9Lh/cdwOZAWCDKFxRRUmtRpAfMvuw3t+hI6JjADX2cqrgqAK6Yy/IHZMd0JYzglkSkxhoWNTKObdT/iQf4M92BHa9vxk+JitL1T28Pmig5z9wLoE4dCU14p0MBZqxcZibtsU098LDOb0EaEB5rj304ZpqaWY4D7ZdUrwsrjZ/o8fBc6NlqgcgLSx6ZCuJ7WZBgovAqb9d7NcP0aJwTa+KdNTtx3Zf0k4GbqToBUdUAiO0yjmP1eM4LcG0z0nTONp8vIHXf5tyemyPtprfYzeaPS/Aifw74vsg01df/VYq0WoJrr4lAFCCJjITNWfY02w9bcSTKhFpjwyxPmrT9f6q6ajTcg8F9Q8PyYmuWKqRWCAANZ3PeU9tgpXYumIwOdgAQ8mS04KW+N4lytqUB9ROWxtSavz6I9NqXH17S2qixFCfmg7JUYt9EAB0ml4mrOIBQxPSr0Uljm7pw3pmfhA6UvfFJ0ouzYBn/eKPzXr++eNS6/nI8= Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!
# Prüfen ob die UMASK der authorized_keys Ok ist
oracle@rhel83@USERMGR] /home/oracle/.ssh
$ ls -l known_hosts
-rw-r--r-- 1 oracle oinstall 171 21. Dez 07:50 known_hosts
Setup der Oracle Datenbank Binaries
Die Verzeichnisse für die Binaries und die Datafiles erzeugen
[root@rhel83 ~]# mkdir /app
[root@rhel83 ~]# chown oracle:oinstall /app
[root@rhel83 ~]# mkdir /oradata
[root@rhel83 ~]# chown oracle:oinstall /oradata
.bash_profile für den Benutzer Oracle anpassen
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
export PATH
export PATH_ORG=$PATH
PS1="\[\e[32;1m\][\u@\h@\$ORACLE_SID] \$PWD \e[m
$ "
function agent(){
export ORACLE_HOME=/app/oracle/product/agent/agent_13.4.0.0.0
export PATH=$ORACLE_HOME/bin:$PATH_ORG
alias oh='cd $ORACLE_HOME'
}
function ora_18(){
export ORACLE_HOME=/app/oracle/product/18c
export PATH=$ORACLE_HOME/bin:$PATH_ORG
alias oh='cd $ORACLE_HOME'
alias sql='sqlplus / as sysdba'
export ORACLE_SID=USERMGR
}
function ora_19(){
export ORACLE_HOME=/app/oracle/product/19c
export PATH=$ORACLE_HOME/bin:$PATH_ORG
alias oh='cd $ORACLE_HOME'
alias sql='sqlplus / as sysdba'
}
function ora_18_grid(){
export ORACLE_HOME=/app/oracle/product/18grid
export PATH=$ORACLE_HOME/bin:$PATH_ORG
alias oh='cd $ORACLE_HOME'
alias sql='sqlplus / as sysdba'
}
function ora_19_grid(){
export ORACLE_HOME=/app/oracle/product/19grid
export PATH=$ORACLE_HOME/bin:$PATH_ORG
alias oh='cd $ORACLE_HOME'
alias sql='sqlplus / as sysdba'
}
function de(){
echo "Setting DE"
export NLS_LANG=GERMAN_GERMANY.AL32UTF8
export LANG=de_DE.UTF-8
}
function us(){
echo "Setting US"
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export LANG=en_US.UTF-8
}
Die Verzeichnisse für die Software erstellen und die Binaries kopieren.
Die Binaries in das jeweilige Oracle-Home kopieren, Oracle 18c und Oracle 19c, und entpacken.
Jetzt wird die Datenbank Software installiert, wieder jeweils für Oracle18c und Oracle 19c.
Es wird jedoch keine Datenbank erstellt!
Beim Aufruf von ./runInstaller kommt die Fehlermeldung.
Da wir RHEL 8 im Einsatz haben.
Die Lösung für das Problem:
Requirements for Installing Oracle Database/Client 19c on OL8 or RHEL8 64-bit (x86-64) (Doc ID 2668780.1)
# Wurde noch in die .bash_profile aufgenommen
export CV_ASSUME_DISTID=OL7
Nun kann die Installation starten sowohl die Version 18c sowie die Version 19c
Die Root-Skripte noch ausführen und fertig.
#Als root
/app/oracle/product/19c/root.sh
Noch das letzte RU installieren
Vorab nuss OPatch noch auf den aktuellen Stand gebracht werden
#Das RU auspacken, die Anleitung lesen
#Einen VM Snapshot machen und loslegen
#Datenbank
oracle@rhel83@] /tmp/patch/19c/31771877
$ $ORACLE_HOME/OPatch/opatch apply
#OJVM
[oracle@rhel83@] /tmp/patch/19c/31668882
$ $ORACLE_HOME/OPatch/opatch apply
Nun ist die Grundinstallation agbeschlossen und Maschine ist bereit für das Klonen.
Einen Klon erzeugen
Die Template Maschine sollte offline sein.
Hier mache ich immer einen "Full Clone", macht die Verwaltung der VM's einfacher.
Wir haben jetzt einen Klon der VM erstellt.
Nach dem Start muss nun noch der Hostname, die IP-Adresse und ggf. die Red Hat Subscription angepasst werden.
#/etc/hostname
rhel-83-test.demo.local
#/etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.111.141 rhel-83-test.demo.local rhel-83-test
#vi /etc/sysconfig/network-scripts/ifcfg-ens160
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
NAME=ens160
UUID=63e5686d-05a1-4341-bf52-91cee91d7f74
DEVICE=ens160
ONBOOT=yes
IPADDR=192.168.111.141
PREFIX=24
GATEWAY=192.168.111.2
DNS1=192.168.111.100
PEERDNS=no
Server duchstarten und das Resultat prüfen.
[oracle@rhel-83-test@] /home/oracle
$ hostname
rhel-83-test.demo.local
[oracle@rhel-83-test@] /home/oracle
$ ifconfig
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.111.141 netmask 255.255.255.0 broadcast 192.168.111.255
inet6 fe80::20c:29ff:fe00:bc30 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:00:bc:30 txqueuelen 1000 (Ethernet)
RX packets 105 bytes 9120 (8.9 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 132 bytes 14760 (14.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
...
[oracle@rhel-83-test@] /home/oracle
$
Somit können wir nun in 5 Minuten einen kompetten Datenbank-Server breitstellen.