Nach der erfolgreichen Grundinstallation eines Oracle Linux 6 auf dem Server steht die Konfiguration der Umgebung als Vorbereitung für die Datenbank Software Installation an.
Bzgl. der Server Grundinstallation siehe hier zum Beispiel: Installation einer Oracle Umgebung auf einem HP ProLiant DL380p Gen 8 Server.
Im Prinzip ist die Vorbereitung einer Umgebung für Oracle 10g R2 oder 11g R2 sehr ähnlich, ein paar Punkte könnten für eine Standard Edition vereinfacht werden eine gleichmäßige Installation hat aber den Vorteil das alles Server gleich aufgesetzt sind.
Ablauf:
Das Oracle preinstall RPM installiert die wichtigsten Packet und legt den User Oracle an. Einige Kernel Parameter werden gesetzt.
yum install oracle-rdbms-server-11gR2-preinstall.x86_64
Im Prinzip sollte das Oracle Preinstall RPM alles benötigte auf das System installieren.
Damit aber wirklich auch alles verlangt da ist, kann mit folgenden Befehlt geprüft werden, ob alle Pakete, auch für Optionen der DB, wirklich vorhanden sind.
# prüfen ob auch alles das ist: yum install binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel elfutils-libelf-devel-static gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers kernel-headers ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel make numactl-devel sysstat unixODBC unixODBC-devel nscd ksh compat-libcap1-1.10
Öffnen der Datei /etc/sysctl.conf und prüfen, ob die Werte alle richtig gesetzt sind.
/etc/sysctl.conf:
fs.aio-max-nr = 3145728 fs.file-max = 6815744 # 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 = 68719476736 # 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
Mit „/sbin/sysctl –p“ die Werte neu einlesen und prüfen
[root@db02 ~]# vi /etc/selinux/config .. SELINUX=disabled .. [root@nosqldb01 ~]# reboot [root@nosqldb01 ~]# getenforce
Mit df -h die aktuellen Einstellungen prüfen:
Anpassen mit:
vi /etc/fstab tmpfs /dev/shm tmpfs size=8000M 0 0 # neu mounten und testen $ umount tmpfs $ mount tmpfs $ df -h
Falls nach einem Reboot der Wert für ein Oracle Linux 6 aber wieder zurückgesetzt wurde: siehe auch http://surachartopun.com/2011/08/oracle-linux-6-problem-resizing-tmpfs.html
root@mytest ~] vi /etc/rc.d/rc.sysinit ****************************************************** - mount -f /dev/shm >/dev/null 2>&1 + #mount -f /dev/shm >/dev/null 2>&1 ****************************************************** if [ "$READONLY" != "yes" ] ; then - action $"Mounting local filesystems: " mount -a -t nonfs,nfs4,smbfs,ncpfs,cifs,gfs,gfs2 -O no_netdev + action $"Mounting local filesystems: " mount -a -t tmpfs,nonfs,nfs4,smbfs,ncpfs,cifs,gfs,gfs2 -O no_netdev ******************************************************
Einstellungen überprüfen und falls 169.254.0.0/16 Netz aktiv ausschalten:
ip r ... 169.254.0.0/16 dev eth0 scope link metric 1002 ... cat /etc/sysconfig/network NETWORKING=yes #Wert eintragen NOZEROCONF=yes # Netzwerk neu starten service network restart
Über die sysctl.conf IPV6 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 sysctl -p #Testen mit: cat /proc/sys/net/ipv6/conf/all/disable_ipv6 1 # 1=Ausgeschaltet! #IPV6 1:1 localhost Eintrag entfernen! vi /etc/hosts
/etc/sysctl.conf:
kernel.core_uses_pid=1 fs.suid_dumpable=1
Mit „/sbin/sysctl –p“ die Werte neu einlesen und prüfen
/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
/etc/pam.d/login:
$ vi /etc/pam.d/login … session required pam_limits.so …
Normalerweise sollten schon in der Grundkonfiguration der Zeitdient korrekt definiert sein.
Besonders für den Oracle Real Applikation Cluster ist das „ -X“ Flag wichtig, das Flag bedeutet das die Zeit nicht schlagartig versetzt werden soll, sondern sich langsam wieder an den richtigen Wert annähert.
Auf das „Leerzeichen“ vor dem Parameter achten!
$ vi /etc/sysconfig/ntpd … OPTIONS=” -x –u ntp:ntp –p /var/run/ntp.pid” …
Auf die richtigen NTP Server achten, Datei „/etc/ntp.conf“ prüfen:
$ cat /etc/ntp.conf … restrict <ip_adress_of_your_time_server> mask 255.255.255.255 nomodify notrap noquery …
Beispiel:
restrict 192.168.144.100 mask 255.255.255.255 nomodify notrap noquery
Testen mit:
$ service ntpd stop $ ntpdate <ip_adress_of_your_time_server> $ service ntpd restart
Autostart einrichten:
$ chkconfig --level 35 ntpd on $ chkconfig --list | grep ntpd ntpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
Bei Bedarf aktivieren
# chkconfig --list nscd nscd 0:off 1:off 2:off 3:on 4:off 5:on 6:off chkconfig --level 35 nscd on
Daran denken das bei Änderungen im DNS der Cache wieder geleert werden muss!
nscd -i hosts
Die Ausgabe von “iptables -L” sollte so aussehen:
$ iptables -L -n Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
FW stoppen:
service iptables stop [root@ORADB01 /]# chkconfig --level 0123456 iptables off [root@ORADB01 /]# chkconfig --list iptables iptables 0:off 1:off 2:off 3:off 4:off 5:off 6:off
Alternativ:
IP Tables rules anpassen:
vi /etc/sysconfig/iptables .. -A INPUT -p tcp --dport 1158 -j ACCEPT -A INPUT -p tcp --dport 1521 -j ACCEPT ..
Über das Oracle Validated RPM wurde der User bereits installiert.
Oracle User überprüfen:
[root@db02 ]# id oracle uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba)
Oracle User Password setzen:
passwd oracle
# bei Bedarf für eine Cluster Installation anlegen mkdir -p /u01/app/11.2.0.4/Clusterware # mkdir -p /u01/app/oracle/product/11.2.0.4/dbhome_1 chown -R oracle:oinstall /u01 chmod -R 775 /u01/
/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
Als Oracle user anmelden und prüfen:
su - oracle $ ulimit -Sn 65536 $ ulimit -Hn 65536
Um unter den Oracle User immer die richtigen Einstellungen zu treffen, wird ein eigenes Script unter dem User hinterlegt.
Ein Beispiel siehe hier: http://orapowershell.codeplex.com/SourceControl/latest#bash/.profile