Inhalt
- Einfuehrung
- Installation Oracle Enterprise Linux 6.x
- Vorbereiten zur Installation von Oracle SW
- Oracle Software Installation
- dbi services dmk installieren
- Oracle DB erstellen
- Oracle Cluster commands / Failover Beispiele
Einfuehrung
In diesem Dokument wird der vollstaendige Prozess zum Aufbau einer Oracle Grid Infrastrucure (GI) Testumgebung beschrieben. Es beginnt mit der Erstellung der VMs, ueber die Installation der Software bis hin zu einigen Beispielen von Cluster Commands. Es wird alles installiert und konfiguriert, was notwendig ist, um auf dem Server Oracle GI zu installieren. Resultat der Installation ist ein GoldImage, das zum Erstellen von virtuelle Oracle DB Server genutzt werden kann.
Konventionen
- Hinweise, die unbedingt beachtet werden muessen.
- Hinweise, die beachtet werden sollten, um Probleme zu vermeiden.
- Hinweise mit nuetzlichen Zusatzinformationen.
- Ausfuehrung von Commands, die Anweisungen sind hervorgehoben .
mbp02:~ hed$ ssh -Y root@oel60 The authenticity of host 'oel60 (192.168.57.201)' can't be established. RSA key fingerprint is 79:54:f5:66:8c:1f:e0:f9:fd:14:96:3a:65:c9:b9:3e. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'oel60' (RSA) to the list of known hosts. root@oel60's password: /usr/bin/xauth: creating new authority file /root/.Xauthority [root@oel60 ~]#
- Script oder Text, der 1:1 per copy/paste kopiert werden kann.
# accounts anlegen useradd oracle -c "Oracle SW Owner" -u 1001 -g oinstall -G dba,oper,asmdba useradd grid -c "Oracle Grid SW Owner" -u 1002 -g oinstall -G dba,oper,asmdba,asmadmin,asmoper
Voraussetzungen
- Oracle VirtualBox ist installiert
- Es sind zwei Host-only Netzwerke konfiguriert
- vboxnet1/192.168.57.0
- vboxnet2/192.168.58.0
- ISO Image fuer die Oracle Enterprise Linux Installation ist lokal verfuegbar. Das Image kann von Oracle e-delivery heruntergeladen werden.
- Oracle SW fuer die Installation ist lokal auf dem Host verfuegbar.
- Database Management Kit (dmk) von dbi services
Die Architektur der GI Testumgebung stellt sich wie folgt dar.
cluster-pic1
Zur Vorbereitung und zum Erstellen eines “GoldImages” wird eine Master VM erstellt. Diese VM spielt in der spaeteren GI Testumgebung keine Rolle.
192.168.57.201 oel60.dammeyer.local oel60 192.168.58.201 oel60-priv.dammeyer.local oel60-priv
In der GI Umgebung werden fuer die zwei VMs neun IP Addressen benoetigt. Diese sollten entweder ueber DNS aufgeloest werden koennen oder in die lokalen /etc/hosts der Server eingetragen werden.
192.168.57.11 oel61.dammeyer.local oel61 192.168.58.11 oel61-priv.dammeyer.local oel61-priv 192.168.57.12 oel62.dammeyer.local oel62 192.168.58.12 oel62-priv.dammeyer.local oel62-priv 192.168.57.21 oel61-vip.dammeyer.local oel61-vip 192.168.57.22 oel62-vip.dammeyer.local oel62-vip 192.168.57.13 oel6-cluster-scan.dammeyer.local oel6-cluster-scan 192.168.57.14 oel6-cluster-scan.dammeyer.local oel6-cluster-scan 192.168.57.15 oel6-cluster-scan.dammeyer.local oel6-cluster-scan
Installation Oracle Enterprise Linux 6.x
Zum Testen von Oracle Datenbanken bzw Oracle Grid Infrastructure wird ein virtueller Oracle Enterprise Linux Server aufgesetzt. Fuer die Virtualisierung wird Oracle Virtual Box verwendet. Ziel der Installation ist ein Kopie der virtuellen Disk, die spaeter als GoldImage zum Erstellen von Oracle DB Servern genutzt werden kann.
Grundinstallation
Es wird eine VM mit folgenden Attributen konfiguriert:
- 6 GB RAM
- 4 CPU Cores
- 3 Netzwerkkarten
- 50GB Disk
Die VM ueber das GUI erstellen
Die virtuelle Maschine kann ueber das GUI oder auf der Commandline erstellt werden.
Zum Schluss soll die VM wie folgt aufgesetzt sein:
vm-bild1
Als erstes wird ein Name vergeben und das OS angegeben.
vm-bild2
Die VM sollte ueber mindestens 4 GB RAM verfuegen, besser mehr.
vm-bild3
Die Platte wird direkt beim Erstellen der VM angelegt.
vm-bild4
Fuer die virtuelle Disk wird der Type VDI ausgewaehlt. Das hat zum Beispiel den Vorteil, dass ihre Groesse spaeter per modifyhd angepasst werden kann.
vm-bild5
Um keinen unnoetigen Platz auf dem Host zu verschwenden soll der Diskspace dynamisch alloziert werden.
vm-bild6
Die HardDisk muss ausreichend gross dimensioniert werden, damit genuegend Platz fuer die Oracle SW verfuegbar ist.
50G sollten fuer die Installation ausreichen.
vm-bild7
Nach dem <Create> wird die VM erstellt und sieht wie folgt aus:
vm-bild8
Es muessen noch weitere Optionen konfiguriert werden. Die ersten zwei Netzwerkadapter werden mit je einem Host-only Netzwerk verbunden.
- vboxnet1 = public (eth0)
- vboxnet2 = private (eth1)
vm-bild9
vm-bild10
Der dritte Netzwerkadapter (eth2) wird mit einem Host Adapter verbunden, damit hierueber das OS aktualisiert werden kann:
vm-bild11
Das ISO Image der Oracle Enterprise Linux SW wird dem DVD Laufwerk zugeordnet:
vm-bild12
Damit beim Start der VM ueber die DVD gebootet wird, muss die Boot Sequenz mit der DVD beginnen:
vm-bild13
Der VM vier CPUs zuweisen:
vm-bild14
Die VM verfuegt ueber genuegend Ressourcen um sie als Server in einem Oracle Grid Infrastructure Cluster einzusetzen.
vm-bild15
Die VM per Shellscript anlegen
Alternativ kann die VM auch auf der Commandline bzw. per Script erstellt werden. Hier als Beispiel ein Bash Script.
#!/bin/bash
#
VMNAME="oel60"
VMDIR='/Users/hed/VirtualBox VMs'
OEL6DVD='/u01/sw/linux/oel66/V52218-01.iso'
VMDESC="Oracle Enterprise Linux 6 -- $(date)"
#
mkdir -vp "${VMDIR}/${VMNAME}"
vboxmanage createvm --name $VMNAME --register
vboxmanage modifyvm $VMNAME --cpus 4 --memory 6144 --acpi on --ioapic on --boot1 dvd
vboxmanage modifyvm $VMNAME --nic1 hostonly --hostonlyadapter1 vboxnet1 --nictype1 82540EM
vboxmanage modifyvm $VMNAME --nic2 hostonly --hostonlyadapter2 vboxnet2 --nictype2 82540EM
vboxmanage modifyvm $VMNAME --nic3 bridged --bridgeadapter3 'en0: Wi-Fi (AirPort)' --nictype3 82540EM
vboxmanage modifyvm $VMNAME --macaddress1 auto --macaddress2 auto --macaddress3 auto
vboxmanage modifyvm $VMNAME --ostype Oracle_64 --description "${VMDESC}"
#
vboxmanage storagectl $VMNAME --name "IDE" --add ide --controller PIIX4 --portcount 2
vboxmanage storageattach $VMNAME --storagectl "IDE" --port 0 --device 0 --type dvddrive --medium "$OEL6DVD"
#
if [ -f "${VMDIR}/${VMNAME}/${VMNAME}-disk1.vdi" ]
then
echo "File existiert:"
echo "${VMDIR}/${VMNAME}/${VMNAME}-disk1.vdi"
else
vboxmanage createhd --filename "${VMDIR}/${VMNAME}/${VMNAME}-disk1.vdi" \
--format vdi --sizebyte 51539607552
fi
vboxmanage storagectl $VMNAME --name "SATA" --add sata --controller IntelAHCI --portcount 8
vboxmanage storageattach $VMNAME --storagectl "SATA" --port 1 \
--device 0 --type hdd --medium "${VMDIR}/${VMNAME}/${VMNAME}-disk1.vdi"
VM starten und OEL installieren
Nachdem die VM erstellt ist, beginnen wir mit der Installation vom Linux . Dazu weisen wir dem DVD Laufwerk das ISO Image zu und starten anschliessend die VM.
Auf dem Welcome Screen waehlen wir die Option zum Installieren auf einem bestehenden System.
oel-bild1
Die VM startet …
oel-bild2
Ein Mediatest kann in der Regel uebersprungen werden.
oel-bild4
Oracle Linux Version 6 wird installiert.
oel-bild5
Hier das richtige Keyboard auswaehlen. Layout und Model werden spaeter noch einmal angepasst.
oel-bild6
Fuer die Linux Installation reichen Basic Storage Devices aus.
oel-bild7
Bestaetigen, dass eventuell vorhandenen Daten geloescht werden duerfen.
oel-bild8
oel-bild10
Zeitzone setzen
oel-bild11
Bestaetigen, dass das schwache Passwort verwendet werden soll.
oel-bild13
Die virtuelle Disk ist leer. Also entweder ‘Use all Space’ oder ‘Replace Exiting …’ .
oel-bild14
Bestaetigen, dass die Partitions erstellt werden sollen.
oel-bild15
Jetzt werden die Packages ausgewaehlt.
- Base System > Base
- Base System > Compatibility libraries
- Base System > Hardware monitoring utilities
- Base System > Large Systems Performance
- Base System > Network file system client
- Base System > Performance Tools
- Base System > Perl Support
- Servers > Server Platform
- Servers > System administration tools
- Desktops > Desktop
- Desktops > Desktop Platform
- Desktops > Fonts
- Desktops > General Purpose Desktop
- Desktops > Graphical Administration Tools
- Desktops > Input Methods
- Desktops > X Window System
- Applications > Internet Browser
- Development > Additional Development
- Development > Development Tools
Die Packages jetzt anpassen. Es besteht auch die Moeglichkeit, die Packages zu einem spaeteren Zeitpunkt per yum zu installieren.
oel-bild16
oel-bild17
Nachdem die Packages ausgwaehlt sind, beginnt die Installation …
oel-bild18
oel-bild20
Die Installation ist abgeschlossen, nach einem Reboot beginnt die Systemkonfiguration.
oel-bild21
Die Konfiguration beginnt.
oel-bild22
Der Lizenzvereinbarung zustimmen.
oel-bild23
Eine Verbindung zum Oracle Unbreakable Linux Network wird fuer die Testinstallation nicht gebraucht.
oel-bild24
oel-bild25
Entgegen dieser Warnung, kann Oracle Enterprise Linux spaeter aktualisiert werden.
oel-bild26
Ein Account muss eingerichtet werden.
oel-bild27
Falls ein zu schwaches Passwort verwendet wird, braucht es eine weitere Bestaetigung.
oel-bild28
Datum und Uhrzeit fuer das System setzen. NTP ist hier abgewaehlt, was in einer produktiven Umgebung ein NoGo ist.
oel-bild29
Das Memory fuer Kdump koennen wir in der Testumgebung sparen.
oel-bild30
oel-bild31
oel-bild32
Die Installation und Konfiguration ist nun abgeschlossen und man kann sich auf dem Server anmelden.
oel-bild33
Abschliessende Konfiguration nach Installationsende
Damit von aussen mit einem Terminal (putty, iTerm, …) auf die VM zugegriffen werden kann, muessen noch folgende Punkte bearbeitet werden:
- Keyboard Layout
- Netzwerk
Das Keyboard Layout wird ueber System>Preferences>Keyboard angepasst.
oel-bild34
Neben dem Layout muss auch das Keyboard Model ausgwaehlt werden.
oel-bild35
Das Interface eth0 ist mit dem Host-only Netzwerk vboxnet1 verbunden, also kann eine Addresse aus dem Netz 192.168.57.0/24 zugewiesen werden.
/etc/udev/rules.d/70-persistent-net.rules
oel-bild36
Wenn das Netzwerk korrekt eingerichtet ist, kann vom Host aus mit einem Terminal auf die VM zugregriffen werden.
mbp02:~ hed$ ssh -Y root@oel60 The authenticity of host 'oel60 (192.168.57.201)' can't be established. RSA key fingerprint is 79:54:f5:66:8c:1f:e0:f9:fd:14:96:3a:65:c9:b9:3e. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'oel60' (RSA) to the list of known hosts. root@oel60's password: /usr/bin/xauth: creating new authority file /root/.Xauthority [root@oel60 ~]#
OEL Packages per yum installieren
Fuer den Fall, dass die Packages nicht bei der Installation ausgewaehlt wurden, koennen sie jetzt mit yum nachtraeglich installiert werden.
#!/bin/bash
#
yum -y groupinstall 'Base'
yum -y groupinstall 'Compatibility libraries'
yum -y groupinstall 'Hardware monitoring utilities'
yum -y groupinstall 'Large Systems Performance'
yum -y groupinstall 'Network file system client'
yum -y groupinstall 'Performance Tools'
yum -y groupinstall 'Perl Support'
yum -y groupinstall 'Server Platform'
yum -y groupinstall 'System administration tools'
yum -y groupinstall 'Desktop'
yum -y groupinstall 'Desktop Platform'
yum -y groupinstall 'Fonts'
yum -y groupinstall 'General Purpose Desktop'
yum -y groupinstall 'Graphical Administration Tools'
yum -y groupinstall 'Input Methods'
yum -y groupinstall 'X Window System'
yum -y groupinstall 'Internet Browser'
yum -y groupinstall 'Additional Development'
yum -y groupinstall 'Development Tools'
Die Installation vom Oracle Enterprise Linux ist soweit abgeschlossen, jetzt kann die VM fuer die Installation der Oracle Software vorbereitet werden.
Vorbereiten zur Installation von Oracle SW
Der Oracle Enterprise Linux 6 Server ist nun fertig installiert und man kann von extern auf ihn zugreifen. Jetzt werden die Oracle spezifischen Anpassungen durchgefuehrt, damit Oracle Anwendungen ohne Probleme installiert und betrieben werden koennen. Eine detailierte Installationsanweisung gibt es in der Oracle Dokumentation.
Oracle spezifische Konfigurationen / Grid Infra requirements
OS Requirements for Grid Infrastructur
Die Anforderungen fuer das OS ist im Oracle Grid Infrastructure Guide for Linux dokumentiert.
Es muessen folgende Packages (oder aktuellere Versionen) installiert sein:
binutils-2.20.51.0.2-5.11.el6 (x86_64) compat-libcap1-1.10-1 (x86_64) compat-libstdc++-33-3.2.3-69.el6 (x86_64) compat-libstdc++-33-3.2.3-69.el6.i686 gcc-4.4.4-13.el6 (x86_64) gcc-c++-4.4.4-13.el6 (x86_64) glibc-2.12-1.7.el6 (i686) glibc-2.12-1.7.el6 (x86_64) glibc-devel-2.12-1.7.el6 (x86_64) glibc-devel-2.12-1.7.el6.i686 ksh libgcc-4.4.4-13.el6 (i686) libgcc-4.4.4-13.el6 (x86_64) libstdc++-4.4.4-13.el6 (x86_64) libstdc++-4.4.4-13.el6.i686 libstdc++-devel-4.4.4-13.el6 (x86_64) libstdc++-devel-4.4.4-13.el6.i686 libaio-0.3.107-10.el6 (x86_64) libaio-0.3.107-10.el6.i686 libaio-devel-0.3.107-10.el6 (x86_64) libaio-devel-0.3.107-10.el6.i686 libXext-1.1 (x86_64) libXext-1.1 (i686) libXtst-1.0.99.2 (x86_64) libXtst-1.0.99.2 (i686) libX11-1.3 (x86_64) libX11-1.3 (i686) libXau-1.0.5 (x86_64) libXau-1.0.5 (i686) libxcb-1.5 (x86_64) libxcb-1.5 (i686) libXi-1.3 (x86_64) libXi-1.3 (i686) make-3.81-19.el6 sysstat-9.0.4-11.el6 (x86_64) nfs-utils-1.2.3-15.0.1
- Libraries, Kernel
- security, ssh keys
- user, groups
- cvu
Oracle Pre-Install RPM verwenden
In der Oracle Dokumentation ist detailiert aufgefuehrt welche Kernel Parameter gesetzt werden muessen und welche Libraries gebraucht werden. Fuer Oracle Enterprise Linux 6 gibt es jedoch einen einfacheren Weg die Anforderungen zu erfuellen. Im Oracle Repository wird dazu ein RPM angeboten, dass installiert werden kann.
[root@oel60 ~]# yum search preinstall Loaded plugins: refresh-packagekit, security ========================================== N/S Matched: preinstall ========================================== oracle-rdbms-server-11gR2-preinstall.x86_64 : Sets the system for Oracle single instance and Real Application : Cluster install for Oracle Linux 6 oracle-rdbms-server-12cR1-preinstall.x86_64 : Sets the system for Oracle single instance and Real Application : Cluster install for Oracle Linux 6 [root@oel60 ~]# yum -y install oracle-rdbms-server-12cR1-preinstall.x86_64 Loaded plugins: refresh-packagekit, security Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package oracle-rdbms-server-12cR1-preinstall.x86_64 0:1.0-12.el6 will be installed --> Processing Dependency: libaio-devel for package: oracle-rdbms-server-12cR1-preinstall-1.0-12.el6.x86_64 --> Processing Dependency: ksh for package: oracle-rdbms-server-12cR1-preinstall-1.0-12.el6.x86_64 --> Running transaction check ---> Package ksh.x86_64 0:20120801-21.el6.1 will be installed ---> Package libaio-devel.x86_64 0:0.3.107-10.el6 will be installed --> Finished Dependency Resolution ... Installed: oracle-rdbms-server-12cR1-preinstall.x86_64 0:1.0-12.el6 Dependency Installed: ksh.x86_64 0:20120801-21.el6.1 libaio-devel.x86_64 0:0.3.107-10.el6 Complete! [root@oel60 ~]#
Nach der Installation sind die Voraussetzungen zur Installation der Oracle SW erfuellt. Jetzt folgen weitere Anpassungen, die die Installation vereinfachen.
Kernel Parameter
Wird nicht das Oracle RPM verwendet, muessen die kernel Parameter in /etc/sysctl.conf gesetzt werden.
kernel.shmall = 2097152 kernel.shmmax = 2147483648 kernel.shmmni = 4096 # semaphores: semmsl, semmns, semopm, semmni kernel.sem = 256 32000 100 142 fs.file-max = 6815744 kernel.msgmni = 2878 kernel.msgmax = 65536 kernel.msgmnb = 65535 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048576 fs.aio-max-nr = 1048576 net.ipv4.ip_local_port_range = 9000 65500
Und anschliessend aktiviert werden.
[root@oel60 ~]# sysctl -p net.ipv4.ip_forward = 0 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.default.accept_source_route = 0 kernel.sysrq = 0 kernel.core_uses_pid = 1 net.ipv4.tcp_syncookies = 1 kernel.msgmnb = 65536 kernel.msgmax = 65536 kernel.shmall = 4294967296 fs.file-max = 6815744 kernel.sem = 250 32000 100 128 kernel.shmmni = 4096 kernel.shmmax = 4398046511104 kernel.panic_on_oops = 1 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048576 fs.aio-max-nr = 1048576 net.ipv4.ip_local_port_range = 9000 65500 [root@oel60 ~]#
Deadline I/O Scheduler konfigurieren
In einer Datenbank Umgebung ist der Deadline I/O Scheduler dem CFQ vorzuzuiehen.
Fuer den Unbreakable Enterprise Kernel wird bereits per Default der Deadline I/O Scheduler verwendet.
[root@oel60 ~]# cat /sys/block/sda/queue/scheduler noop [deadline] cfq [root@oel60 ~]#
Wird der Red Hat Kernel verwendet, muss der I/O Scheduler in /boot/grub/menu.lst per elevator=deadline gesetzt werden.
[root@oel60 ~]# grep -A 1 -B 2 elevator /boot/grub/menu.lst title Oracle Linux Server Red Hat Compatible Kernel (2.6.32-504.3.3.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-504.3.3.el6.x86_64 ro root=/dev/mapper/vg_oel60-lv_root rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us LANG=en_US.UTF-8 rd_NO_MD rd_LVM_LV=vg_oel60/lv_root SYSFONT=latarcyrheb-sun16 rd_LVM_LV=vg_oel60/lv_swap rd_NO_DM rhgb quiet numa=off transparent_hugepage=never crashkernel=auto elevator=deadline initrd /initramfs-2.6.32-504.3.3.el6.x86_64.img [root@oel60 ~]#
In der Red Hat Dokumentation sind weitere Informationen zum Deadline I/O Scheduler zu finden.
IP Tables deaktivieren
Die lokale Firewall deaktivieren, damit die Cluste Knoten ohne Stoerung miteinander kommunizieren koennen.
[root@oel60 ~]# service iptables stop iptables: Setting chains to policy ACCEPT: filter [ OK ] iptables: Flushing firewall rules: [ OK ] iptables: Unloading modules: [ OK ] [root@oel60 ~]# chkconfig iptables off [root@oel60 ~]# chkconfig iptables --list iptables 0:off 1:off 2:off 3:off 4:off 5:off 6:off [root@oel60 ~]#
SE Linux auf disabled setzen
Grundsaetzlich unterstuetzt Oracle seit 11.2.0.3.0 SELinux, sodass man es nicht disabln muss. Wird SE Linux jedoch nicht auf disabled gesetzt, kommt es zu Problemen beim transparent SSH.
[root@oel60 ~]# getenforce Enforcing [root@oel60 ~]# setenforce disabled [root@oel60 ~]# getenforce Permissive [root@oel60 ~]# # SELINUX in /etc/sysconfig/selinux auf disabled setzen [root@oel60 ~]# vim /etc/sysconfig/selinux ... [root@oel60 ~]#
NetworkManager deaktivieren
Ist das Netzwerk auf dem Server konfiguriert, stoert der NetworkManager eher, als dass er nuetzt.
[root@oel60 ~]# service NetworkManager stop Stopping NetworkManager daemon: [ OK ] [root@oel60 ~]# chkconfig NetworkManager off [root@oel60 ~]# chkconfig NetworkManager --list NetworkManager 0:off 1:off 2:off 3:off 4:off 5:off 6:off [root@oel60 ~]#
ntp deaktivieren
ntp wird bei der Installation der Grid Infrastruktur geprueft. Wenn der Service nicht sauber konfiguriert ist, kann man ihn auch abschalten.
[root@oel60 ~]# service ntpd stop Shutting down ntpd: [FAILED] [root@oel60 ~]# chkconfig ntpd off [root@oel60 ~]# chkconfig ntpd --list ntpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off [root@oel60 ~]# mv /etc/ntp.conf /etc/ntp.conf.orig [root@oel60 ~]#
tmpfs filesystem sizen
Damit eine Instanz mit einer groesseren SGA gestartet werden kann, muss ausreichend Shared Memory verfuegbar sein. Ist zuwenig Shared Memory konfiguriert kann es beim Instanz Startup zu einem ORA-27102 kommen.
[root@oel60 ~]# mount -o remount,size=2G /dev/shm ; df -h /dev/shm/ Filesystem Size Used Avail Use% Mounted on tmpfs 2.0G 80K 2.0G 1% /dev/shm [root@oel60 ~]# # In der /etc/fstab die Groesse angeben [root@oel60 ~]# grep tmpfs /etc/fstab tmpfs /dev/shm tmpfs defaults,size=2G 0 0 [root@oel60 ~]#
swappiness konfigurieren
Der Datenbank Server muss ueber ausreichend Memory verfuegen, sodass kein Swappen erforderlich sein sollte. Damit der Kernel nur in Ausnahmesituationen swapped, wird vm.swappiness=1 gesetzt. Fuer Releases vor RHEL 6.4 war die Empfehlung swappiness=0 zu setzen. Mit 6.4 gab es Aenderungen beim Swappen, sodass swappiness=1 gesetzt werden soll.
[root@oel60 ~]# cat /proc/sys/vm/swappiness 60 [root@oel60 ~]# cat <<EOF_ >>/etc/sysctl.conf # On a database we want the SGA to stay in RAM # rather than filesystem cache. Swappiness should be 1 vm.swappiness=1 EOF_ [root@oel60 ~]# /sbin/sysctl -p net.ipv4.ip_forward = 0 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.default.accept_source_route = 0 kernel.sysrq = 0 kernel.core_uses_pid = 1 net.ipv4.tcp_syncookies = 1 kernel.msgmnb = 65536 kernel.msgmax = 65536 kernel.shmall = 4294967296 fs.file-max = 6815744 kernel.sem = 250 32000 100 128 kernel.shmmni = 4096 kernel.shmmax = 4398046511104 kernel.panic_on_oops = 1 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048576 fs.aio-max-nr = 1048576 net.ipv4.ip_local_port_range = 9000 65500 vm.swappiness = 1 [root@oel60 ~]# cat /proc/sys/vm/swappiness 1 [root@oel60 ~]#
PAM Limit setzen
Oracle empfiehlt die aktuelle Linux-PAM Biblithek zu verwenden.
[root@oel60 ~]# yum list installed pam Loaded plugins: refresh-packagekit, security Installed Packages pam.x86_64 1.1.1-20.el6 @anaconda-OracleLinuxServer-201410181705.x86_64/6.6 [root@oel60 ~]# grep limit /etc/pam.d/login [root@oel60 ~]# cat >> /etc/pam.d/login <<EOF_ session required pam_limits.so EOF_ [root@oel60 ~]# grep limit /etc/pam.d/login session required pam_limits.so
ulimit fuer oracle + grid
Fuer die Oracle Accounts werden die Ressource Limits angepasst.
[root@oel60 ~]# cat >> /etc/security/limits.conf << EOF_ oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 4096 oracle hard nofile 65536 oracle soft stack 10240 # grid soft nproc 2047 grid hard nproc 16384 grid soft nofile 4096 grid hard nofile 65536 grid soft stack 10240 EOF_ [root@oel60 ~]#
Oracle Gruppen und Accounts anlegen
Auf allen Servern muessen die gleichen Gruppen und Accounts verfuegbar sein.
Wenn erforderlich, koennen schon vorhanden Benutzer und Gruppen geloescht werden.
userdel -f -r grid userdel -f -r oracle
groupdel oinstall groupdel dba groupdel asmadmin groupdel asmdba groupdel asmoper groupdel oper groupdel backupdba groupdel dgdba groupdel kmdba
Bevor Benutzer angelegt werden, werden die Gruppen erstellt.
# gruppen anlegen groupadd oinstall -g 1000 groupadd dba -g 1001 groupadd asmadmin -g 1002 groupadd asmdba -g 1003 groupadd asmoper -g 1004 groupadd oper -g 1005 groupadd backupdba -g 1006 groupadd dgdba -g 1007 groupadd kmdba -g 1008
# accounts anlegen useradd oracle -c "Oracle SW Owner" -u 1001 -g oinstall -G dba,oper,asmdba useradd grid -c "Oracle Grid SW Owner" -u 1002 -g oinstall -G dba,oper,asmdba,asmadmin,asmoper
Sind die Benutzer erstellt, wird fuer sie das Passwort gesetzt.
[root@oel60 ~]# passwd oracle Changing password for user oracle. New password: BAD PASSWORD: it is based on a dictionary word BAD PASSWORD: is too simple Retype new password: passwd: all authentication tokens updated successfully. [root@oel60 ~]# passwd grid Changing password for user grid. New password: BAD PASSWORD: it is based on a dictionary word BAD PASSWORD: is too simple Retype new password: passwd: all authentication tokens updated successfully. [root@oel60 ~]#
ssh keys fuer oracle und grid erzeugen
Fuer die Installation und den spaeteren Betrieb ist es unbedingt erforderlich, dass die Oracle Accounts transparent auf die Cluster Knoten zugreifen koennen.
[root@oel60 ~]# su - oracle [oracle@oel60 ~]$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/oracle/.ssh/id_rsa): Created directory '/home/oracle/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/oracle/.ssh/id_rsa. Your public key has been saved in /home/oracle/.ssh/id_rsa.pub. The key fingerprint is: 22:f6:98:c6:a7:16:f4:5f:53:88:1a:f2:24:c3:2c:81 oracle@oel60.dammeyer.com The key's randomart image is: +--[ RSA 2048]----+ | . | |E . | | + . . | | . B o . . . | | ooB.oS . | | o.=+. o | | =.o. . . | | ..o . | | .. | +-----------------+ [oracle@oel60 ~]$ cd .ssh & & cat id_rsa.pub >> authorized_keys [oracle@oel60 .ssh]$ chmod 600 authorized_keys [oracle@oel60 .ssh]$ ll total 12 -rw-------. 1 oracle oinstall 411 Jan 20 09:23 authorized_keys -rw-------. 1 oracle oinstall 1675 Jan 20 09:22 id_rsa -rw-r--r--. 1 oracle oinstall 411 Jan 20 09:22 id_rsa.pub [oracle@oel60 .ssh]$ [oracle@oel60 .ssh]$ exit logout [root@oel60 ~]# su - grid [grid@oel60 ~]$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/grid/.ssh/id_rsa): Created directory '/home/grid/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/grid/.ssh/id_rsa. Your public key has been saved in /home/grid/.ssh/id_rsa.pub. The key fingerprint is: 9e:01:88:ff:68:ac:52:74:60:5d:e4:7b:50:43:cd:7f grid@oel60.dammeyer.com The key's randomart image is: +--[ RSA 2048]----+ | . oo.+o | | o..o . .o | | .... + . | | ... + . E | | . .. . S . | | .. o o o | | . + . o | |. o | | .. | +-----------------+ [grid@oel60 ~]$ cd .ssh && cat id_rsa.pub >> authorized_keys [grid@oel60 .ssh]$ chmod 600 authorized_keys [grid@oel60 .ssh]$ ll total 12 -rw-------. 1 grid oinstall 409 Jan 20 09:25 authorized_keys -rw-------. 1 grid oinstall 1675 Jan 20 09:25 id_rsa -rw-r--r--. 1 grid oinstall 409 Jan 20 09:25 id_rsa.pub [grid@oel60 .ssh]$ exit logout [root@oel60 ~]#
Verzeichnisse fuer Oracle/Grid Base und Home anlegen
Bei der Installation von Oracle Grid Infrastructure sind Besonderheiten fuer das Grid Home und Grid Base Verzeichnis zu beruecksichtigen. Zum Einen solle ein dedizierte Account (grid) fuer die Installation verwendet werden, zum Anderen darf das Grid Home nicht unterhalb von einem Base Verzeichnis liegen. Details dazu sind im Oracle Grid Infrastructure Installation Guide zu finden.
- OwnerGrid Infrastructure: grid
- Base Directory Grid Infrastructure: /u00/app/grid
-
Home Directory Grid Infrastructure: /u00/12.1.0/grid_1_0
- Oracle SW Owner: oracle
- Oracle Base Directory : /u00/app/oracle
- Oracle Home Directory : /u00/app/oracle/product/12.1.0/db_1_0
Bewährte Standards zur Installation findest Du in den Oracle Best Practices von dbi services .
Und auch in der Oracle Dokumentation Oracle Grid Infrastructure for a Standalone Server gibt es nützliche Hinweise.
mkdir -p /u00/12.1.0/grid_1_0 # Grid Home mkdir -p /u00/app/grid # Grid Base mkdir -p /u00/app/oracle # Oracle Base mkdir -p /u00/app/oracleInventory chown root:oinstall /u00 /u00/app chmod 775 /u00 /u00/app chown -R grid:oinstall /u00/12.1.0 /u00/app/grid chown -R oracle:oinstall /u00/app/oracle /u00/app/oracleInventory chmod -R 775 /u00/12.1.0 /u00/app/grid /u00/app/oracle /u00/app/oracleInventory
find /u00/app/ -ls | sort | column -t
udev rules fuer ASM Disks
Die udev Rules fuer die ASM Disks werden jetzt angelegt. Wenn die ASM Disks spaeter erstellt sind, werden die Rules mit den SCSI IDs aktualisiert.
Mit den Rules werden Permission und Ownership für die ASM Disks gesetzt.
[root@oel60 ~]# cat >>/etc/udev/rules.d/99-oracle-asmdevices.rules <<EOF_ KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/\$parent", RESULT=="1ATA_VBOX_HARDDISK_VB2266158c-45e98d04", NAME="asm_disk1", OWNER="grid", GROUP="asmadmin", MODE="0660" KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/\$parent", RESULT=="1ATA_VBOX_HARDDISK_VB502f2469-9ad9b89a", NAME="asm_disk2", OWNER="grid", GROUP="asmadmin", MODE="0660" KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/\$parent", RESULT=="1ATA_VBOX_HARDDISK_VB0c8201fb-82c46a2d", NAME="asm_disk3", OWNER="grid", GROUP="asmadmin", MODE="0660" EOF_ [root@oel60 ~]#
README.txt anlegen
Der README.txt soll die Anpassung einer geclonten VM erleichtern.
[root@oel60 ~]# cat >> $HOME/Desktop/README.txt <<EOF_ Wenn dieser Host ein frischer Clone vom oel60 ist, muessen einige Konfigurationen angepasst werden. o Hostname vim /etc/sysconfig/network o Netzwerk /etc/hosts vim /etc/udev/rules.d/70-persistent-net.rules /sbin/udevadm control --reload-rules /sbin/start_udev ifconfig -a Im ifcfg-eth? IPADDR und HWADDR anpassen vim /etc/sysconfig/network-scripts/ifcfg-eth0 vim /etc/sysconfig/network-scripts/ifcfg-eth1 vim /etc/sysconfig/network-scripts/ifcfg-eth2 service network restart o eventuell udev rule fuer ASM Disks /etc/udev/rules.d/99-oracle-asmdevices.rules EOF_ [root@oel60 ~]#
Netzwerkkonfiguration ergaenzen
Steht kein DNS zur Verfuegung, werden die IP Addressen in die /etc/hosts eingetragen.
[root@oel60 ~]# cat <<EOF_ >>/etc/hosts # 192.168.57.201 oel60.dammeyer.local oel60 192.168.58.201 oel60-priv.dammeyer.local oel60-priv 192.168.57.11 oel61.dammeyer.local oel61 192.168.58.11 oel61-priv.dammeyer.local oel61-priv 192.168.57.12 oel62.dammeyer.local oel62 192.168.58.12 oel62-priv.dammeyer.local oel62-priv 192.168.57.21 oel61-vip.dammeyer.local oel61-vip 192.168.57.22 oel62-vip.dammeyer.local oel62-vip 192.168.57.13 oel6-cluster-scan.dammeyer.local oel6-cluster-scan 192.168.57.14 oel6-cluster-scan.dammeyer.local oel6-cluster-scan 192.168.57.15 oel6-cluster-scan.dammeyer.local oel6-cluster-scan EOF_ [root@oel60 ~]#
Die Interfaces eth0 und eth1 so anpassen, dass die IP Addresse fix zugeordnet sind und die Interfaces beim Booten aktiviert werden.
[root@oel60 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=static HWADDR=08:00:27:34:DD:EB IPADDR=192.168.57.201 PREFIX=24 DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no NAME="System eth0" [root@oel60 ~]# [root@oel60 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth1 DEVICE=eth1 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=static HWADDR=08:00:27:FE:9C:C1 IPADDR=192.168.58.201 PREFIX=24 DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no NAME="System eth1" [root@oel60 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth2 DEVICE=eth2 HWADDR=08:00:27:8E:35:80 TYPE=Ethernet UUID=6dc1e3eb-5f5a-433c-8385-a4e173c63c11 ONBOOT=no NM_CONTROLLED=no BOOTPROTO=dhcp
Reboot des fertig konfigurierten Servers
Um die Konfiguration zu checken, wird der Server rebooted.
[root@oel60 ~]# reboot Broadcast message from root@oel60.dammeyer.com (/dev/pts/2) at 9:47 ... The system is going down for reboot NOW! [root@oel60 ~]# Connection to oel60 closed by remote host. Connection to oel60 closed. mbp02:~ hed$ ssh root@oel60 root@oel60's password: Last login: Tue Jan 20 08:30:33 2015 from 192.168.57.1 [root@oel60 ~]# ifconfig -a eth0 Link encap:Ethernet HWaddr 08:00:27:34:DD:EB inet addr:192.168.57.201 Bcast:192.168.57.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:fe34:ddeb/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:56 errors:0 dropped:0 overruns:0 frame:0 TX packets:45 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:7540 (7.3 KiB) TX bytes:5997 (5.8 KiB) eth1 Link encap:Ethernet HWaddr 08:00:27:FE:9C:C1 inet addr:192.168.58.201 Bcast:192.168.58.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:fefe:9cc1/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:4 errors:0 dropped:0 overruns:0 frame:0 TX packets:10 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:593 (593.0 b) TX bytes:758 (758.0 b) eth2 Link encap:Ethernet HWaddr 08:00:27:8E:35:80 BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:4 errors:0 dropped:0 overruns:0 frame:0 TX packets:4 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:240 (240.0 b) TX bytes:240 (240.0 b) [root@oel60 ~]# ifup eth2 Determining IP information for eth2... done. [root@oel60 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth2 [root@oel60 ~]# ifconfig eth2 eth2 Link encap:Ethernet HWaddr 08:00:27:8E:35:80 inet addr:192.168.1.58 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:fe8e:3580/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:477 errors:0 dropped:26 overruns:0 frame:0 TX packets:10 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:42433 (41.4 KiB) TX bytes:1272 (1.2 KiB) [root@oel60 ~]#
Die Netzwerkkonfiguration ist in Ordnung.
Update vom Oracle Enterprise Linux
Bevor die Oracle Virtual Box Additions installiert werden, wird das OS auf einen aktuellen Stand gebracht.
[root@oel60 ~]# yum update Loaded plugins: refresh-packagekit, security Setting up Update Process Resolving Dependencies --> Running transaction check ---> Package at.x86_64 0:3.1.10-43.el6_2.1 will be updated ---> Package at.x86_64 0:3.1.10-44.el6_6.2 will be an update ---> Package autofs.x86_64 1:5.0.5-109.0.1.el6 will be updated ---> Package autofs.x86_64 1:5.0.5-109.0.1.el6_6.1 will be an update ---> Package bash.x86_64 0:4.1.2-29.el6 will be updated ---> Package bash.x86_64 0:4.1.2-29.el6.0.1 will be an update ... wget x86_64 1.12-5.el6_6.1 public_ol6_latest 483 k wpa_supplicant x86_64 1:0.7.3-4.el6_3 public_ol6_latest 365 k xorg-x11-server-Xorg x86_64 1.15.0-25.el6_6 public_ol6_latest 1.3 M xorg-x11-server-common x86_64 1.15.0-25.el6_6 public_ol6_latest 49 k yum-rhn-plugin noarch 0.9.1-52.0.1.el6_6 public_ol6_latest 81 k Transaction Summary ============================================================================================================= Install 5 Package(s) Upgrade 153 Package(s) Total download size: 355 M Is this ok [y/N]: y ... tzdata.noarch 0:2014j-1.el6 tzdata-java.noarch 0:2014j-1.el6 webkitgtk.x86_64 0:1.4.3-9.el6_6 wget.x86_64 0:1.12-5.el6_6.1 wpa_supplicant.x86_64 1:0.7.3-4.el6_3 xorg-x11-server-Xorg.x86_64 0:1.15.0-25.el6_6 xorg-x11-server-common.x86_64 0:1.15.0-25.el6_6 yum-rhn-plugin.noarch 0:0.9.1-52.0.1.el6_6 Complete! [root@oel60 ~]#
Oracle VirtualBox Guest Additions
Die VirtualBox Guest Additions koennen ueber das GUI installiert werden oder auf Command-Line.
Auf dem Host die Guest Additions im DVD Laufwerk einlegen:
mbp02:~ hed$ VMNAME=oel60 mbp02:~ hed$ vboxmanage showvminfo $VMNAME --machinereadable | grep IDEstoragecontrollername0="IDE" "IDE-0-0"="none" "IDE-0-1"="none" "IDE-1-0"="emptydrive" "IDE-IsEjected"="off" "IDE-1-1"="none" mbp02:~ hed$ VBoxManage storageattach $VMNAME --storagectl "IDE" --port 1 --device 0 --type dvddrive --medium /Applications/VirtualBox.app/Contents/MacOS/VBoxGuestAdditions.iso mbp02:~ hed$
Jetzt koennen die VirtualBox Erweiterungen fuer Linux auf dem Server installiert werden.
[root@oel60 ~]# mkdir -p /media/cdrom [root@oel60 ~]# mount /dev/sr0 /media/cdrom mount: block device /dev/sr0 is write-protected, mounting read-only [root@oel60 ~]# /media/cdrom/VBoxLinuxAdditions.run Verifying archive integrity... All good. Uncompressing VirtualBox 4.3.20 Guest Additions for Linux............ VirtualBox Guest Additions installer Copying additional installer modules ... Installing additional modules ... Removing existing VirtualBox non-DKMS kernel modules [ OK ] Building the VirtualBox Guest Additions kernel modules Building the main Guest Additions module [ OK ] Building the shared folder support module [ OK ] Building the OpenGL support module [ OK ] Doing non-kernel setup of the Guest Additions [ OK ] Starting the VirtualBox Guest Additions [ OK ] Installing the Window System drivers Installing X.Org Server 1.15 modules [ OK ] Setting up the Window System to use the Guest Additions [ OK ] You may need to restart the hal service and the Window System (or just restart the guest system) to enable the Guest Additions. Installing graphics libraries and desktop services componen[ OK ] [root@oel60 ~]#
Clonen der HardDisk
Die Installation und Konfiguration des Oracle Servers ist abgeschlossen. Die Disk der VM wird nun geloned, damit sie als GoldImage fuer die Installation weiterer Oracle DB Server verwendet werden kann.
Server stoppen
[root@oel60 ~]# shutdown -h now Broadcast message from root@oel60.dammeyer.com (/dev/pts/0) at 11:00 ... The system is going down for halt NOW! [root@oel60 ~]# Connection to oel60 closed by remote host. Connection to oel60 closed. mbp02:~ hed$
Jetzt kann die HardDisk kopiert werden.
#!/bin/bash
#
VMNAME="oel60"
VMDIR='/Users/hed/VirtualBox VMs'
SRCDISK="${VMDIR}/${VMNAME}/${VMNAME}-disk1.vdi"
DSTDISK="${VMDIR}/sources/${VMNAME}-disk1.vdi"
ls -lh "$SRCDISK"
mkdir -vp "${VMDIR}/sources"
vboxmanage clonehd "$SRCDISK" "$DSTDISK"
vboxmanage showhdinfo "$DSTDISK"
VMs fuer Oracle Grid Infrastructure erstellen
Jetzt werden die zwei Server der GI Testumgebung erstellt und angepasst. Zum Erstellen dieser VMs wird das GoldImage des oel60 Nodes genutzt. Dazu wird ein Clone der virtuellen Disk erzeugt, welcher dann beim Anlegen der neuen VM verwendet wird. Die VMs koennen per GUI erstellt werden oder einfach per Script.
Fuer die dritte Netzwerkkarte muss ein Adapter angegeben werden, der auf dem Host verfuegbar ist!
#!/bin/bash
#
VMNAME="oel61"
VMDIR='/Users/hed/VirtualBox VMs'
DISK00='/Users/hed/VirtualBox VMs/sources/oel60-disk1.vdi'
VMDESC="Oracle Enterprise Linux 6 -- $(date)"
#
mkdir -vp "${VMDIR}/${VMNAME}"
vboxmanage createvm --name $VMNAME --register
vboxmanage modifyvm $VMNAME --cpus 4 --memory 6144 --acpi on --ioapic on --boot1 dvd
vboxmanage modifyvm $VMNAME --nic1 hostonly --hostonlyadapter1 vboxnet1 --nictype1 82545EM
vboxmanage modifyvm $VMNAME --nic2 hostonly --hostonlyadapter2 vboxnet2 --nictype2 82545EM
vboxmanage modifyvm $VMNAME --nic3 bridged --bridgeadapter3 'en0: Wi-Fi (AirPort)' --nictype3 82545EM
vboxmanage modifyvm $VMNAME --macaddress1 auto --macaddress2 auto --macaddress3 auto
vboxmanage modifyvm $VMNAME --ostype Oracle_64 --description "${VMDESC}"
#
vboxmanage storagectl $VMNAME --name "IDE" --add ide --controller PIIX4 --portcount 2
vboxmanage storageattach $VMNAME --storagectl "IDE" --port 0 --device 0 --type dvddrive --medium emptydrive
#
if [ -f "${VMDIR}/${VMNAME}/${VMNAME}-disk1.vdi" ]
then
echo "File existiert:"
echo "${VMDIR}/${VMNAME}/${VMNAME}-disk1.vdi"
else
vboxmanage clonehd "${DISK00}" "${VMDIR}/${VMNAME}/${VMNAME}-disk1.vdi"
fi
vboxmanage storagectl $VMNAME --name "SATA" --add sata --controller IntelAHCI --portcount 8
vboxmanage storageattach $VMNAME --storagectl "SATA" --port 1 \
--device 0 --type hdd --medium "${VMDIR}/${VMNAME}/${VMNAME}-disk1.vdi"
Das Script fuer die oel62 ist identisch mit dem Script der oel61, bis auf den Namen $VMNAME.
#!/bin/bash
#
VMNAME="oel62"
VMDIR='/Users/hed/VirtualBox VMs'
DISK00='/Users/hed/VirtualBox VMs/sources/oel60-disk1.vdi'
VMDESC="Oracle Enterprise Linux 6 -- $(date)"
#
mkdir -vp "${VMDIR}/${VMNAME}"
vboxmanage createvm --name $VMNAME --register
vboxmanage modifyvm $VMNAME --cpus 4 --memory 6144 --acpi on --ioapic on --boot1 dvd
vboxmanage modifyvm $VMNAME --nic1 hostonly --hostonlyadapter1 vboxnet1 --nictype1 82545EM
vboxmanage modifyvm $VMNAME --nic2 hostonly --hostonlyadapter2 vboxnet2 --nictype2 82545EM
vboxmanage modifyvm $VMNAME --nic3 bridged --bridgeadapter3 'en0: Wi-Fi (AirPort)' --nictype3 82545EM
vboxmanage modifyvm $VMNAME --macaddress1 auto --macaddress2 auto --macaddress3 auto
vboxmanage modifyvm $VMNAME --ostype Oracle_64 --description "${VMDESC}"
#
vboxmanage storagectl $VMNAME --name "IDE" --add ide --controller PIIX4 --portcount 2
vboxmanage storageattach $VMNAME --storagectl "IDE" --port 0 --device 0 --type dvddrive --medium emptydrive
#
if [ -f "${VMDIR}/${VMNAME}/${VMNAME}-disk1.vdi" ]
then
echo "File existiert:"
echo "${VMDIR}/${VMNAME}/${VMNAME}-disk1.vdi"
else
vboxmanage clonehd "${DISK00}" "${VMDIR}/${VMNAME}/${VMNAME}-disk1.vdi"
fi
vboxmanage storagectl $VMNAME --name "SATA" --add sata --controller IntelAHCI --portcount 8
vboxmanage storageattach $VMNAME --storagectl "SATA" --port 1 \
--device 0 --type hdd --medium "${VMDIR}/${VMNAME}/${VMNAME}-disk1.vdi"
Nachdem die VMs erstellt sind, muessen die Serverkonfigurationen noch angepasst werden. Ausser dem Hostnamen haben sich auch die MAC Adressen der Netzwerkkarten geaendert.
- Hostname vim /etc/sysconfig/network
- Netzwerk
- udev rules
- ifcfg-eth0, ifcfg-eth1 und ifcfg-eth2
Der Hostname wird in /etc/sysconfig/network angepasst. Wie die Aenderungen durchgefuehrt werden muessen ist auch in ~root/Desktop/README.txt beschrieben.
[root@oel60 ~]# cat /etc/sysconfig/network NETWORKING=yes HOSTNAME=oel61.dammeyer.local # oracle-rdbms-server-12cR1-preinstall : Add NOZEROCONF=yes NOZEROCONF=yes [root@oel60 ~]#
Im File /etc/udev/rules.d/70-persistent-net.rules erfolgt die Zurordnung einer MAC Adresse zu einem bestimmten eth? Device. Welche MAC Adressen VirtualBox generiert hat sieht man auf dem Host.
mbp02:~ hed$ VMNAME=oel61 mbp02:~ hed$ vboxmanage showvminfo $VMNAME --details | grep connected | grep NIC NIC 1: MAC: 080027C090C8, Attachment: Host-only Interface 'vboxnet1', Cable connected: on, Trace: off (file: none), Type: 82545EM, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny, Bandwidth group: none NIC 2: MAC: 0800276F7671, Attachment: Host-only Interface 'vboxnet2', Cable connected: on, Trace: off (file: none), Type: 82545EM, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny, Bandwidth group: none NIC 3: MAC: 080027DEB81E, Attachment: Bridged Interface 'en0: Wi-Fi (AirPort)', Cable connected: on, Trace: off (file: none), Type: 82545EM, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny, Bandwidth group: none mbp02:~ hed$
Ueber die udev Rules wird auf dem Server den MAC Adresse ein eth? Device zugeordnet. Die angepassten udev Rules muessen anschliessend aktiviert werden.
In ifcfg-ethn und in den udev Rules die MAC Adressen klein schreiben!
[root@oel61 ~]# /sbin/udevadm control --reload-rules [root@oel61 ~]# /sbin/start_udev Starting udev: udevd[2730]: GOTO 'pulseaudio_check_usb' has no matching label in: '/lib/udev/rules.d/90-pulseaudio.rules' [ OK ] [root@oel61 ~]#
Die IP Adresse wird ueber die Datei ifcfg-eth? mit der MAC Adresse verknuepft. Dazu muessen in ifcfg-eth0, ifcfg-eth1 HWADDR und IPADDR angepasst werden, in ifcfg-eth2 nur HWADDR. Welche MAC Adresse (HWADDR) im Konfigfile angegeben wird zeigt die ifconfig Anweisung.
[root@oel61 ~]# ifconfig -a | grep eth eth0 Link encap:Ethernet HWaddr 08:00:27:C0:90:C8 eth1 Link encap:Ethernet HWaddr 08:00:27:6F:76:71 eth2 Link encap:Ethernet HWaddr 08:00:27:DE:B8:1E [root@oel61 ~]#
Sind die Konfigfiles korrekt, kann der Netzwerk Service neu gestartet werden.
[root@oel61 ~]# service network restart Shutting down interface eth0: [ OK ] Shutting down interface eth1: [ OK ] Shutting down interface eth2: [ OK ] Shutting down loopback interface: [ OK ] Bringing up loopback interface: [ OK ] Bringing up interface eth0: Determining if ip address 192.168.57.11 is already in use for device eth0... [ OK ] Bringing up interface eth1: Determining if ip address 192.168.58.11 is already in use for device eth1... [ OK ] [root@oel61 ~]#
Nun ist es auch moeglich mit einem Terminal (putty, iTerm,…) von Extern auf den Server zuzugreifen.
Transparent ssh fuer oracle und grid
Damit Transparent ssh funktioniert, muessen die Verbindungen zwischen den Server einmalig aufgebaut werden. So werden die Server in die known_hosts aufgenommen.
Verbindungen:
oel61 – ssh –> oel61
oel61 – ssh –> oel62
oel62 – ssh –> oel62
oel62 – ssh –> oel61
[root@oel61 ~]# su - oracle [oracle@oel61 ~]$ ssh oel61 The authenticity of host 'oel61 (192.168.57.11)' can't be established. RSA key fingerprint is 79:54:f5:66:8c:1f:e0:f9:fd:14:96:3a:65:c9:b9:3e. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'oel61,192.168.57.11' (RSA) to the list of known hosts. [oracle@oel61 ~]$ ssh oel62 The authenticity of host 'oel62 (192.168.57.12)' can't be established. RSA key fingerprint is 79:54:f5:66:8c:1f:e0:f9:fd:14:96:3a:65:c9:b9:3e. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'oel62,192.168.57.12' (RSA) to the list of known hosts. [oracle@oel62 ~]$ ssh oel62 The authenticity of host 'oel62 (192.168.57.12)' can't be established. RSA key fingerprint is 79:54:f5:66:8c:1f:e0:f9:fd:14:96:3a:65:c9:b9:3e. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'oel62,192.168.57.12' (RSA) to the list of known hosts. Last login: Tue Jan 20 13:47:13 2015 from oel61.dammeyer.local [oracle@oel62 ~]$ ssh oel61 The authenticity of host 'oel61 (192.168.57.11)' can't be established. RSA key fingerprint is 79:54:f5:66:8c:1f:e0:f9:fd:14:96:3a:65:c9:b9:3e. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'oel61,192.168.57.11' (RSA) to the list of known hosts. Last login: Tue Jan 20 13:46:59 2015 from oel61.dammeyer.local [oracle@oel61 ~]$
Jetzt sind die zwei VMS bereit fuer die Installation und Konfiguration der Grid Infrastructure. Jetzt ist ein guter Zeitpunkt die Disks der VMs zu clonenen, um sie bei Bedarf zum Erstellen neuer VMs zu verwenden.
ASM Disks erstellen
Fuer eine Grid Infrastructure Umgebung werden ASM Disks benoetigt, die von beiden Hosts beschrieben werden koennen. Die ASM Disks werden auf dem Host erstellt und einer VM zugeordnet. Auf dieser VM werden die Disks dann mit einem Filesystem versehen. Ownership und Permissions werden ueber udev Rules gesetzt.
- ASM Disk erstellen
mbp02:~ hed$ VMDIR='/Users/hed/VirtualBox VMs' mbp02:~ hed$ for n in 1 2 3 ; do VBoxManage createhd --filename "$VMDIR/san/asm0${n}.vdi" \ --size 6144 --format VDI --variant Fixed VBoxManage modifyhd "$VMDIR/san/asm0${n}.vdi" --type shareable done 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% Disk image created. UUID: c73e971d-d183-4235-a42f-a4770d2d4e14 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% Disk image created. UUID: 5dcb3d7b-a6da-4a89-affc-06dfb72ef32b 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% Disk image created. UUID: 1abced04-afd8-44ef-945f-308c2d751550 mbp02:~ hed$
- ASM Disks dem 1. Server zuordnen
mbp02:~ hed$ for m in 1; do for n in 1 2 3 ; do p=$(expr ${n} + 2) VBoxManage storageattach oel6${m} --storagectl "SATA" --port ${p} \ --device 0 --type hdd \ --medium "$VMDIR/san/asm0${n}.vdi" --mtype shareable done done mbp02:~ hed$
- Informationen zu den ASM Disks
mbp02:~ hed$ vboxmanage list hdds | grep -A 2 -B 4 -i asm UUID: c73e971d-d183-4235-a42f-a4770d2d4e14 Parent UUID: base State: locked read Type: shareable Location: /Users/hed/VirtualBox VMs/san/asm01.vdi Storage format: VDI Capacity: 6144 MBytes -- -- UUID: 5dcb3d7b-a6da-4a89-affc-06dfb72ef32b Parent UUID: base State: locked read Type: shareable Location: /Users/hed/VirtualBox VMs/san/asm02.vdi Storage format: VDI Capacity: 6144 MBytes -- -- UUID: 1abced04-afd8-44ef-945f-308c2d751550 Parent UUID: base State: locked read Type: shareable Location: /Users/hed/VirtualBox VMs/san/asm03.vdi Storage format: VDI Capacity: 6144 MBytes
Jetzt den Server starten und die Filesysteme auf den ASM Disks erstellen.
Im Server sind nun drei neue Disks verfuegbar: sdb, sdc und sdd
[root@oel61 ~]# ls -l /dev/sd? brw-rw----. 1 root disk 8, 0 Jan 20 2015 /dev/sda brw-rw----. 1 root disk 8, 16 Jan 20 2015 /dev/sdb brw-rw----. 1 root disk 8, 32 Jan 20 2015 /dev/sdc brw-rw----. 1 root disk 8, 48 Jan 20 2015 /dev/sdd [root@oel61 ~]# for n in b c d; do fdisk -l /dev/sd${n} done Disk /dev/sdb: 6442 MB, 6442450944 bytes 255 heads, 63 sectors/track, 783 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Disk /dev/sdc: 6442 MB, 6442450944 bytes 255 heads, 63 sectors/track, 783 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Disk /dev/sdd: 6442 MB, 6442450944 bytes 255 heads, 63 sectors/track, 783 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 [root@oel61 ~]#
Mit dem Command fdisk werden auf den drei Disks die Linux Partitionen angelegt.
[root@oel61 ~]# fdisk /dev/sdb Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel with disk identifier 0xfe59f6a5. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) WARNING: DOS-compatible mode is deprecated. It's strongly recommended to switch off the mode (command 'c') and change display units to sectors (command 'u'). Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-783, default 1): Last cylinder, +cylinders or +size{K,M,G} (1-783, default 783): Using default value 783 Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. [root@oel61 ~]#
Wenn auf den drei Disks die Partitionen erstellt sind, muss noch das OS ueber die Aenderungen informiert werden.
[root@oel61 ~]# for n in b c d; do /sbin/partprobe /dev/sd${n} done [root@oel61 ~]#
Um die udev Rules fuer die ASM Disks anzupassen, benoetigen wir die SCSI IDs der Platten.
[root@oel61 ~]# for n in b c d; do ID=$(/sbin/scsi_id -g -u -d /dev/sd${n}) echo "/dev/sd${n} == $ID" done /dev/sdb == 1ATA_VBOX_HARDDISK_VBc73e971d-144e2d0d /dev/sdc == 1ATA_VBOX_HARDDISK_VB5dcb3d7b-2bf32eb7 /dev/sdd == 1ATA_VBOX_HARDDISK_VB1abced04-5015752d [root@oel61 ~]#
Im File /etc/udev/rules.d/99-oracle-asmdevices.rules die SCSI IDs anpassen.
[root@oel61 ~]# vim /etc/udev/rules.d/99-oracle-asmdevices.rules
[root@oel61 ~]# cat /etc/udev/rules.d/99-oracle-asmdevices.rules KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent", RESULT=="1ATA_VBOX_HARDDISK_VBc73e971d-144e2d0d", NAME="asm_disk1", OWNER="grid", GROUP="asmadmin", MODE="0660" KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent", RESULT=="1ATA_VBOX_HARDDISK_VB5dcb3d7b-2bf32eb7", NAME="asm_disk2", OWNER="grid", GROUP="asmadmin", MODE="0660" KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent", RESULT=="1ATA_VBOX_HARDDISK_VB1abced04-5015752d", NAME="asm_disk3", OWNER="grid", GROUP="asmadmin", MODE="0660" [root@oel61 ~]#
Anschliessend die udev Rules aktivieren.
[root@oel61 ~]# /sbin/udevadm control --reload-rules [root@oel61 ~]# /sbin/start_udev Starting udev: udevd[2996]: GOTO 'pulseaudio_check_usb' has no matching label in: '/lib/udev/rules.d/90-pulseaudio.rules' [ OK ] [root@oel61 ~]# ll /dev/asm_disk* brw-rw----. 1 grid asmadmin 8, 17 Jan 20 14:58 /dev/asm_disk1 brw-rw----. 1 grid asmadmin 8, 33 Jan 20 14:58 /dev/asm_disk2 brw-rw----. 1 grid asmadmin 8, 49 Jan 20 14:58 /dev/asm_disk3 [root@oel61 ~]#
Beide Server stoppen und dann die ASM Disks dem 2. Server zuweisen.
mbp02:~ hed$ # ASM Disks dem 2. Server zuweisen mbp02:~ hed$ # !! BEIDE Server vorher runterfahren mbp02:~ hed$ VMDIR='/Users/hed/VirtualBox VMs' mbp02:~ hed$ for m in 2; do for n in 1 2 3 ; do p=$(expr ${n} + 2) VBoxManage storageattach oel6${m} --storagectl "SATA" --port ${p} \ --device 0 --type hdd \ --medium "$VMDIR/san/asm0${n}.vdi" --mtype shareable done done mbp02:~ hed$
Beide Server starten und die ASM udev Rules von oel61 nach oel62 kopieren.
[root@oel61 ~]# cd /etc/udev/rules.d/ [root@oel61 rules.d]# scp 99-oracle-asmdevices.rules oel62:$PWD root@oel62's password: 99-oracle-asmdevices.rules 100% 561 0.6KB/s 00:00 [root@oel61 rules.d]#
Nach einem Reboot des oel62 bzw reload der udev Rules sind die ASM Disks auch auf dem zweiten Server verfuegbar.
[root@oel62 ~]# ll /dev/asm_disk* brw-rw----. 1 grid asmadmin 8, 17 Jan 20 15:08 /dev/asm_disk1 brw-rw----. 1 grid asmadmin 8, 33 Jan 20 15:08 /dev/asm_disk2 brw-rw----. 1 grid asmadmin 8, 49 Jan 20 15:08 /dev/asm_disk3 [root@oel62 ~]#
Oracle Software Installation
Oracle Grid Infrastructure installieren
Die Oracle SW fuer Oracle Grid Infrastructure auf dem Host verfuegbar machen, damit sie auf den virtuellen Server kopiert werden kann. Die SW kann von Oracle Technet heruntergeladen werden.
Auf dem Server als root ein Verzeichnis fuer die Software Installation erstellen und dort hinein die ZIP Files kopieren.
[root@oel61 ~]# mkdir -pv /tmp/swstage && cd /tmp/swstage mkdir: created directory `/tmp/swstage' [root@oel61 swstage]#
Jetzt kann vom Host aus die Software auf den Server kopiert werden.
mbp02:12102 hed$ ll total 12222256 -rw-r--r--@ 1 hed staff 1.6G Dec 17 14:47 linuxamd64_12102_database_1of2.zip -rw-r--r--@ 1 hed staff 968M Dec 17 15:05 linuxamd64_12102_database_2of2.zip -rw-r--r--@ 1 hed staff 476M Dec 17 15:19 linuxamd64_12102_examples.zip -rw-r--r--@ 1 hed staff 645M Dec 17 15:21 linuxamd64_12102_gateways.zip -rw-r--r--@ 1 hed staff 1.6G Dec 17 14:14 linuxamd64_12102_grid_1of2.zip -rw-r--r--@ 1 hed staff 617M Dec 17 14:16 linuxamd64_12102_grid_2of2.zip mbp02:12102 hed$ mbp02:12102 hed$ scp linuxamd64_12102_grid_* root@oel61:/tmp/swstage root@oel61's password: linuxamd64_12102_grid_1of2.zip 100% 1666MB 52.1MB/s 00:32 linuxamd64_12102_grid_2of2.zip 100% 617MB 51.4MB/s 00:12 mbp02:12102 hed$
Zurueck auf dem Server koennen die ZIPs nun ausgepackt werden.
[root@oel61 swstage]# unzip -q linuxamd64_12102_grid_1of2.zip [root@oel61 swstage]# unzip -q linuxamd64_12102_grid_2of2.zip [root@oel61 swstage]# rm -fv linuxamd64_12102_grid_* removed `linuxamd64_12102_grid_1of2.zip' removed `linuxamd64_12102_grid_2of2.zip' [root@oel61 swstage]#
Bevor wir mit der eigentlichen Installation beginnen, muss noch das Cluster Verification Utility auf den Server deployed werden.
[root@oel61 swstage]# [root@oel61 swstage]# rpm -Uvh grid/rpm/cvuqdisk-1.0.9-1.rpm Preparing... ########################################### [100%] Using default group oinstall to install package 1:cvuqdisk ########################################### [100%] [root@oel61 swstage]# ssh oel62 mkdir -vp /tmp/swstage/grid/rpm root@oel62's password: mkdir: created directory `/tmp/swstage' mkdir: created directory `/tmp/swstage/grid' mkdir: created directory `/tmp/swstage/grid/rpm' [root@oel61 swstage]# scp grid/rpm/cvuqdisk-1.0.9-1.rpm oel62:/tmp/swstage/grid/rpm root@oel62's password: cvuqdisk-1.0.9-1.rpm 100% 8976 8.8KB/s 00:00 [root@oel61 swstage]# ssh oel62 rpm -Uvh /tmp/swstage/grid/rpm/cvuqdisk-1.0.9-1.rpm root@oel62's password: Preparing... ################################################## Using default group oinstall to install package cvuqdisk ################################################## [root@oel61 swstage]#
Die Installation erfolgt mit dem User grid und wir benoetigen dafuer X11. Also entweder lokal auf dem Server anmelden oder das Display umlenken.
mbp02:~ hed$ ssh -Y grid@oel61 grid@oel61's password: Last login: Tue Jan 20 16:34:40 2015 from 192.168.57.1 [grid@oel61 ~]$
Als erstes wird ein Check mit dem Cluster Verification Utility durchgefuehrt. So kann man ueberraschungen waehrend der Installation vorbeugen.
[grid@oel61 grid]$ cd /tmp/swstage/grid [grid@oel61 grid]$ ./runcluvfy.sh stage -pre crsinst -n oel61,oel62 Performing pre-checks for cluster services setup Checking node reachability... Node reachability check passed from node "oel61" Checking user equivalence... User equivalence check passed for user "grid" Checking node connectivity... Checking hosts config file... Verification of the hosts config file successful Node connectivity passed for subnet "192.168.58.0" with node(s) oel61,oel62 TCP connectivity check passed for subnet "192.168.58.0" Node connectivity passed for subnet "192.168.57.0" with node(s) oel61,oel62 TCP connectivity check passed for subnet "192.168.57.0" Interfaces found on subnet "192.168.58.0" that are likely candidates for a private interconnect are: oel61 eth1:192.168.58.11 oel62 eth1:192.168.58.12 Interfaces found on subnet "192.168.57.0" that are likely candidates for a private interconnect are: oel61 eth0:192.168.57.11 oel62 eth0:192.168.57.12 WARNING: Could not find a suitable set of interfaces for VIPs Checking subnet mask consistency... Subnet mask consistency check passed for subnet "192.168.58.0". Subnet mask consistency check passed for subnet "192.168.57.0". Subnet mask consistency check passed. Node connectivity check passed Checking multicast communication... Checking subnet "192.168.58.0" for multicast communication with multicast group "224.0.0.251"... Check of subnet "192.168.58.0" for multicast communication with multicast group "224.0.0.251" passed. Check of multicast communication passed. Total memory check passed Available memory check passed Swap space check failed Check failed on nodes: oel61,oel62 Free disk space check passed for "oel61:/usr,oel61:/var,oel61:/etc,oel61:/sbin,oel61:/tmp" Free disk space check passed for "oel62:/usr,oel62:/var,oel62:/etc,oel62:/sbin,oel62:/tmp" Check for multiple users with UID value 1002 passed User existence check passed for "grid" Group existence check passed for "oinstall" Group existence check passed for "dba" Membership check for user "grid" in group "oinstall" [as Primary] passed Membership check for user "grid" in group "dba" passed Run level check passed Hard limits check passed for "maximum open file descriptors" Soft limits check passed for "maximum open file descriptors" Hard limits check passed for "maximum user processes" Soft limits check passed for "maximum user processes" System architecture check passed Kernel version check passed Kernel parameter check passed for "semmsl" Kernel parameter check passed for "semmns" Kernel parameter check passed for "semopm" Kernel parameter check passed for "semmni" Kernel parameter check passed for "shmmax" Kernel parameter check passed for "shmmni" Kernel parameter check passed for "shmall" Kernel parameter check passed for "file-max" Kernel parameter check passed for "ip_local_port_range" Kernel parameter check passed for "rmem_default" Kernel parameter check passed for "rmem_max" Kernel parameter check passed for "wmem_default" Kernel parameter check passed for "wmem_max" Kernel parameter check passed for "aio-max-nr" Kernel parameter check passed for "panic_on_oops" Package existence check passed for "binutils" Package existence check passed for "compat-libcap1" Package existence check passed for "compat-libstdc++-33(x86_64)" Package existence check passed for "libgcc(x86_64)" Package existence check passed for "libstdc++(x86_64)" Package existence check passed for "libstdc++-devel(x86_64)" Package existence check passed for "sysstat" Package existence check passed for "gcc" Package existence check passed for "gcc-c++" Package existence check passed for "ksh" Package existence check passed for "make" Package existence check passed for "glibc(x86_64)" Package existence check passed for "glibc-devel(x86_64)" Package existence check passed for "libaio(x86_64)" Package existence check passed for "libaio-devel(x86_64)" Package existence check passed for "nfs-utils" Checking availability of ports "6200,6100" required for component "Oracle Notification Service (ONS)" Port availability check passed for ports "6200,6100" Checking availability of ports "42424" required for component "Oracle Cluster Synchronization Services (CSSD)" Port availability check passed for ports "42424" Check for multiple users with UID value 0 passed Current group ID check passed Starting check for consistency of primary group of root user Check for consistency of root user's primary group passed Starting Clock synchronization checks using Network Time Protocol(NTP)... NTP configuration file "/etc/ntp.conf" existence check passed No NTP Daemons or Services were found to be running PRVF-5507 : NTP daemon or service is not running on any node but NTP configuration file exists on the following node(s): oel61,oel62 Clock synchronization check using Network Time Protocol(NTP) failed Core file name pattern consistency check passed. User "grid" is not part of "root" group. Check passed Default user file creation mask check passed Checking integrity of file "/etc/resolv.conf" across nodes "domain" and "search" entries do not coexist in any "/etc/resolv.conf" file All nodes have same "search" order defined in file "/etc/resolv.conf" PRVF-5636 : The DNS response time for an unreachable node exceeded "15000" ms on following nodes: oel61,oel62 checking DNS response from all servers in "/etc/resolv.conf" Check for integrity of file "/etc/resolv.conf" failed Time zone consistency check passed Checking integrity of name service switch configuration file "/etc/nsswitch.conf" ... All nodes have same "hosts" entry defined in file "/etc/nsswitch.conf" Check for integrity of name service switch configuration file "/etc/nsswitch.conf" passed Checking daemon "avahi-daemon" is not configured and running Daemon not configured check passed for process "avahi-daemon" Daemon not running check passed for process "avahi-daemon" Starting check for /dev/shm mounted as temporary file system ... Check for /dev/shm mounted as temporary file system passed Starting check for /boot mount ... Check for /boot mount passed Starting check for zeroconf check ... Check for zeroconf check passed Pre-check for cluster services setup was unsuccessful on all the nodes. [grid@oel61 grid]$
Obwohl in diesem Fall nicht alle Test bestanden wurden, kann mit der Installation fortgefahren werden. Die aufgefuehrten Fehler sind nicht gravierend.
Den Oracle Universal Installer starten
[grid@oel61 grid]$ ./runInstaller -ignoreSysprereqs -ignorePrereq
Je nach Leistungsstaerke des Servers benoetigt die Installation ca 1 Stunde.
Oracel Grid Infrastructure fuer ein Cluster installieren.
grid-pic1
Fuer die Testumgebung ist ein Standard Cluster ausreichend.
grid-pic2
Die Advanced Installation waehlen.
grid-pic3
grid-pic4
Cluster und SCAN Name angeben. Der Installer prueft, ob die Namen aufgeloest werden koennen.
grid-pic5
Der zweite Server wird hinzugefuegt.
grid-pic5
Hier kann geprueft werden, ob die Connectivity zwischen den Servern funktioniert. Dazu angeben, dass existierenden public und private Keys verwendet werden sollen.
grid-pic7
grid-pic8
Das Interface eth1 wird auf ‘private’ gesetzt.
grid-pic9
Die Oracle Cluster Registry wird auf den ASM Storage platziert.
grid-pic10
Der Discover Path muss angepasst werden, damit die ASM Disks gefunden werden.
grid-pic11
grid-pic12
Fuer SYS und SYSTEM kann in der Testumgebung das gleiche Passwort verwendet werden.
grid-pic13
Ist das Passwort zu simple, muss die Verwendung bestaetigt werden.
grid-pic14
Das IPMI ist in der Testumgebung nich verfuegbar.
grid-pic15
Ist Oracle Cloud Control vorhanden, kann Grid Infrastructure registriert werden. Ansonsten kann dieser Schritt uebersprungen werden.
grid-pic16
OS Gruppen bestimmen, die fuer die Authentisierung verwendet werden sollen.
grid-pic17
Base und Home fuer die GI Installation angeben, siehe auch Oracle Optimal Flexible Architecture by dbi services .
grid-pic18
grid-pic19
Die Configuration Scripts werden automatisch ausgefuehrt, wenn hier das root Password angegeben wird. Werden die Scripte manuell in einem separaten Terminal ausgefuehrt, kann man besser den Fortschritt verfolgen.
grid-pic21
Zusammenfassung der Installation. Sollen spaeter weitere, aehnliche Installationen durchgefuehrt werden, kann man ein Response File speichern.
grid-pic22
grid-pic23
Die Ausfuehrung der Configration Scripts noch einmal bestaetigen.
grid-pic26
Die Ausfuehrung der Scripte dauert relativ lange, ohne dass ein Fortschritt angezeigt wird, also Geduld haben.
grid-pic28
Die Ausfuehrung des Cluster Verification Utilities ist aus bekannten Gruenden fehlerhaft.
grid-pic29
Die Verification skippen und mit der Installation fortfahren.
grid-pic30
grid-pic31
Ja, wir sind sicher mit der Installation fortzufahren.
grid-pic32
Die Installation war erfolgreich.
grid-pic33
Die Oracle Grid Infrastructure ist im Anschluss an die Installation gestartet und stabil.
[grid@oel61 ~]$ export ORACLE_SID=+ASM1 [grid@oel61 ~]$ . oraenv ORACLE_SID = [+ASM1] ? The Oracle base has been set to /u00/app/grid [grid@oel61 ~]$ crsctl status res -t -------------------------------------------------------------------------------- Name Target State Server State details -------------------------------------------------------------------------------- Local Resources -------------------------------------------------------------------------------- ora.CRS.dg ONLINE ONLINE oel61 STABLE ONLINE ONLINE oel62 STABLE ora.LISTENER.lsnr ONLINE ONLINE oel61 STABLE ONLINE ONLINE oel62 STABLE ora.asm ONLINE ONLINE oel61 Started,STABLE ONLINE ONLINE oel62 Started,STABLE ora.net1.network ONLINE ONLINE oel61 STABLE ONLINE ONLINE oel62 STABLE ora.ons ONLINE ONLINE oel61 STABLE ONLINE ONLINE oel62 STABLE -------------------------------------------------------------------------------- Cluster Resources -------------------------------------------------------------------------------- ora.LISTENER_SCAN1.lsnr 1 ONLINE ONLINE oel62 STABLE ora.LISTENER_SCAN2.lsnr 1 ONLINE ONLINE oel61 STABLE ora.LISTENER_SCAN3.lsnr 1 ONLINE ONLINE oel61 STABLE ora.MGMTLSNR 1 ONLINE ONLINE oel61 169.254.16.197 192.1 68.58.11,STABLE ora.cvu 1 ONLINE ONLINE oel61 STABLE ora.mgmtdb 1 ONLINE ONLINE oel61 Open,STABLE ora.oc4j 1 ONLINE ONLINE oel61 STABLE ora.oel61.vip 1 ONLINE ONLINE oel61 STABLE ora.oel62.vip 1 ONLINE ONLINE oel62 STABLE ora.scan1.vip 1 ONLINE ONLINE oel62 STABLE ora.scan2.vip 1 ONLINE ONLINE oel61 STABLE ora.scan3.vip 1 ONLINE ONLINE oel61 STABLE -------------------------------------------------------------------------------- [grid@oel61 ~]$
Jetzt kann Oracle RDBMS installiert werden …
Oracle RDBMS SW installieren
Auf dem Server eine Staging Bereich bereitstellen.
[root@oel61 ~]# cd /tmp/swstage/ [root@oel61 swstage]# rm -rf * [root@oel61 swstage]#
Die Software vom Host auf den Server, in die Stageing Area kopieren.
mbp02:12102 hed$ ll total 12222256 -rw-r--r--@ 1 hed staff 1.6G Dec 17 14:47 linuxamd64_12102_database_1of2.zip -rw-r--r--@ 1 hed staff 968M Dec 17 15:05 linuxamd64_12102_database_2of2.zip -rw-r--r--@ 1 hed staff 476M Dec 17 15:19 linuxamd64_12102_examples.zip -rw-r--r--@ 1 hed staff 645M Dec 17 15:21 linuxamd64_12102_gateways.zip -rw-r--r--@ 1 hed staff 1.6G Dec 17 14:14 linuxamd64_12102_grid_1of2.zip -rw-r--r--@ 1 hed staff 617M Dec 17 14:16 linuxamd64_12102_grid_2of2.zip mbp02:12102 hed$ scp linuxamd64_12102_database_* root@oel61:/tmp/swstage root@oel61's password: linuxamd64_12102_database_1of2.zip 100% 1596MB 34.7MB/s 00:46 linuxamd64_12102_database_2of2.zip 100% 968MB 31.2MB/s 00:31 mbp02:12102 hed$
Auf dem Server die Software entpacken und die ZIPs loeschen.
[root@oel61 swstage]# unzip -q linuxamd64_12102_database_1of2.zip [root@oel61 swstage]# unzip -q linuxamd64_12102_database_2of2.zip [root@oel61 swstage]# rm -fv linuxamd64_12102_database_* removed `linuxamd64_12102_database_1of2.zip' removed `linuxamd64_12102_database_2of2.zip' [root@oel61 swstage]#
Mit dem User oracle wird die RDBMS SW installiert
mbp02:~ hed$ ssh -Y oracle@oel61 oracle@oel61's password: Last login: Tue Jan 20 13:47:41 2015 from oel62.dammeyer.local /usr/bin/xauth: creating new authority file /home/oracle/.Xauthority [oracle@oel61 ~]$ cd /tmp/swstage/database/ [oracle@oel61 database]$ [oracle@oel61 database]$ ./runInstaller -ignoreSysprereqs -ignorePrereq
In der Testumgebung kann auf die Security Updates durch den Oracle Support verzichtet werden.
Keine Email Addresse angeben.
Es wird nur die Sofware installiert, die Datenbank wird spaeter separat mit dem dbca erstellt.
Es wird eine Single Instance Datenbank erstellt.
Hier koennen die gewuenschten Sprachen ausgewaehlt werden.
Aktuell (Jan 2015) ist die Version 12.1.0.2 nur als Enterprise Edition verfuegbar. Man koennte auch eine andere Version installieren und dann die Standard Edition auswaehlen.
Die Pfade fuer ORACLE_BASE und ORACLE_HOME sind gemaess dem Dokument Oracle Optimal Flexible Architecture by dbi services .
Die entsprechenden OS Gruppen fuer die Authentisierung zuordnen.
In der Summary hat man noch einmal die Gelegenheit Anpassungen vorzunehmen und kann die Angaben in einem Response File fuer spaetere Installationen sichern.
Installation …
Zum Abschluss noch root.sh ausfuehren.
Als root das Script ausfuehren.
[root@oel61 ~]# /u00/app/oracle/product/12.1.0/db_1_0/root.sh Performing root user operation. The following environment variables are set as: ORACLE_OWNER= oracle ORACLE_HOME= /u00/app/oracle/product/12.1.0/db_1_0 Enter the full pathname of the local bin directory: [/usr/local/bin]: The contents of "dbhome" have not changed. No need to overwrite. The contents of "oraenv" have not changed. No need to overwrite. The contents of "coraenv" have not changed. No need to overwrite. Entries will be added to the /etc/oratab file as needed by Database Configuration Assistant when a database is created Finished running generic part of root script. Now product-specific root actions will be performed. [root@oel61 ~]#
Installation erfolgreich abgeschlossen.
Sonst kann im Grid Infrastructure Cluster keine DB gestartet werden.
[root@oel61 ~]# id uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [root@oel61 ~]# cd /u00/app/oracle/product/12.1.0/db_1_0/bin/ [root@oel61 bin]# ll oracle -rwsr-s--x. 1 oracle oinstall 323762222 Jan 20 19:48 oracle [root@oel61 bin]# chgrp asmadmin oracle; chmod 6751 oracle; ll oracle -rwsr-s--x. 1 oracle asmadmin 323762222 Jan 20 19:48 oracle [root@oel61 bin]#
dbi services dmk installieren
Das dbi service Database Management Kit (DMK) vereinfacht und standardisiert die DB Administration auf OS Level. Das Package kann über dbi services bezogen werden.
Fuer die Installation des DMK muss Oracle auf dem Server installiert sein. Fuer DMK wird ein Dummy Eintrag in die /etc/oratab eingetragen.
[oracle@oel61 ~]$ grep rdbms /etc/oratab rdbms1210:/u00/app/oracle/product/12.1.0/db_1_0:D [oracle@oel61 ~]$
Das DMK wird ins $ORACLE_BASE/local installiert.
mbp02:current hed$ scp dmk-14-03-unix.tar.gz oracle@oel61:/u00/app/oracle/local oracle@oel61's password: dmk-14-03-unix.tar.gz 100% 5714KB 5.6MB/s 00:00 mbp02:current hed$
[oracle@oel61 local]$ pwd /u00/app/oracle/local [oracle@oel61 local]$ gunzip dmk-14-03-unix.tar.gz [oracle@oel61 local]$ tar xf dmk-14-03-unix.tar [oracle@oel61 local]$ ls -l total 8556 drwxr-xr-x. 9 oracle oinstall 4096 Mar 9 2014 dmk -rw-r--r--. 1 oracle oinstall 8755200 Jan 22 12:21 dmk-14-03-unix.tar [oracle@oel61 local]$ rm dmk-14-03-unix.tar [oracle@oel61 local]$
Im File $DMK_HOME/etc/dmk.conf.unix gegebenfalls Anpassungen vornehmen.
Folgende Variablen sollten geprueft werden
- ORACLE_BASE
- ORATAB
- TNS_ADMIN
[oracle@oel61 bin]$ echo $SHELL /bin/bash [oracle@oel61 bin]$ . ./dmk.bash 2015-01-22_12:33:40::dmk.bash::-bash ::INFO ==> Create the ~/.DMK_HOME file 2015-01-22_12:33:40::dmk.bash::-bash ::INFO ==> Create the ~/.DMK_PERL file oracle@oel61:/u00/app/oracle/local/dmk/bin/ [rdbms1210]
DMK ist installiert und funktioniert
oracle@oel61:/u00/app/oracle/ [rdbms1210] u Dummy: ------ Dummy : rdbms1210(12.1.0/db_1_0) Database(s): ------------ Open/(No)Mount : +ASM1(grid) Stopped : -MGMTDB(grid) Listener(s): ------------ Started : LISTENER(grid) LISTENER_SCAN1(grid) LISTENER_SCAN2(grid) LISTENER_SCAN3(grid) Started : MGMTLSNR(grid) oracle@oel61:/u00/app/oracle/ [rdbms1210]
Nachdem DMK auf dem 1. Server verfuegbar ist, koennen weitere Module installiert werden. Es reicht aus, dass die Files im $ORACLE_BASE/local/ entpackt werden und DMK erneut geladen wird.
- dmk_dbbackup-14-10.tar.gz
- dmk_ha-14-10.tar.gz
- dmk_sql-14-10.tar.gz
Um einfach die DMK Umgebung setzen zu koennen, wird in der ~./.bashrc ein alias gesetzt.
oracle@oel61:/home/oracle/ [rdbms1210] grep dmk ~/.bashrc alias dmk='. /u00/app/oracle/local/dmk/bin/dmk.bash' oracle@oel61:/home/oracle/ [rdbms1210]
chmod -R g+rw /u00/app/oracle/local/dmk chmod -R g+r /u00/app/oracle/product/12.1.0/db_1_0/perl chmod -R g+rwx /u00/app/oracle/product/12.1.0/db_1_0/perl/bin/perl chmod -R g+x /u00/app/oracle/product/12.1.0/db_1_0/perl/bin/perl chmod -R g+w /u00/app/oracle/product/12.1.0/db_1_0/perl/bin/perl
Auch /etc/oratab muss angepasst werden,
Gemaess Oracle Optimal Flexible Architecture by dbi services soll auf einem Server ein zentrales ./network/admin in $ORACLE_BASE gepflegt werden. Damit es zu keinen Problemen kommt, wird in $ORACLE_HOME/network ein symbolic Link erstellt.
oracle@oel61:/home/oracle/ [rdbms1210] cd $ORACLE_HOME/network oracle@oel61:/u00/app/oracle/product/12.1.0/db_1_0/network/ [rdbms1210] rm -rf admin oracle@oel61:/u00/app/oracle/product/12.1.0/db_1_0/network/ [rdbms1210] ln -vs /u00/app/oracle/network/admin/ `./admin' -> `/u00/app/oracle/network/admin/' oracle@oel61:/u00/app/oracle/product/12.1.0/db_1_0/network/ [rdbms1210] ll admin/ total 8 -rw-rw-r--. 1 oracle oinstall 1331 Jan 22 12:36 listener.ora -rw-r--r--. 1 grid oinstall 228 Jan 22 12:40 sqlnet.ora oracle@oel61:/u00/app/oracle/product/12.1.0/db_1_0/network/ [rdbms1210]
Oracle DB erstellen
Die Datenbank wird einfach mit dem Database Creation Assistant (dbca) erstellt. Vorher muessen jedoch noch die ASM Diskgroups FRA und DATA angegelegt werden.
Die ASM Diskgroups DATA und FRA anlegen
Die Diskgroups werden erst jetzt angelegt, weil jetzt die DMK Umgebung zur Verfuegung steht.
mbp02:~ hed$ ssh grid@oel61 grid@oel61's password: Last login: Thu Jan 22 14:10:29 2015 from 192.168.57.1 [grid@oel61 ~]$ dmk grid@oel61:/home/grid/ [rdbms1210] +asm1 ********* dbi services Ltd. ********* STATUS : STARTED ************************************* grid@oel61:/home/grid/ [+ASM1] sqh SQL*Plus: Release 12.1.0.2.0 Production on Thu Jan 22 14:16:13 2015 Copyright (c) 1982, 2014, Oracle. All rights reserved. Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production With the Real Application Clusters and Automatic Storage Management options SQL> -- welche disks sind verfuegbar? set pages 9999 set lines 132 column path form a20 column name form a30 select path,name from v$asm_disk order by 1; PATH NAME -------------------- ------------------------------ /dev/asm_disk1 CRS_0000 /dev/asm_disk2 /dev/asm_disk3 SQL> CREATE DISKGROUP FRA EXTERNAL REDUNDANCY DISK '/dev/asm_disk2'; Diskgroup created. SQL> CREATE DISKGROUP DATA EXTERNAL REDUNDANCY DISK '/dev/asm_disk3'; Diskgroup created. SQL> select path,name from v$asm_disk order by 1; PATH NAME -------------------- ------------------------------ /dev/asm_disk1 CRS_0000 /dev/asm_disk2 FRA_0000 /dev/asm_disk3 DATA_0000 SQL>
grid@oel61:/home/grid/ [+ASM1] asmcmd lsdg State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name MOUNTED EXTERN N 512 4096 1048576 6142 1670 0 1670 0 Y CRS/ MOUNTED EXTERN N 512 4096 1048576 6142 6092 0 6092 0 N DATA/ MOUNTED EXTERN N 512 4096 1048576 6142 6092 0 6092 0 N FRA/ grid@oel61:/home/grid/ [+ASM1]
Oracle DB mit dem dbca anlegen
mbp02:~ hed$ ssh -Y oracle@oel61 oracle@oel61's password: Last login: Thu Jan 22 14:33:18 2015 from 192.168.57.1 [oracle@oel61 ~]$ dmk oracle@oel61:/home/oracle/ [rdbms1210] dbca
Eine Datenbank erstellen.
db-pic2
Den Advanced Mode waehlen.
db-pic3
Damit es schneller geht, wir General Purpose DB gewaehlt.
db-pic4
Der Datenbank einen Namen geben. Die Datenbank wird nicht als Container DB angelegt.
db-pic5
Oracle EM Database Express kann konfiguriert werden.
db-pic6
In einer Testungebung kann für SYS und SYSTEM das gleiche Passwort verwendet werden.
db-pic7
Die Verwendung simpler Passwoerter muessen bestaetigt werden.
db-pic8
Es muss kein weiterer Listener erstellt werden.
db-pic9
Wenn fuer die Recovery Files ASM als Storage Type ausgewaehlt wird, dann kann hier auch +FRA als Destination genutzt werden.
db-pic11
Laesst man den dbca die Scripte erstellen, kann die DB im Bedarfsfall einfach nochmal erstellt werden.
db-pic12
Mit Finish beginnt dbca die Datenbank zu erstellen.
db-pic14
db-pic14
db-pic16
Abschluss der DB Erstellung.
db-pic17
Datenbank ist Up & Running
oracle@oel61:/home/oracle/ [rdbms1210] orcl1 ********* dbi services Ltd. ********* STATUS : OPEN DB_UNIQUE_NAME : ORCL1 OPEN_MODE : READ WRITE LOG_MODE : NOARCHIVELOG DATABASE_ROLE : PRIMARY FLASHBACK_ON : NO FORCE_LOGGING : NO VERSION : 12.1.0.2.0 CDB Enabled : NO ************************************* oracle@oel61:/home/oracle/ [ORCL1]
Legt man die DB mit dem dbca an, wird sie automatisch als Ressource dem GI CLuster hinzugefuegt. Wir loeschen diese Ressource, da wir die Datenbank als Failover Ressource verwenden wollen.
root@oel61:/root/ [grid] crsctl status res ora.orcl1.db NAME=ora.orcl1.db TYPE=ora.database.type TARGET=ONLINE STATE=ONLINE on oel61 root@oel61:/root/ [grid] root@oel61:/root/ [grid] srvctl stop database -db orcl1 -stopoption IMMEDIATE root@oel61:/root/ [grid] crsctl status res ora.orcl1.db NAME=ora.orcl1.db TYPE=ora.database.type TARGET=OFFLINE STATE=OFFLINE root@oel61:/root/ [grid] root@oel61:/root/ [grid] srvctl remove database -db orcl1 -verbose Remove the database orcl1? (y/[n]) y Successfully removed server pool ORCL1 which is used to manage database orcl1. Successfully removed database and its dependent services. root@oel61:/root/ [grid]
Setup der DB Failover Resourcen
Damit Datenbanken im Grid Infrastructure Cluster als Failover Ressourcen erkannt werden, muss ein entsprechender Ressourcen Type angelegt werden. Danach muss die Datenbank als Ressource hinzugefuegt werden.
Clustertype in GI anlegen.
Im Falle eines Problems soll die Datenbank automatisch auf den zweiten Knoten verschoben werden. Damit das moeglich ist, muss einmalig ein neuer Ressourcen Type angelegt werden.
- Eine Datei clu_db.type anlegen
[root@oel60 ~]# cat <<EOF_ >>clu_db.type ATTRIBUTE=DESCRIPTION TYPE=STRING DEFAULT_VALUE='Oracle Database resource' ATTRIBUTE=CHECK_INTERVAL TYPE=INT DEFAULT_VALUE=30 in seconds # Controls the database ATTRIBUTE=ACTION_SCRIPT TYPE=STRING DEFAULT_VALUE=/u00/app/oracle/local/dmk/bin/db_crs.ksh # does not apply to an active/passive 2 nodes cluster ATTRIBUTE=ACTIVE_PLACEMENT TYPE=INT DEFAULT_VALUE=0 # Defines the owner of a resource ATTRIBUTE=ACL TYPE=STRING DEFAULT_VALUE='owner:oracle:rwx,pgrp:oinstall:rwx,other::r--' # Restrict placement to SERVER_POOL and HOSTING_MEMBERS attribute ATTRIBUTE=PLACEMENT TYPE=STRING DEFAULT_VALUE=restricted # Restores the resource to the same state that it was in when the server stopped ATTRIBUTE=AUTO_START TYPE=STRING DEFAULT_VALUE=restore # The maximum time (in seconds) in which a start action can run ATTRIBUTE=START_TIMEOUT TYPE=INT DEFAULT_VALUE=600 # The maximum time (in seconds) in which a stop or clean action can run ATTRIBUTE=STOP_TIMEOUT TYPE=INT DEFAULT_VALUE=600 # The number of servers on which a resource can run, simultaneously. ATTRIBUTE=CARDINALITY TYPE=STRING DEFAULT_VALUE=1 # A disabled resource cannot be started but it can be stopped (0 disabled) ATTRIBUTE=ENABLED TYPE=INT DEFAULT_VALUE=1 # The number of times that Oracle Clusterware attempts to restart a resource # on the resource's current server before attempting to relocate it. ATTRIBUTE=RESTART_ATTEMPTS TYPE=INT DEFAULT_VALUE=2 # Length of time that a resource must be up before Oracle Clusterware considers the resource to be stable. After the UPTIME_THRESHOLD elapses, Oracle Clusterware resets the value for RESTART_COUNT to 0 ATTRIBUTE=UPTIME_THRESHOLD TYPE=STRING DEFAULT_VALUE=4h # The number of failures of a resource detected within a specified FAILURE_INTERVAL for the resource before Oracle Clusterware marks the resource as unavailable and no longer monitors it. ATTRIBUTE=FAILURE_THRESHOLD TYPE=INT DEFAULT_VALUE=2 # The interval, in seconds, before Oracle Clusterware stops a resource if the resource has exceeded # the number of failures specified by the FAILURE_THRESHOLD attribute. ATTRIBUTE=FAILURE_INTERVAL TYPE=INT DEFAULT_VALUE=3600 EOF_
Als root wird der Resourcen Type dem Cluster hinzugefuegt.
[root@oel61 ~]# . /u00/app/oracle/local/dmk/bin/dmk.bash root@oel61:/root/ [grid] crsctl add type clu_db.type -basetype cluster_resource -file clu_db.type root@oel61:/root/ [grid] root@oel61:/root/ [grid] crsctl status type clu_db.type TYPE_NAME=clu_db.type BASE_TYPE=cluster_resource root@oel61:/root/ [grid]
Datenbank dem GI Cluster als Ressource hinzufuegen
Die Datenbank wird dem Cluster als Ressource bekannt gemacht.
- Eine Datei cluster_db.res anlegen
[root@oel60 ~]# cat <<EOF_ >>clu_db.res \#Space-delimited, ordered list of cluster server names that can host a resource. # Required when the value of the PLACEMENT attribute is set to favored or restricted HOSTING_MEMBERS=oel61 oel62 \#Specifies a set of relationships that Oracle Clusterware considers when starting/stopping a resource # Depencies can be hard weak pullup intermediate exclusion and so on ... # Specify a hard start dependency for a resource when you want the resource to start only when a particular resource or resource of a particular type starts. # Specify a weak start dependency for a resource when you want that resource to start despite whether named resources are running, or not. # When you specify the pullup start dependency for a resource, then this resource starts because of named resources starting. START_DEPENDENCIES=hard(ora.DATA.dg,ora.FRA.dg) weak(type:ora.scan_listener.type) pullup(ora.LISTENER.lsnr) STOP_DEPENDENCIES=hard(intermediate:ora.asm,shutdown:ora.DATA.dg,shutdown:ora.FRA.dg) # Defines the owner of a resource and the access privileges ACL=owner:oracle:rwx,pgrp:oinstall:rwx,other::r-- EOF_
Die Attribute sind in der Oracle Clusterware Resource Reference dokumentiert.
Ebenfalls als root wird die Datenbank Resource zum Clusterhinzugefuegt.
root@oel61:/root/ [grid] crsctl add resource ORCL1.db -type clu_db.type -file clu_db.res root@oel61:/root/ [grid] crsctl status res ORCL1.db NAME=ORCL1.db TYPE=clu_db.type TARGET=OFFLINE STATE=OFFLINE root@oel61:/root/ [grid] root@oel61:/root/ [grid] crsctl start res ORCL1.db CRS-2672: Attempting to start 'ORCL1.db' on 'oel61' CRS-2676: Start of 'ORCL1.db' on 'oel61' succeeded root@oel61:/root/ [grid] crsctl status res ORCL1.db NAME=ORCL1.db TYPE=clu_db.type TARGET=ONLINE STATE=ONLINE on oel61 root@oel61:/root/ [grid]
Damit die DB Instanz auch auf dem zweiten Server gestartet werden kann, wird dort das Server Parameter File benoetigt. Dazu erstellen wir das spfile im ASM und legen im $ORACLE_HOME/dbs ein init.ora File an, das einen Pointer auf das spfile enthaelt.
oracle@oel61:/home/oracle/ [ORCL1] sqlplus -S / as sysdba <<EOF_ set echo on PROMPT create pfile='/tmp/pfile.ora' from spfile; create pfile='/tmp/pfile.ora' from spfile; PROMPT create spfile='+DATA/${ORACLE_SID^^}/spfile${ORACLE_SID^^}.ora' from pfile='/tmp/pfile.ora'; create spfile='+DATA/${ORACLE_SID^^}/spfile${ORACLE_SID^^}.ora' from pfile='/tmp/pfile.ora'; exit EOF_ create pfile='/tmp/pfile.ora' from spfile File created. create spfile='+DATA/ORCL1/spfileORCL1.ora' from pfile='/tmp/pfile.ora' File created. oracle@oel61:/home/oracle/ [ORCL1]
oracle@oel61:/home/oracle/ [ORCL1] cat > $ORACLE_HOME/dbs/init${ORACLE_SID^^}.ora <<EOF_ SPFILE='+DATA/${ORACLE_SID^^}/spfile${ORACLE_SID^^}.ora' EOF_ oracle@oel61:/home/oracle/ [ORCL1] cat $ORACLE_HOME/dbs/init${ORACLE_SID^^}.ora SPFILE='+DATA/ORCL1/spfileORCL1.ora' oracle@oel61:/home/oracle/ [ORCL1]
oracle@oel61:/home/oracle/ [ORCL1] rm -vi $ORACLE_HOME/dbs/spfile${ORACLE_SID^^}.ora rm: remove regular file `/u00/app/oracle/product/12.1.0/db_1_0/dbs/spfileORCL1.ora'? y removed `/u00/app/oracle/product/12.1.0/db_1_0/dbs/spfileORCL1.ora' oracle@oel61:/home/oracle/ [ORCL1]
oracle@oel61:/home/oracle/ [ORCL1] rm -vi $ORACLE_HOME/dbs/orapw${ORACLE_SID} rm: remove regular file `/u00/app/oracle/product/12.1.0/db_1_0/dbs/orapwORCL1'? y removed `/u00/app/oracle/product/12.1.0/db_1_0/dbs/orapwORCL1' oracle@oel61:/home/oracle/ [ORCL1] orapwd file=/u00/app/oracle/admin/${ORACLE_SID}/pfile/orapw${ORACLE_SID} Enter password for SYS: oracle@oel61:/home/oracle/ [ORCL1] oracle@oel61:/home/oracle/ [ORCL1] ln -vs $DMK_ORA_ADMIN/${ORACLE_SID}/pfile/orapw${ORACLE_SID} $ORACLE_HOME/dbs/orapw${ORACLE_SID} `/u00/app/oracle/product/12.1.0/db_1_0/dbs/orapwORCL1' -> `/u00/app/oracle/admin/ORCL1/pfile/orapwORCL1' oracle@oel61:/home/oracle/ [ORCL1]
racle@oel61:/home/oracle/ [ORCL1] cdh && cd dbs oracle@oel61:/u00/app/oracle/product/12.1.0/db_1_0/dbs/ [ORCL1] for D in $( ls init${ORACLE_SID}* orapw${ORACLE_SID}* ) ; do rsync -azvlP $D oel62:$(pwd)/; done sending incremental file list initORCL1.ora 37 100% 0.00kB/s 0:00:00 (xfer#1, to-check=0/1) sent 131 bytes received 31 bytes 324.00 bytes/sec total size is 37 speedup is 0.23 sending incremental file list orapwORCL1 -> /u00/app/oracle/admin/ORCL1/pfile/orapwORCL1 sent 102 bytes received 15 bytes 234.00 bytes/sec total size is 44 speedup is 0.38 oracle@oel61:/u00/app/oracle/product/12.1.0/db_1_0/dbs/ [ORCL1]
oracle@oel61:/u00/app/oracle/product/12.1.0/db_1_0/dbs/ [ORCL1] rsync -azvlP $DMK_ORA_ADMIN/${ORACLE_SID}/pfile/* oel62:$DMK_ORA_ADMIN/${ORACLE_SID}/pfile sending incremental file list init.ora.022201515170 1908 100% 0.00kB/s 0:00:00 (xfer#1, to-check=1/2) orapwORCL1 7680 100% 7.32MB/s 0:00:00 (xfer#2, to-check=0/2) sent 970 bytes received 50 bytes 2040.00 bytes/sec total size is 9588 speedup is 9.40 oracle@oel61:/u00/app/oracle/product/12.1.0/db_1_0/dbs/ [ORCL1]
Sind die Admin Verzeichnisse auf dem zweiten Server nicht vohanden, koennen sie mit rsync kopiert werden.
oracle@oel61:/home/oracle/ [ORCL1] rsync -azvlP $DMK_ORA_ADMIN/${ORACLE_SID} oel62:$DMK_ORA_ADMIN
Oracle Cluster commands / Failover Beispiele
Als grid
Stop / Start / Status einer Ressource
grid@oel61:/home/grid/ [grid] crsctl stop res ORCL1.db CRS-2673: Attempting to stop 'ORCL1.db' on 'oel61' CRS-2677: Stop of 'ORCL1.db' on 'oel61' succeeded grid@oel61:/home/grid/ [grid] crsctl start res ORCL1.db CRS-2672: Attempting to start 'ORCL1.db' on 'oel61' CRS-2676: Start of 'ORCL1.db' on 'oel61' succeeded grid@oel61:/home/grid/ [grid] crsctl status res ORCL1.db -t -------------------------------------------------------------------------------- Name Target State Server State details -------------------------------------------------------------------------------- Cluster Resources -------------------------------------------------------------------------------- ORCL1.db 1 ONLINE ONLINE oel61 STABLE --------------------------------------------------------------------------------
Entfernen einer Ressource
Um zum Beispiel eine Resource zu entfernen wird srvmgrl benutzt.
grid@oel22:/home/grid/ [+ASM] crsctl status res ora.orcl2.db -t -------------------------------------------------------------------------------- Name Target State Server State details -------------------------------------------------------------------------------- Cluster Resources -------------------------------------------------------------------------------- ora.orcl2.db 1 OFFLINE OFFLINE STABLE -------------------------------------------------------------------------------- grid@oel22:/home/grid/ [+ASM] srvctl remove database -db orcl2 Remove the database orcl2? (y/[n]) y grid@oel22:/home/grid/ [+ASM] crsctl status res ora.orcl2.db -t CRS-2613: Could not find resource 'ora.orcl2.db'. grid@oel22:/home/grid/ [+ASM]
Relocate einer Ressource
grid@oel61:/home/grid/ [grid] crsctl relocate res ORCL1.db CRS-2673: Attempting to stop 'ORCL1.db' on 'oel61' CRS-2677: Stop of 'ORCL1.db' on 'oel61' succeeded CRS-2672: Attempting to start 'ORCL1.db' on 'oel62' CRS-2676: Start of 'ORCL1.db' on 'oel62' succeeded grid@oel61:/home/grid/ [grid] crsctl status res ORCL1.db -t -------------------------------------------------------------------------------- Name Target State Server State details -------------------------------------------------------------------------------- Cluster Resources -------------------------------------------------------------------------------- ORCL1.db 1 ONLINE ONLINE oel62 STABLE -------------------------------------------------------------------------------- grid@oel61:/home/grid/ [grid]
Status aller Ressourcen
grid@oel61:/home/grid/ [grid] crsctl status res -t -------------------------------------------------------------------------------- Name Target State Server State details -------------------------------------------------------------------------------- Local Resources -------------------------------------------------------------------------------- ora.CRS.dg ONLINE ONLINE oel61 STABLE ONLINE ONLINE oel62 STABLE ora.DATA.dg ONLINE ONLINE oel61 STABLE ONLINE ONLINE oel62 STABLE ora.FRA.dg ONLINE ONLINE oel61 STABLE ONLINE ONLINE oel62 STABLE ora.LISTENER.lsnr ONLINE ONLINE oel61 STABLE ONLINE ONLINE oel62 STABLE ora.asm ONLINE ONLINE oel61 Started,STABLE ONLINE ONLINE oel62 Started,STABLE ora.net1.network ONLINE ONLINE oel61 STABLE ONLINE ONLINE oel62 STABLE ora.ons ONLINE ONLINE oel61 STABLE ONLINE ONLINE oel62 STABLE -------------------------------------------------------------------------------- Cluster Resources -------------------------------------------------------------------------------- ORCL1.db 1 ONLINE ONLINE oel62 STABLE ora.LISTENER_SCAN1.lsnr 1 ONLINE ONLINE oel62 STABLE ora.LISTENER_SCAN2.lsnr 1 ONLINE ONLINE oel61 STABLE ora.LISTENER_SCAN3.lsnr 1 ONLINE ONLINE oel61 STABLE ora.MGMTLSNR 1 ONLINE ONLINE oel61 169.254.16.197 192.1 68.58.11,STABLE ora.cvu 1 ONLINE ONLINE oel61 STABLE ora.mgmtdb 1 ONLINE ONLINE oel61 Open,STABLE ora.oc4j 1 ONLINE ONLINE oel61 STABLE ora.oel61.vip 1 ONLINE ONLINE oel61 STABLE ora.oel62.vip 1 ONLINE ONLINE oel62 STABLE ora.scan1.vip 1 ONLINE ONLINE oel62 STABLE ora.scan2.vip 1 ONLINE ONLINE oel61 STABLE ora.scan3.vip 1 ONLINE ONLINE oel61 STABLE -------------------------------------------------------------------------------- grid@oel61:/home/grid/ [grid]
Modify Resource Attributes
grid@oel61:/home/grid/ [grid] crsctl status res ORCL1.db -f | grep START_TIMEOUT START_TIMEOUT=600 grid@oel61:/home/grid/ [grid] crsctl modify resource ORCL1.db -attr "START_TIMEOUT=900" grid@oel61:/home/grid/ [grid] crsctl status res ORCL1.db -f | grep START_TIMEOUT START_TIMEOUT=900 grid@oel61:/home/grid/ [grid] crsctl status res ORCL1.db -f | grep ENABLED ENABLED=1 grid@oel61:/home/grid/ [grid] crsctl modify resource ORCL1.db -attr "ENABLED=0" grid@oel61:/home/grid/ [grid] crsctl status res ORCL1.db -f | grep ENABLED ENABLED=0 grid@oel61:/home/grid/ [grid] crsctl modify resource ORCL1.db -attr "ENABLED=1" grid@oel61:/home/grid/ [grid] crsctl status res ORCL1.db -f | grep ENABLED ENABLED=1 grid@oel61:/home/grid/ [grid]
Alle Cluster Knoten pruefen
grid@oel61:/home/grid/ [grid] crsctl check cluster -all ************************************************************** oel61: CRS-4537: Cluster Ready Services is online CRS-4529: Cluster Synchronization Services is online CRS-4533: Event Manager is online ************************************************************** oel62: CRS-4537: Cluster Ready Services is online CRS-4529: Cluster Synchronization Services is online CRS-4533: Event Manager is online ************************************************************** grid@oel61:/home/grid/ [grid]
Als root
Status CRS pruefen
root@oel61:/root/ [grid] crsctl check crs CRS-4638: Oracle High Availability Services is online CRS-4537: Cluster Ready Services is online CRS-4529: Cluster Synchronization Services is online CRS-4533: Event Manager is online root@oel61:/root/ [grid] crsctl check cluster -all ************************************************************** oel61: CRS-4537: Cluster Ready Services is online CRS-4529: Cluster Synchronization Services is online CRS-4533: Event Manager is online ************************************************************** oel62: CRS-4537: Cluster Ready Services is online CRS-4529: Cluster Synchronization Services is online CRS-4533: Event Manager is online ************************************************************** root@oel61:/root/ [grid]
Oracle High Availability Services autostart disable/enable auf lokalem Server
root@oel61:/root/ [grid] crsctl disable crs CRS-4621: Oracle High Availability Services autostart is disabled. root@oel61:/root/ [grid] crsctl enable crs CRS-4622: Oracle High Availability Services autostart is enabled. root@oel61:/root/ [grid]
Oracle High Availability Services auf lokalem Server beenden/starten
CRS beenden
root@oel61:/root/ [grid] crsctl stop crs CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on 'oel61' CRS-2673: Attempting to stop 'ora.crsd' on 'oel61' CRS-2790: Starting shutdown of Cluster Ready Services-managed resources on 'oel61' CRS-2673: Attempting to stop 'ora.FRA.dg' on 'oel61' CRS-2673: Attempting to stop 'ora.LISTENER_SCAN2.lsnr' on 'oel61' CRS-2673: Attempting to stop 'ora.mgmtdb' on 'oel61' CRS-2673: Attempting to stop 'ora.LISTENER_SCAN3.lsnr' on 'oel61' CRS-2673: Attempting to stop 'ora.LISTENER.lsnr' on 'oel61' CRS-2673: Attempting to stop 'ora.cvu' on 'oel61' CRS-2673: Attempting to stop 'ora.oc4j' on 'oel61' CRS-2677: Stop of 'ora.cvu' on 'oel61' succeeded CRS-2672: Attempting to start 'ora.cvu' on 'oel62' CRS-2676: Start of 'ora.cvu' on 'oel62' succeeded CRS-2677: Stop of 'ora.LISTENER_SCAN2.lsnr' on 'oel61' succeeded CRS-2673: Attempting to stop 'ora.scan2.vip' on 'oel61' CRS-2677: Stop of 'ora.LISTENER_SCAN3.lsnr' on 'oel61' succeeded CRS-2673: Attempting to stop 'ora.scan3.vip' on 'oel61' CRS-2677: Stop of 'ora.LISTENER.lsnr' on 'oel61' succeeded CRS-2673: Attempting to stop 'ora.oel61.vip' on 'oel61' CRS-2677: Stop of 'ora.FRA.dg' on 'oel61' succeeded CRS-2677: Stop of 'ora.scan2.vip' on 'oel61' succeeded CRS-2672: Attempting to start 'ora.scan2.vip' on 'oel62' CRS-2677: Stop of 'ora.scan3.vip' on 'oel61' succeeded CRS-2672: Attempting to start 'ora.scan3.vip' on 'oel62' CRS-2677: Stop of 'ora.mgmtdb' on 'oel61' succeeded CRS-2673: Attempting to stop 'ora.MGMTLSNR' on 'oel61' CRS-2677: Stop of 'ora.MGMTLSNR' on 'oel61' succeeded CRS-2672: Attempting to start 'ora.MGMTLSNR' on 'oel62' CRS-2677: Stop of 'ora.oel61.vip' on 'oel61' succeeded CRS-2672: Attempting to start 'ora.oel61.vip' on 'oel62' CRS-2676: Start of 'ora.scan2.vip' on 'oel62' succeeded CRS-2672: Attempting to start 'ora.LISTENER_SCAN2.lsnr' on 'oel62' CRS-2676: Start of 'ora.scan3.vip' on 'oel62' succeeded CRS-2672: Attempting to start 'ora.LISTENER_SCAN3.lsnr' on 'oel62' CRS-2677: Stop of 'ora.oc4j' on 'oel61' succeeded CRS-2672: Attempting to start 'ora.oc4j' on 'oel62' CRS-2676: Start of 'ora.oel61.vip' on 'oel62' succeeded CRS-2676: Start of 'ora.MGMTLSNR' on 'oel62' succeeded CRS-2672: Attempting to start 'ora.mgmtdb' on 'oel62' CRS-2676: Start of 'ora.LISTENER_SCAN2.lsnr' on 'oel62' succeeded CRS-2676: Start of 'ora.LISTENER_SCAN3.lsnr' on 'oel62' succeeded CRS-2676: Start of 'ora.oc4j' on 'oel62' succeeded CRS-2676: Start of 'ora.mgmtdb' on 'oel62' succeeded CRS-2673: Attempting to stop 'ora.CRS.dg' on 'oel61' CRS-2677: Stop of 'ora.CRS.dg' on 'oel61' succeeded CRS-2673: Attempting to stop 'ora.DATA.dg' on 'oel61' CRS-2677: Stop of 'ora.DATA.dg' on 'oel61' succeeded CRS-2673: Attempting to stop 'ora.asm' on 'oel61' CRS-2677: Stop of 'ora.asm' on 'oel61' succeeded CRS-2673: Attempting to stop 'ora.ons' on 'oel61' CRS-2677: Stop of 'ora.ons' on 'oel61' succeeded CRS-2673: Attempting to stop 'ora.net1.network' on 'oel61' CRS-2677: Stop of 'ora.net1.network' on 'oel61' succeeded CRS-2792: Shutdown of Cluster Ready Services-managed resources on 'oel61' has completed CRS-2677: Stop of 'ora.crsd' on 'oel61' succeeded CRS-2673: Attempting to stop 'ora.evmd' on 'oel61' CRS-2673: Attempting to stop 'ora.drivers.acfs' on 'oel61' CRS-2673: Attempting to stop 'ora.ctssd' on 'oel61' CRS-2673: Attempting to stop 'ora.mdnsd' on 'oel61' CRS-2673: Attempting to stop 'ora.gpnpd' on 'oel61' CRS-2677: Stop of 'ora.drivers.acfs' on 'oel61' succeeded CRS-2677: Stop of 'ora.ctssd' on 'oel61' succeeded CRS-2677: Stop of 'ora.mdnsd' on 'oel61' succeeded CRS-2677: Stop of 'ora.gpnpd' on 'oel61' succeeded CRS-2677: Stop of 'ora.evmd' on 'oel61' succeeded CRS-2673: Attempting to stop 'ora.storage' on 'oel61' CRS-2677: Stop of 'ora.storage' on 'oel61' succeeded CRS-2673: Attempting to stop 'ora.asm' on 'oel61' CRS-2677: Stop of 'ora.asm' on 'oel61' succeeded CRS-2673: Attempting to stop 'ora.cluster_interconnect.haip' on 'oel61' CRS-2677: Stop of 'ora.cluster_interconnect.haip' on 'oel61' succeeded CRS-2673: Attempting to stop 'ora.cssd' on 'oel61' CRS-2677: Stop of 'ora.cssd' on 'oel61' succeeded CRS-2673: Attempting to stop 'ora.crf' on 'oel61' CRS-2677: Stop of 'ora.crf' on 'oel61' succeeded CRS-2673: Attempting to stop 'ora.gipcd' on 'oel61' CRS-2677: Stop of 'ora.gipcd' on 'oel61' succeeded CRS-2793: Shutdown of Oracle High Availability Services-managed resources on 'oel61' has completed CRS-4133: Oracle High Availability Services has been stopped. root@oel61:/root/ [grid]
CRS starten
root@oel61:/root/ [grid] crsctl start crs CRS-4123: Oracle High Availability Services has been started. root@oel61:/root/ [grid]
Nach kurzer Zeit sind die Services wieder online
root@oel61:/root/ [grid] crsctl check crs CRS-4638: Oracle High Availability Services is online CRS-4535: Cannot communicate with Cluster Ready Services CRS-4529: Cluster Synchronization Services is online CRS-4533: Event Manager is online root@oel61:/root/ [grid]
root@oel61:/root/ [grid] crsctl check crs CRS-4638: Oracle High Availability Services is online CRS-4537: Cluster Ready Services is online CRS-4529: Cluster Synchronization Services is online CRS-4533: Event Manager is online root@oel61:/root/ [grid]
Gesamtes Cluster beenden
root@oel61:/root/ [grid] crsctl stop cluster -all CRS-2673: Attempting to stop 'ora.crsd' on 'oel61' CRS-2790: Starting shutdown of Cluster Ready Services-managed resources on 'oel61' CRS-2673: Attempting to stop 'ora.FRA.dg' on 'oel61' CRS-2673: Attempting to stop 'ora.DATA.dg' on 'oel61' CRS-2673: Attempting to stop 'ora.CRS.dg' on 'oel61' CRS-2673: Attempting to stop 'ora.LISTENER_SCAN1.lsnr' on 'oel61' CRS-2673: Attempting to stop 'ora.LISTENER.lsnr' on 'oel61' CRS-2677: Stop of 'ora.CRS.dg' on 'oel61' succeeded CRS-2677: Stop of 'ora.LISTENER_SCAN1.lsnr' on 'oel61' succeeded CRS-2673: Attempting to stop 'ora.scan1.vip' on 'oel61' CRS-2677: Stop of 'ora.LISTENER.lsnr' on 'oel61' succeeded CRS-2673: Attempting to stop 'ora.oel61.vip' on 'oel61' CRS-2677: Stop of 'ora.FRA.dg' on 'oel61' succeeded CRS-2677: Stop of 'ora.DATA.dg' on 'oel61' succeeded CRS-2673: Attempting to stop 'ora.asm' on 'oel61' CRS-2677: Stop of 'ora.asm' on 'oel61' succeeded CRS-2673: Attempting to stop 'ora.crsd' on 'oel62' CRS-2790: Starting shutdown of Cluster Ready Services-managed resources on 'oel62' CRS-2673: Attempting to stop 'ora.LISTENER_SCAN3.lsnr' on 'oel62' CRS-2673: Attempting to stop 'ora.LISTENER_SCAN2.lsnr' on 'oel62' CRS-2673: Attempting to stop 'ora.LISTENER.lsnr' on 'oel62' CRS-2673: Attempting to stop 'ora.oc4j' on 'oel62' CRS-2673: Attempting to stop 'ora.mgmtdb' on 'oel62' CRS-2673: Attempting to stop 'ora.cvu' on 'oel62' CRS-2673: Attempting to stop 'ORCL1.db' on 'oel62' CRS-2677: Stop of 'ora.cvu' on 'oel62' succeeded CRS-2677: Stop of 'ora.LISTENER_SCAN3.lsnr' on 'oel62' succeeded CRS-2677: Stop of 'ora.scan1.vip' on 'oel61' succeeded CRS-2673: Attempting to stop 'ora.scan3.vip' on 'oel62' CRS-2677: Stop of 'ora.oel61.vip' on 'oel61' succeeded CRS-2673: Attempting to stop 'ora.ons' on 'oel61' CRS-2677: Stop of 'ora.LISTENER_SCAN2.lsnr' on 'oel62' succeeded CRS-2673: Attempting to stop 'ora.scan2.vip' on 'oel62' CRS-2677: Stop of 'ora.ons' on 'oel61' succeeded CRS-2673: Attempting to stop 'ora.net1.network' on 'oel61' CRS-2677: Stop of 'ora.net1.network' on 'oel61' succeeded CRS-2792: Shutdown of Cluster Ready Services-managed resources on 'oel61' has completed CRS-2677: Stop of 'ora.LISTENER.lsnr' on 'oel62' succeeded CRS-2673: Attempting to stop 'ora.oel62.vip' on 'oel62' CRS-2677: Stop of 'ora.scan3.vip' on 'oel62' succeeded CRS-2677: Stop of 'ora.scan2.vip' on 'oel62' succeeded CRS-2677: Stop of 'ora.mgmtdb' on 'oel62' succeeded CRS-2673: Attempting to stop 'ora.CRS.dg' on 'oel62' CRS-2673: Attempting to stop 'ora.MGMTLSNR' on 'oel62' CRS-2677: Stop of 'ora.crsd' on 'oel61' succeeded CRS-2673: Attempting to stop 'ora.ctssd' on 'oel61' CRS-2673: Attempting to stop 'ora.evmd' on 'oel61' CRS-2673: Attempting to stop 'ora.storage' on 'oel61' CRS-2677: Stop of 'ora.storage' on 'oel61' succeeded CRS-2673: Attempting to stop 'ora.asm' on 'oel61' CRS-2677: Stop of 'ora.oel62.vip' on 'oel62' succeeded CRS-2677: Stop of 'ora.ctssd' on 'oel61' succeeded CRS-2677: Stop of 'ora.evmd' on 'oel61' succeeded CRS-2677: Stop of 'ora.oc4j' on 'oel62' succeeded CRS-2677: Stop of 'ora.CRS.dg' on 'oel62' succeeded CRS-2677: Stop of 'ora.MGMTLSNR' on 'oel62' succeeded CRS-2677: Stop of 'ora.asm' on 'oel61' succeeded CRS-2673: Attempting to stop 'ora.cluster_interconnect.haip' on 'oel61' CRS-2677: Stop of 'ora.cluster_interconnect.haip' on 'oel61' succeeded CRS-2673: Attempting to stop 'ora.cssd' on 'oel61' CRS-2677: Stop of 'ora.cssd' on 'oel61' succeeded CRS-2677: Stop of 'ORCL1.db' on 'oel62' succeeded CRS-2673: Attempting to stop 'ora.DATA.dg' on 'oel62' CRS-2673: Attempting to stop 'ora.FRA.dg' on 'oel62' CRS-2677: Stop of 'ora.DATA.dg' on 'oel62' succeeded CRS-2677: Stop of 'ora.FRA.dg' on 'oel62' succeeded CRS-2673: Attempting to stop 'ora.asm' on 'oel62' CRS-2677: Stop of 'ora.asm' on 'oel62' succeeded CRS-2673: Attempting to stop 'ora.ons' on 'oel62' CRS-2677: Stop of 'ora.ons' on 'oel62' succeeded CRS-2673: Attempting to stop 'ora.net1.network' on 'oel62' CRS-2677: Stop of 'ora.net1.network' on 'oel62' succeeded CRS-2792: Shutdown of Cluster Ready Services-managed resources on 'oel62' has completed CRS-2677: Stop of 'ora.crsd' on 'oel62' succeeded CRS-2673: Attempting to stop 'ora.ctssd' on 'oel62' CRS-2673: Attempting to stop 'ora.evmd' on 'oel62' CRS-2673: Attempting to stop 'ora.storage' on 'oel62' CRS-2677: Stop of 'ora.storage' on 'oel62' succeeded CRS-2673: Attempting to stop 'ora.asm' on 'oel62' CRS-2677: Stop of 'ora.ctssd' on 'oel62' succeeded CRS-2677: Stop of 'ora.evmd' on 'oel62' succeeded CRS-2677: Stop of 'ora.asm' on 'oel62' succeeded CRS-2673: Attempting to stop 'ora.cluster_interconnect.haip' on 'oel62' CRS-2677: Stop of 'ora.cluster_interconnect.haip' on 'oel62' succeeded CRS-2673: Attempting to stop 'ora.cssd' on 'oel62' CRS-2677: Stop of 'ora.cssd' on 'oel62' succeeded root@oel61:/root/ [grid]
Gesamtes Cluster starten
root@oel61:/root/ [grid] crsctl start cluster -all
Default Value einer Ressource aendern
root@oel62:/root/ [grid] crsctl status type clu_db.type -f | grep -A 1 START_TIMEOUT ATTRIBUTE=START_TIMEOUT DEFAULT_VALUE=600 root@oel62:/root/ [grid] crsctl modify type clu_db.type -attr "ATTRIBUTE=START_TIMEOUT,DEFAULT_VALUE=600" root@oel62:/root/ [grid] crsctl status type clu_db.type -f | grep -A 1 START_TIMEOUT ATTRIBUTE=START_TIMEOUT DEFAULT_VALUE=600 root@oel62:/root/ [grid]
Nach einem Reboot des oel62 bzw Reload der udev Rules sind die ASM Disks auch auf dem zweiten Server verfuegbar.