Inhaltsverzeichnis
Ein Oracle Linux 7 Basis System als Grundlagen für eine Oracle Clusterware und Datenbank Installation vorbereiten
Update auf Linux 7.5 - Juni 2018
Zum Einsatz kommt Oracle Linux 7.0, ab 01.12.2015 ein Oracle Linux 7.2, ab 07.2018 ein Oracle 7.5.
Diese Software kann hier heruntergeladen werden: https://edelivery.oracle.com/osdc/faces/SearchSoftware
Unterstützt wird zur Zeit für die DB (03.2015) ein Oracle Linux 7 mit dem Unbreakable Enterprise Kernel 3.8.13-33.el7uek.x86_64 oder später.
Grundinstallation
Für eine minimale Installation ist min 8GB RAM, ca. 40-50GB Harddisk, 1 bis 2 Netzwerk Karten (2 Karten für Cluster) und eine CPU notwendig um eine VMWare Maschine aufzusetzen. Weniger Speicher ist nicht zu empfehlen, gerade für eine ASM oder Oracle Cluster Umgebung ist hier großzügig zu planen!
Normale Grundinstallation als minimaler Server, keine weiteren Packte ausgewählt.
Als Sprache aber „Englisch“ wählen, je nach Bedarf deutsche Tastatur einstellen.
Die Platte wird manuell konfiguriert, das Default Layout verwendet sehr viel Platz für den User Home Pfad. (500MB boot, 4GB Swap, Rest für root „/“ als LVM mit xfs).
Nicht die Option „Installation Source“ wählen! Einmal angeklickt muss hier eine gültige URL eingeben werden oder es kann neu angefangen werden .-(, gültige URL ist z.b. https://yum.oracle.com/repo/OracleLinux/OL7/latest/$basearch/.
Für die reine Oracle Installation werden dabei ca. ~6GB für die DB Software am Plattenplatz benötigt.
Ablauf nach der Grundinstallation:
- Netzwerk Konfiguration durchführen
- Yum Repository einrichten
- SE Linux ausschalten
- OS update einspielen
- Notwendige Linux Pakete einspielen
- Hugepages einrichten
- Firewall Einstellungen prüfen
- NTP prüfen/aktivieren
- Kernel Settings überpürfen/anpassen
- TempFs überprüfen
- Oracle für ASM und Oracle Home einrichten
- Oracle Verzeichnisse anlegen
- Super für die Administration der verschiedenen User bei Bedarf einrichten
VMWare Setup
Kommt VMWare zum Einsatz, ist die Installation der Tools zu empfehlen.
Tools installieren, Tools CD Mounten und VMwareTools-9.6.2-1688356.tar.gz nach /tmp kopieren, auspacken und installieren
yum install perl yum install net-tools mount /dev/cdrom /mnt cp /mnt/VMwareTools-9.6.2-1688356.tar.gz /tmp cd /tmp tar xvfz VMwareTools-9.6.2-1688356.tar.gz cd /tmp/vmware-tools-distrib ./vmware-install.pl #Nur das Notwendigstes auswählen, ist ja kein X installiert reboot
Bei Fehler „The path “„ is not a valid path to the 3.8“ beim siehe⇒ https://fritshoogland.wordpress.com/2013/12/16/building-vmware-tools-in-your-oracle-linux-uek3-vm/
ln -s /usr/src/kernels/3.8.13-55.1.8.el7uek.x86_64/include/generated/uapi/linux/version.h /usr/src/kernels/3.8.13-55.1.8.el7uek.x86_64/include/linux/version.h
Alternativ nur die Open-VMWare Tools
yum install open-vm-tools
Basis Konfiguration
Nach der Grundinstallation folgende Schritte durchführen.
Netzwerk Konfiguration
In Linux 7 haben sich einige Änderungen am Netzwerk Stack ergeben, siehe http://www.resetlogs.com/2014/08/ol7-network.html.
Um Probleme mit älteren Werkzeugen und vor diesen Verfahren entwickeltere Software aus den Weg zu gehen empfehle ich die alte Namenskonvention wieder zu aktivieren: Unter Linux 7 den Netwerk Interface Namen wieder auf Standard Verhalten umstellen
Um die alten Kommandos wieder zu erhalten, kann aber über „yum info net-tools“ nach installiert werden.
Im ersten Schritte versuchen wir mal mit dem neuen auszukommen, siehe auch Deprecated Linux networking commands and their replacements
Bei der Installation der 12c Rac Clusters ergibt sich aber beim root.sh eine Fehlermeldung (sh: /bin/netstat: No such file or directory ) daher, idt doch die Installation der Linux 6 Tools zu Empfehlen (yum install net-tools).
Für ein Oracle Cluster werden mindestens 2 Netzwerkkarten benötigt, eine (eth0) für die Public IP Adresse und das VIP Interface und den Scan Listener und min. eine Karte (eth1) für den lokalen Interconnect zwischen den Maschinen.
In einer RAC Umgebung können aber auch mehrere Interfaces für den Interconnect zwecks Ausfallsicherheit konfiguriert werden.
- Bzgl. Netzwerk Konfiguration für ein Oracle Cluster siehe auch Ein neues VIP und ein neues Netzwerk einem RAC Cluster ONLINE hinzufügen
Status:
ip link show
Unter Linux 7 wird eine Netzwerkkarte aber nicht mehr so benannt wie zuvor unter Unix gewohnt, um Probleme damit aus den Weg zu gehen, den Interface Name wieder auf den alten eth0/1 Standard konfigurieren:
Alte Tools nachinstallieren
yum install net-tools
Netzwerk IP Adresse für eth0 und eth1 hinterlegen und prüfen
#Was ist bereits wie eingerichet pifconfig #Bei Bedarf entsprechend konfigurieren cd /etc/sysconfig/network-scripts/ # Dateien für ifcfg-eth* entsprechend anlegen # auf einen Netzmask Eintrag achten! PREFIX0=24
NOZEROCONF Parameter setzen:
vi /etc/sysconfig/network NOZEROCONF=yes
Hostname prüfen und bei Bedarf neu setzen
#über Kommando Werkzeug hostnamectl set-hostname racdb01.pipperr.local # Neue Session starten und püfen nmcli general hostname # Konfiguration prüfen cat /etc/hostname
Nameserver konfigurieren
- siehe auch Raspberry PI als DNS Applicance für PowerDNS
Nameserver auf dem Host konfigurieren
yum install bind-utils vi /etc/resolv.conf search pipperr.local nameserver 192.168.178.100 #prüfen ob auf den Netzwerk Interface auch der gleiche Nameserver konfiguriert ist! vi /etc/sysconfig/network-scripts/ifcfg-eth0 DNS1=192.168.178.100 systemctl restart network #prüfen host racdb01-vip.pipperr.local dig -x 10.10.10.192
Servername in der Host Datei hinterlegen
vi /etc/hosts 10.10.10.190 raccb01.pipperr.local raccb01
avahi-daemon ausschalten
avahi-daemon ⇒ „zero-configuration networking (zeroconf) implementation“
systemctl disable avahi-daemon
IP V6 ausschalten
vi /etc/sysctl.conf # disable ipv6 net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1 #aktivieren sysctl -p #Testen mit: cat /proc/sys/net/ipv6/conf/all/disable_ipv6 1 # 1=Ausgeschaltet!
Update
Yum Repository prüfen, Konfiguration bei Bedarf anlegen:
# cd /etc/yum.repos.d wget http://public-yum.oracle.com/public-yum-ol7.repo
Update mit:
yum update
Tools nachinstallieren
Nmon
Top Ersatz mit einfacher Bedienung und vielen Featuren.
Nmon in der Version nmon_x86_64_rhel6 - über http://sourceforge.net/projects/nmon/files/nmon_x86_64_rhel6/download herunterladen, bzw nun die aktuelle Version für 7.1 https://sourceforge.net/projects/nmon/files/nmon16e_x86_rhel72/download verwenden.
cp nmon16e_x86_rhel72 /sbin/nmon chmod 777 /sbin/nmon
zip
yum install zip unzip
Linux Tools wie lsof / finger
Offene Datei/System Pointer anzeigen lassen
Per default in der Minimal Server Installation anscheinend nicht mehr dabei.
yum install lsof finger strace
Für 12c R2
Für Installer und clufy rpm:
yum install smartmontools psmisc xdpyinfo
Screen
siehe auch Skripte mit screen in den Hintergrund schieben
Falls kein screen verfügbar ist, nachinstallieren mit:
yum install screen
Firewall und SELinux
Da in einer reine Testumgebung keine FW notwendig ist, diese deaktivieren
Firewall unter linux7 deaktivieren
systemctl disable firewalld systemctl stop firewalld
SELinux deaktiviert
[root@nosqldb01 ~]# vi /etc/selinux/config .. SELINUX=disabled .. reboot #testen getenforce Disabled
SSH optimieren, automatisches X Forwarding aktivieren
Um Timeouts zu vermeiden
vi /etc/ssh/sshd_config LoginGraceTime 0
Bei folgenden Fehler beim Login über z.B. MoboTerm:
- „x11 forwarding request failed on channel 0“
yum install xauth vi /etc/ssh/sshd_config X11Forwarding yes X11UseLocalhost no #restrict to ipv4 AddressFamily inet systemctl restart sshd # abmelden und erneut per ssh anmelden # Meldung " /usr/bin/xauth: file /root/.Xauthority does not exist" # prüfen ob nun diese Datei anlegt wurde ls -la /root/.Xauthority OK!
Tipp: Zum Debuggen von SSL den Schalter -v verwenden wie „ssh -v localhost“
Keine Banner oder ähnliches setzen! Das stört erheblich die Installation!
siehe auch bzgl. ipv6 https://major.io/2014/07/24/x11-forwarding-request-failed-on-channel-0/
Name Service Cache Daemon
Für eine Grid Umgebung: Den Name Service Cache Daemon aktiveren
yum install nscd systemctl enable nscd
Mit dem Befehl „nscd -i hosts“ kann der Cache bei Bedarf neu geladen werden.
Tmp
Prüfen das ausreichend tmp Platz vorhanden ist, min. 1GB
Falls das Tmp Verzeichnis als eigene Disk gemountet ist, darauf achten das „Execute“ gesetzt ist und nicht mit „noexec“ gemounted wurde
cd /tmp df . -h cat /etc/fstab
Ntp
Zeitdienst prüfen und einrichten
Leider wird CHRONY von Linux 7 nicht unterstützt und muss deaktiviert werden
systemctl stop chronyd systemctl disable chronyd
Siehe auch ⇒ Die Uhrzeit unter Linux für eine Oracle Cluster Installation überwachen/prüfen und kontrollieren
Auf die „ -x“ Option achten!
yum install ntp # Optionen setzen # vi /etc/sysconfig/ntpd OPTIONS=" -x -g" # Set the ntp Settings # vi /etc/ntp.conf #server # My local ntp Server server 192.168.178.1 #rights # The rac public network can use the ntp restrict 10.10.10.0 mask 255.255.255.0 nomodify notrap #check your local nameserver and set the time ntpdate 192.168.178.1 #activate the service systemctl enable ntpd systemctl start ntpd systemctl status ntpd ntpq -p #bei fehlern prüfen mit: journalctl -xn
Fehler:
Mar 11 20:51:29 racdb01 ntpd[2330]: 0.0.0.0 c617 07 panic_stop -3601 s; set clock manually within 1000 s.
Lösung: „–g, –panicgate“ Schalter, falls beim ersten Start der time offset > 1000s beendet sich der ntpd
Auf allen Knoten im Cluster prüfen das diese Ausgabe die selben Werte anzeigt:
ntpq -pn
Der Installer prüft das später ab!
Software Packte nachinstallieren
Mit Oracle 7.2 ist wieder das oracle-rdbms-server-12cR1-preinstall.x86_64 vorhanden.
12c
yum install oracle-rdbms-server-12cR1-preinstall.x86_64
18c
?
Vor 7.2
Leider ist für Linux 7.0 das „oracle-rdbms-server-12c-preinstall.x86_64“ noch nicht verfügbar, daher müssen alle notwendigen Packete mit „yum“ nachinstalliert werden.
Zusätzliche Pakete (diese oder eine höhere Version!):
- binutils-2.23.52.0.1-12.el7.x86_64
- compat-libcap1-1.10-3.el7.x86_64
- gcc-4.8.2-3.el7.x86_64
- gcc-c++-4.8.2-3.el7.x86_64
- glibc-2.17-36.el7.i686
- glibc-2.17-36.el7.x86_64
- glibc-devel-2.17-36.el7.i686
- glibc-devel-2.17-36.el7.x86_64
- ksh
- libaio-0.3.109-9.el7.i686
- libaio-0.3.109-9.el7.x86_64
- libaio-devel-0.3.109-9.el7.i686
- libaio-devel-0.3.109-9.el7.x86_64
- libgcc-4.8.2-3.el7.i686
- libgcc-4.8.2-3.el7.x86_64
- libstdc++-4.8.2-3.el7.i686
- libstdc++-4.8.2-3.el7.x86_64
- libstdc++-devel-4.8.2-3.el7.i686
- libstdc++-devel-4.8.2-3.el7.x86_64
- libXi-1.7.2-1.el7.i686
- libXi-1.7.2-1.el7.x86_64
- libXtst-1.2.2-1.el7.i686
- libXtst-1.2.2-1.el7.x86_64
- make-3.82-19.el7.x86_64
- sysstat-10.1.5-1.el7.x86_64
- compat-libstdc++-33.x86_64
- nfs-utils-1.2.3-15yum
Alternativ noch für ODBC:
- unixODBC
- unixODBC-devel
Alle auf einmal installieren:
#64bit yum install binutils compat-libcap1 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst make sysstat unixODBC unixODBC-devel compat-libstdc++-33 nfs-utils #32bit yum install glibc.i686 glibc-devel.i686 libaio.i686 libaio-devel.i686 libgcc.i686 libstdc++.i686 libstdc++-devel.i686 libXi.i686 libXtst.i686 unixODBC.i686 unixODBC-devel.i686
Oracle User Grid und Oracle anlegen
Einige Gruppen und User existieren evlt. schon wenn mit „oracle-rdbms-server-12cR1-preinstall“ zuvor installiert wurde.
Gruppen und User anlegen:
groupadd -g 1000 oinstall groupadd -g 1001 dba groupadd -g 1002 asmadmin useradd -u 1100 -g oinstall -G dba oracle usermod -a -G asmadmin oracle passwd oracle useradd -u 1101 -g oinstall -G dba grid usermod -a -G asmadmin grid passwd grid
Software Verzeichnis anlegen
Database:
mkdir -p /opt/oracle chown -R oracle:oinstall /opt/oracle chmod -R 775 /opt/oracle mkdir /opt/oraInventory chown grid:oinstall /opt/oraInventory chmod 777 /opt/oraInventory chmod o-w /opt/oraInventory
Grid: (auf die richtige Software Version achten!)
mkdir -p /opt/18.1.0.0/grid chown -R grid:oinstall /opt/18.1.0.0/grid chmod -R 775 /opt/18.1.0.0/grid
Tmp File Verhalten
Configure verify temporary location for auto cleanup!
Anmerkung von orachk:
# #On Linux OL7/RHEL7, if proper configuration setting is not then the communication socket files under directories #/tmp/.oracle and /var/tmp/.oracle directories get deleted. #Risk: Communication break down between Clusterware, ASM,Database and listener. #Action / Repair: vi /usr/lib/tmpfiles.d/tmp.conf x /tmp/.oracle* x /var/tmp/.oracle* x /usr/tmp/.oracle*
Shared Memory File System Mount on Linux
Set to:
#Check df -h #if missing more /etc/fstab |grep "tmpfs" vi /etc/fstab tmpfs /dev/shm tmpfs rw,exec,size=2048M 0 0
Huge Page Settings
see Artikel über Huge Pages:Huge Pages für eine Oracle Datenbank einrichten - Transparent Huge Pages deaktivieren
Disable Transparent Huge Pages
Noch in Linux 7 aktiv?? Prüfen
Pürfen ob im Einsatz:
cat /sys/kernel/mm/redhat_transparent_hugepage/enabled # so im einsatz [always] never
Aussschalten über Grub
vi /etc/default/grub GRUB_CMDLINE_LINUX=".... transparent_hugepage=never" #Grub Config neu schreiben lassen grub2-mkconfig -o /boot/grub2/grub.cfg
User Securtiy und Limits setzen
/etc/security/limits.conf:
vi /etc/security/limits.conf oracle soft nofile 131072 oracle hard nofile 131072 oracle soft nproc 131072 oracle hard nproc 131072 oracle soft core unlimited oracle hard core unlimited oracle soft memlock 50000000 oracle hard memlock 50000000 oracle soft stack 10240 grid soft nofile 131072 grid hard nofile 131072 grid soft nproc 131072 grid hard nproc 131072 grid soft core 10000000 grid hard core 10000000 grid soft memlock 50000000 grid hard memlock 50000000 grid soft stack 10240
Bei sehr großen verfügbaren RAM und geplannten großen SGA's auf der Maschine, evtl die Core Dump Size einschränken, um die Platte nicht zu überlasten, z.b. auf 10MB = 10000000 bytes.
/etc/pam.d/login:
vi /etc/pam.d/login … session required pam_limits.so …
In einer zweiten Console prüfen ob jetzt noch eine Anmeldung möglich ist, nicht das ein kleiner Fehler einem vom System ausschließt!
Global Profile (/etc/profile )
vi /etc/profile if [ $USER = "oracle" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi if [ $USER = "grid" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi
Als Oracle User testen:
su - oracle ulimit -Sn 65536 ulimit -Hn 65536 ulimit -Su 16384 ulimit -Hu 16384 ulimit -Ss 10240 ulimit -Hs Unlimited
Umask setzen
Für Grid und Oracle User:
su - oracle vi .bashrc umask 0022 #dann aus su - grid
Dump Verhalten optimieren
Zentrales Verzeichniss für Dumps einrichten wie /var/tmp/core und Kernel Parameter setzen
mkdir /var/tmp/core chmod 777 /var/tmp/core vi /etc/sysctl.conf kernel.core_uses_pid=1 kernel.panic_on_oops = 1 kernel.core_pattern = /var/tmp/core/coredump_%h_.%s.%u.%g_%t_%E_%e fs.suid_dumpable=1 sysctl -p
Core File Parameter:
- %p: pid
- %%: output one '%'
- %u: uid - user id
- %g: gid - group id
- %s: signal number
- %t: UNIX time of dump
- %h: hostname
- %e: executable filename
- %E: pathname of executable
- %h: hostname
testen
Als Oracle User anmelden und Dump verursachen, testen ob die Datei da ist
su - oracle kill -s SIGSEGV $$ Segmentation fault (core dumped) cd /var/tmp/core/ ls coredump_racdb01.pipperr.local_.11.1100.1100_1426632616_!usr!bin!bash_bash.2779 #Datum aus dem Core anzeigen mit: date -d @1426632616 Tue Mar 17 23:50:16 CET 2015 # auswerten mit # gdb programm coredump gdb /usr/bin/bash coredump_racdb01.pipperr.local_.11.1100.1100_1426632616_\!usr\!bin\!bash_bash.2779
Oracle Kernel Parameter setzen
/etc/sysctl.conf
vi /etc/sysctl.conf fs.aio-max-nr = 3145728 fs.file-max = 6815744 #vm.min_free_kbytes >= 524288 && <= 1048576" #reclaim memory faster and avoid LowMem pressure issues #Note: 1367153.1 - Top 5 Issues That Cause Node Reboots or Evictions or Unexpected Recycle of CRS vm.min_free_kbytes=524288 # Controls the maximum size of a message, in bytes kernel.msgmnb = 65536 # Controls the default maxmimum size of a mesage queue kernel.msgmax = 65536 # Controls the maximum shared segment size, in bytes # max 50% of total memory # Adjust this to your setting for your maschine! kernel.shmmax = 2097152000 # Controls the maximum number of shared memory segments, in pages kernel.shmall = 4294967296 # semaphores: semmsl, semmns, semopm, semmni kernel.sem = 250 32000 100 128 kernel.shmmni = 4096 net.core.rmem_default=262144 net.core.rmem_max=4194304 net.core.wmem_default=262144 net.core.wmem_max=1048586 net.ipv4.ip_local_port_range = 9000 65500 net.ipv4.conf.all.rp_filter = 2 kernel.panic_on_oops = 1 #einlesen mit sysctl -p
Netzwerk Parameter im Detail ⇒ https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt
siehe auch:
Einstellungen bzgl. ORA-27301:OS Failure Message: No Buffer Space Available
Oracle Linux: ORA-27301:OS Failure Message: No Buffer Space Available (Doc ID 2041723.1)
vm.min_free_kbytes auf einen Wert von 0,4% Hauptspeicher setzen
vi /etc/sysctl.conf #vm.min_free_kbytes >= 524288 && <= 1048576" #reclaim memory faster and avoid LowMem pressure issues #Note: 1367153.1 - Top 5 Issues That Cause Node Reboots or Evictions or Unexpected Recycle of CRS vm.min_free_kbytes=524288 sysctl -p
Zusätzlich wird empfohlen die MTU auf dem Localhost Adapter zu erhöhen.
Online mit :
ifconfig lo mtu 16436
In /etc/sysconfig/network-scripts/ifcfg-lo hinterlegen, damit das beim nächsten Boot auch klappt:
vi /etc/sysconfig/network-scripts/ifcfg-lo .. MTU=16436 ..
Multipathing auf den Storage Devices für ASM optimieren
Je nach der eingesetzten Storage Anbindung hier mit viel Sorgfalt prüfen und einrichten!
Oft das Hauptproblem einer Oracle Real Applikation Cluster Installation!
siehe auch http://www.oracle.com/technetwork/topics/linux/multipath-097959.html
Um bei Problemen besser die Umgebung zu verstehen, die Tool der Karten Hersteller installieren
Wie bei Emulex:
Java 8 Installation
Java Version prüfen und JDK 8uxxx nach Bedarf installieren.
Falls SQLcl auf der Maschine eingesetzt werden soll, ist das zwingend notwendig.
Als User root!
Kopieren jdk-8u111-linux-x64.rpm von http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html und installieren / aktivieren:
# Java installieren yum install --nogpgcheck jdk-8u181-linux-x64.rpm # Java aktivieren # Neue Java Version dem OS bekannt geben /usr/sbin/alternatives --install /usr/bin/java java /usr/java/jdk1.8.0_181-amd64 18181 # Versionen anzeigen /usr/sbin/alternatives --display java # Version einstellen /usr/sbin/alternatives --config java # Version auswählen # testen java -version java version "1.8.0_111" # alte Java Version deinstallieren yum list installed java* yum erase java-1.6.0-openjdk.x86_64 java-1.7.0-openjdk.x86_64 java-1.8.0-openjdk.x86_64
Nach einem Java Upgrade muss das Kommando jps wieder neu verlinkt werden:
Das Programm jps sollte auf dem Server im Pfad liegen/funktionieren, ist sehr hilfreich für die Wartung
jps -m # falls fehler # über /usr/bin verlinken rm /usr/bin/jps ln -s /usr/java/jdk1.8.0_111/bin/jps /usr/bin/jps
Nächste Schritte
Diese Maschine kann nun als Klone für den zweiten Knoten dienen, auf diesen sind dann nur noch die IP Adressen und Namen anzupassen.
Zum Beispiel zum Klonen ausschalten mit:
systemctl poweroff -i
Nach der generellen Vorbereitung des OS kann die Einbindung des Storages erfolgen um dann im nächsten Schritt mit der Installation des Clusters zu beginnen.
Nächste Schritte: