Marco Burmeister
private Homepage
Oracle 26 bzw. 23.26 ist nun auch als Installations-Medium für die On-Prem-Welt verfügbar
(siehe Links-Bereich für Download-Link).
Ich wollte mir ansehen, wie die Multitenant-Welt mit CDB und PDB nun in der Clusterware abgebildet wurde.
Dafür habe ich eine Test-Installation in einer virtuellen Umgebung durchgeführt.
Die hier aufgeführte Anleitung funktioniert in allen Umgebungen, in denen ich eine gesharte Festplatte
benötige und wo die Umgebung selbst keine gesharten Festplatten bereitstellen kann.
Hierfür habe ich u.a. iSCSI und eine dritte VM genutzt.
Nach meiner Prüfung hatte ich die VMs wieder gelöscht.
Für den Aufbau der Clusterware-Umgebung habe ich 2 VMs mit openSUSE 16 für die Oracle Installation
selbst aufgebaut und eine VM mit openSUSE 16 als iSCSI Target / Server zur Bereitstellung der
gesharten Festplatten für die Clusterware / ASM Installation.
Auf der Grundlage mit der Clusterware habe ich dann die Datenbank-Installation durchgeführt und
eine RAC-Umgebung erstellt.
Eine RacOneNode-Installation wäre ebenfalls möglich.
Die Installationsanleitung hier auf der Seite umfasst nicht die ganzen Installationsbildschirme, die während
der openSUSE-, Clusterware- oder Datenbank-Installation angezeigt werden.
Ich habe mich darauf beschränkt, die wichtigsten Eckpunkte aufzuschreiben und gehe davon aus,
dass Nutzer dieser Anleitung schon openSUSE-, Clusterware- oder Datenbank-Installation durchgeführt haben.
Im Link-Bereich finden sich viele Verweise, die auch die Clusterware- und Datenbank-Installations-Dialoge
zeigen.
Mit dem hier beschriebenen Weg kann eine 2-Knoten Clusterware-Umgebung rein für kleine
Funktions-Tests aufgebaut werden.
Die Anleitung hier stellt eine Arbeitshilfe dar, aber keine vollständige Anleitung mit allen
Bildschirm-Dialogen!
Hinweis:
Für die Richtigkeit der Daten übernehme ich keine Gewähr!
Die Seite ist in die folgenden Bereiche eingeteilt:
/etc/hosts
eintragen. Habe ich dieses Mal nicht gemacht.
| IP-Adresse | DNS-Name |
|---|---|
| 192.168.50.10 | srviscsi.speedport.de |
| 192.168.50.21 | srvrac1.speedport.de |
| 192.168.50.22 | srvrac2.speedport.de |
| 192.168.50.23 | srvvi1.speedport.de |
| 192.168.50.24 | srvvi2.speedport.de |
| 192.168.50.25 | orascan.speedport.de |
| 192.168.50.26 | orascan.speedport.de |
| 192.168.50.27 | orascan.speedport.de |
| IP-Adresse | DNS-Name |
|---|---|
| 192.168.60.21 | priv1.speedport.de |
| 192.168.60.22 | priv2.speedport.de |
vmbr0 als normales, öffentliches Netz und
durch die o.a. Anleitung vmbr1 als Netzwerk-Bridge für den RAC Interconnect.
| VM | CPU-Core | RAM | Festplatte (lokal) |
|---|---|---|---|
| srviscsi | 2 | 4 GB | 32 GB (/dev/sda) 5 GB (/dev/sdb) 25 GB (/dev/sdc) 20 GB (/dev/sdd) |
| srvrac1 | 4 | 16 GB | 50 GB (/dev/sda) |
| srvrac2 | 4 | 16 GB | 50 GB (/dev/sda) |
srviscsi für unterschiedliche Zwecke.
Die /dev/sda dient als Boot-Disk, welche das Betriebssystem hält.
/dev/sdb, /dev/sdc, /dev/sdd)
haben absichtlich eine unterschiedliche Größe, um sie einfacher
wiederzufinden. Sie werden dann für die Clusterware und das ASM von den anderen VMs genutzt werden.
Hier darf kein Betriebssystem-Teil installiert werden. Die Platten bleiben erstmal leer.
srvrac1 und srvrac2 bereit.
srvrac1 und srvrac2
als Boot-Disk, welche das Betriebssystem hält, sowie als Ablageort der Installations-Dateien und als
Installationsort der Clusterware- und Datenbank-Software.
srviscsi benötigt nur eine Netzwerkkarte im öffentlichen Netz.
Im Gegensatz dazu benötigen die VMs srvrac1 und srvrac2 zwei Netzwerkkarten.
Später werden diese bei mir eth0 und eth1 heißen.
Die Netzwerkkarte eth0 wird für die öffentliche Kommunikation dienen.
Die private Kommunikation im RAC Interconnect wird über die Netzwerkkarte eth1 laufen
(Bridge vmbr1).
zypper install open-iscsi
zypper install targetcli-fb
zypper install open-iscsi
zypper install bc glibc gcc8 insserv-compat libaio-devel libaio1 libX11-6 libXau6 libXext-devel libXext6 libXi-devel libXi6 libXrender-devel libXrender1 libXtst6 libcap-ng-utils libcap-ng0 libcap-progs libcap1 libcap2 libelf1 libgcc_s1 libjpeg8 libpcap1 libpcre1 libpng16 libstdc++6 libgfortran4 mksh make pixz policycoreutils policycoreutils-python-utils smartmontools sysstat xorg-x11-libs ipmiutil net-tools
zypper install unzip
zypper install make gcc gcc-c++
zypper install open-iscsi
zypper install bc glibc gcc8 insserv-compat libaio-devel ✂
libaio1 libX11-6 libXau6 libXext-devel libXext6 libXi-devel ✂
libXi6 libXrender-devel libXrender1 libXtst6 libcap-ng-utils ✂
libcap-ng0 libcap-progs libcap1 libcap2 libelf1 libgcc_s1 ✂
libjpeg8 libpcap1 libpcre1 libpng16 libstdc++6 libgfortran4 ✂
mksh make pixz policycoreutils policycoreutils-python-utils ✂
smartmontools sysstat xorg-x11-libs ipmiutil net-tools
zypper install unzip
zypper install make gcc gcc-c++
zypper install cockpit
zypper install myrlyn
zypper install firefox
systemctl enable --now cockpit.socket
srvrac1 und srvrac2)
müssen wir UDEV-Regeln für die Netzwerkkarten anlegen.
rootip addrcd /etc/udev/rules.dvi 70-persistent-net.rules
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="bc:21:13:11:31:58", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="bc:21:13:d3:6e:78", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ✂
ATTR{address}=="bc:21:13:11:31:58", ATTR{dev_id}=="0x0", ✂
ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ✂
ATTR{address}=="bc:21:15:d3:6e:78", ATTR{dev_id}=="0x0", ✂
ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
firewall-cmd --permanent --zone=trusted --add-interface=eth0
firewall-cmd --permanent --zone=trusted --add-interface=eth1
firewall-cmd --reload
srviscsi erhalten (siehe auch oben).
| VM | eth0 | eth1 |
|---|---|---|
| 1 | srvrac1 | priv1 |
| 2 | srvrac2 | priv2 |
chronyd nach der Installation.
cat /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.1996-04.de.suse:01:61871b232c65
srviscsi dient ja als Server für die Festplatten, die die beiden RAC-VMs gleichzeitig
benutzen müssen.
Die entsprechende Einrichtung nehmen wir nun vor.
Die Festplatten /dev/sdb, /dev/sdc und /dev/sdd werden nun vorbereitet.
fdisk -l, um die Ausgabe mit den Erwartungen
zu vergleichen.
Die Platten /dev/sdb, /dev/sdc und /dev/sdd sollten alle leer sein
und eine Größe in GB von 5, 25 und 20 haben.
| Festplatte | Name im iSCSI |
|---|---|
/dev/sdb | oraclu |
/dev/sdc | oradat |
/dev/sdd | orafra |
targetcli eingeben, um die drei Festplatten
einzurichten. Dabei werden auch gleich die Berechtigungen auf die Platte erteilt. Am Ende können die RAC VMs
dann sofort auf die Platten zugreifen.
iqn.2026-01.local.srviscsi habe ich frei gewählt.
cat /etc/iscsi/initiatorname.iscsi
und sind hier beispielhaft aufgeschrieben.
| Platzhalter | Platzhalter-Wert |
|---|---|
| #iname# | oraclu |
| #idevice# | /dev/sdb |
| #isrvname# | iqn.2026-01.local.srviscsi:oraclu |
| #initiator1# | iqn.1996-04.de.suse:01:61871b232c65 |
| #initiator2# | iqn.1996-04.de.suse:01:a1feb76db147 |
| #iname# | oradat |
| #idevice# | /dev/sdc |
| #isrvname# | iqn.2026-01.local.srviscsi:oradat |
| #initiator1# | iqn.1996-04.de.suse:01:61871b232c65 |
| #initiator2# | iqn.1996-04.de.suse:01:a1feb76db147 |
| #iname# | orafra |
| #idevice# | /dev/sdd |
| #isrvname# | iqn.2026-01.local.srviscsi:orafra |
| #initiator1# | iqn.1996-04.de.suse:01:61871b232c65 |
| #initiator2# | iqn.1996-04.de.suse:01:a1feb76db147 |
targetcli drei Mal hintereinander (für jede freizugebenden Festplatte ein Mal)
und geben die folgenden
Code-Teile ein:
cd backstores/block
create name=#iname# dev=#idevice#
cd /iscsi
create #isrvname#
cd #isrvname#/tpg1/portals
--optional der Create bei alten Versionen der Software
create 0.0.0.0 3260
cd ../luns
create /backstores/block/#iname#
cd ../acls
create #initiator1#
create #initiator2#
cd /
saveconfig
exit
root):
sudo systemctl enable --now targetcli
sudo systemctl enable --now target
sudo firewall-cmd --permanent --add-port=3260/tcp
sudo firewall-cmd --reload
root.
systemctl enable --now iscsid
cat /etc/iscsi/initiatorname.iscsi
iscsiadm -m discovery -t sendtargets -p 192.168.50.10
iqn.2026-01.local.srviscsi:oraclu
iqn.2026-01.local.srviscsi:oradat
iqn.2026-01.local.srviscsi:orafra
iscsiadm -m node -T iqn.2026-01.local.srviscsi:oraclu --login
iscsiadm -m node -T iqn.2026-01.local.srviscsi:oradat --login
iscsiadm -m node -T iqn.2026-01.local.srviscsi:orafra --login
lsblk sehen.
iscsiadm -m node -T iqn.2026-01.local.srviscsi:oraclu --op update -n node.startup -v automatic
iscsiadm -m node -T iqn.2026-01.local.srviscsi:oradat --op update -n node.startup -v automatic
iscsiadm -m node -T iqn.2026-01.local.srviscsi:orafra --op update -n node.startup -v automatic
iscsiadm -m node -T iqn.2026-01.local.srviscsi:oraclu ✂
--op update -n node.startup -v automatic
iscsiadm -m node -T iqn.2026-01.local.srviscsi:oradat ✂
--op update -n node.startup -v automatic
iscsiadm -m node -T iqn.2026-01.local.srviscsi:orafra ✂
--op update -n node.startup -v automatic
sudo systemctl enable iscsid
sudo systemctl enable iscsi
systemctl stop avahi-daemon.socket
systemctl stop avahi-daemon
systemctl disable avahi-daemon.socket
systemctl disable avahi-daemon
root an.
sudo groupadd -g 3001 oinstall
sudo groupadd -g 3002 dba
sudo groupadd -g 3003 oper
sudo groupadd -g 3004 backupdba
sudo groupadd -g 3005 dgdba
sudo groupadd -g 3006 kmdba
sudo groupadd -g 3007 asmdba
sudo groupadd -g 3008 asmoper
sudo groupadd -g 3009 asmadmin
sudo groupadd -g 3010 racdba
sudo useradd -u 3001 -g oinstall -G dba,asmadmin,asmdba,asmoper,racdba grid
sudo useradd -u 3002 -g oinstall -G dba,oper,backupdba,dgdba,kmdba,asmdba,asmoper,asmadmin,racdba oracle
sudo useradd -u 3001 -g oinstall ✂
-G dba,asmadmin,asmdba,asmoper,racdba grid
sudo useradd -u 3002 -g oinstall ✂
-G dba,oper,backupdba,dgdba,kmdba,asmdba,✂
asmoper,asmadmin,racdba oracle
sudo passwd grid
sudo passwd oracle
root definieren / eintragen.
vi /etc/sysctl.conf
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 1073741824
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
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
kernel.panic = 2
sysctl -p
root
durchführen.
vi /etc/security/limits.conf
oracle soft nofile 65536
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384
oracle soft stack 10240
oracle hard stack 32768
oracle soft memlock 134217728
oracle hard memlock 134217728
oracle soft stack 10240
grid soft nofile 65536
grid hard nofile 65536
grid soft nproc 16384
grid hard nproc 16384
grid soft stack 10240
grid hard stack 32768
grid soft memlock 134217728
grid hard memlock 134217728
grid soft stack 10240
tmpfs für die Installation.
/etc/fstab.
root:
vi /etc/fstab
tmpfs /dev/shm tmpfs size=4g 0 0
mount -a
root.
ls /dev/sd*
Nun müssen wird die IDs ermitteln, die wir dann in den UDEV-Regeln verwenden:
/usr/lib/udev/scsi_id -gud /dev/sdb
/usr/lib/udev/scsi_id -gud /dev/sdc
/usr/lib/udev/scsi_id -gud /dev/sdd
cd /etc/udev/rules.d
vi 99-asm-disk.rules
RESULT== steht,
muss angepasst werden auf die spezifische Situation auf dem System!
KERNEL=="sd*", ENV{DEVTYPE}=="partition", ATTR{partition}=="1", PROGRAM=="/usr/lib/udev/scsi_id -gud /dev/$name", RESULT=="36004785ed02d05858954346944026a00", SYMLINK+="ORA_ASM_OCR_1", OWNER="grid", GROUP="asmdba", MODE="0660"
KERNEL=="sd*", ENV{DEVTYPE}=="partition", ATTR{partition}=="1", PROGRAM=="/usr/lib/udev/scsi_id -gud /dev/$name", RESULT=="36003732f55b06027e9b46eaa2c3c4881", SYMLINK+="ORA_ASM_DATA_1", OWNER="grid", GROUP="asmdba", MODE="0660"
KERNEL=="sd*", ENV{DEVTYPE}=="partition", ATTR{partition}=="1", PROGRAM=="/usr/lib/udev/scsi_id -gud /dev/$name", RESULT=="36009873c2fc193467294236a2c912c47", SYMLINK+="ORA_ASM_OFRA_1", OWNER="grid", GROUP="asmdba", MODE="0660"
KERNEL=="sd*", ENV{DEVTYPE}=="partition", ✂
ATTR{partition}=="1", ✂
PROGRAM=="/usr/lib/udev/scsi_id -gud /dev/$name", ✂
RESULT=="36004785ed02d05858954346944026a00", ✂
SYMLINK+="ORA_ASM_OCR_1", OWNER="grid", ✂
GROUP="asmdba", MODE="0660"
KERNEL=="sd*", ENV{DEVTYPE}=="partition", ✂
ATTR{partition}=="1", ✂
PROGRAM=="/usr/lib/udev/scsi_id -gud /dev/$name", ✂
RESULT=="36003732f55b06027e9b46eaa2c3c4881", ✂
SYMLINK+="ORA_ASM_DATA_1", OWNER="grid", ✂
GROUP="asmdba", MODE="0660"
KERNEL=="sd*", ENV{DEVTYPE}=="partition", ✂
ATTR{partition}=="1", ✂
PROGRAM=="/usr/lib/udev/scsi_id -gud /dev/$name", ✂
RESULT=="36009873c2fc193467294236a2c912c47", ✂
SYMLINK+="ORA_ASM_OFRA_1", OWNER="grid", ✂
GROUP="asmdba", MODE="0660"
99-asm-disk.rules muss auf beiden VM RAC Knoten im Verzeichnis
/etc/udev/rules.d als OS Benutzer root abgelegt werden.
root die folgenden Befehle ausführen.
fdisk /dev/sdb
fdisk /dev/sdc
fdisk /dev/sdd
fdisk ist danach auszuführen um auf jeder Disk eine primäre Partition anzulegen:
n (new partition)
p (primary)
1 (partitionnummer)
(First sector - übernehmen)
(Last sector - übernehmen)
w (speichern )
fdisk -l
root gemacht:
mkdir -p /INSTALL/DB
mkdir -p /INSTALL/Grid
LINUX.X64_2326100_grid_home.zip in /INSTALL/Grid.
LINUX.X64_2326100_db_home.zip ablegen in /INSTALL/DB.
chown -R oracle:dba /INSTALL
chown -R grid:dba /INSTALL/Grid
root an.
Das muss auf beiden RAC VM Knoten erfolgen!
mkdir -p /grid/u01/app/23.26.0.0/
mkdir -p /grid/u01/app/grid
mkdir -p /oracle/u01/app/oracle
mkdir -p /oracle/u01/app/oracle/product/23.26.0.0
/opt.
mkdir /opt/oracle
chown -R grid:oinstall /grid
chown -R oracle:oinstall /oracle/
chmod -R 775 /grid
chmod -R 775 /oracle
chown grid:oinstall /opt/oracle
chmod g+w /opt/oracle
root noch ein passendes Environment vergeben.
DBMBU angelegt werden
wird.
export ORACLE_SID=+ASM1
export ORACLE_BASE=/grid/u01/app/grid
export ORACLE_HOME=/grid/u01/app/23.26.0.0
export PATH=$ORACLE_HOME/bin:$PATH
export CV_ASSUME_DISTID=OEL8.0
export ORACLE_SID=+ASM2
export ORACLE_BASE=/grid/u01/app/grid
export ORACLE_HOME=/grid/u01/app/23.26.0.0
export PATH=$ORACLE_HOME/bin:$PATH
export CV_ASSUME_DISTID=OEL8.0
export ORACLE_SID=ORAMBU1
export ORACLE_BASE=/oracle/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/23.26.0.0
export PATH=$ORACLE_HOME/bin:$PATH
export CV_ASSUME_DISTID=OEL8.0
export ORACLE_SID=ORAMBU2
export ORACLE_BASE=/oracle/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/23.26.0.0
export PATH=$ORACLE_HOME/bin:$PATH
export CV_ASSUME_DISTID=OEL8.0
grid und oracle benötigen wir noch SSH-Keys die so eingerichtet sind,
dass der OS Benutzer grid sich auf beide RAC VMs ohne Passwort-Eingabe als Benutzer grid
anmelden kann.
oracle gilt gleiches als Benutzer oracle.
ssh-keygen -t rsa
authorized_keys erzeugt werden.
root folgendes ausführen:
getenforce
setenforce 0
getenforce
Installation:
Nach den initialen Vorbereitungen müssen wir erstmal die Clusterware installieren.
Wir melden uns am ersten RAC VM Knoten als OS Benutzer grid an.
Die Installation wird mit einer graphischen Oberfläche erfolgen, weshalb wir einen XServer auf dem Rechner benötigen.
Zunächst packen wir nun die Clusterware-Software im neuen ORACLE_HOME des OS Benutzers grid.
Dazu führen wir den folgenden Befehl aus:
unzip /INSTALL/Grid/LINUX.X64_2326100_grid_home.zip -d /grid/u01/app/23.26.0.0/
unzip /INSTALL/Grid/LINUX.X64_2326100_grid_home.zip ✂
-d /grid/u01/app/23.26.0.0/
grid):
export CV_ASSUME_DISTID=OEL8.0
/grid/u01/app/23.26.0.0/gridSetup.sh
| Menüpunkt im Installer | Eingabewert |
|---|---|
| Cluster-Name | rac-cluster |
| Scan-Name | orascan |
| Scan-Port | 1521 |
| Cluster-Nodes | Hier muss immer der Hostname der öffentlichen Netzwerkkarten angegeben werden.
Als zweiter Hostname je Knoten muss ein Hostname angegeben, welcher im DNS aufgelöst werden kann,
aber noch nicht irgendwo vergeben ist.
Hier im Beispiel: srvrac1 und srvvi1srvrac2 und srvvi2 |
| Netzwerkkarten | eth0 = Publiceth1 = Private und ASM |
| OS Gruppen | OSASM asmadminOSDBA asmdbaOSOPER asmoper |
| Inventory | /opt/oracle/oraInventory |
| ASM-Disk | Hier habe ich folgendes gewählt: Diskgroup OCR
mit Disk Path /dev/ORA_ASM_OCR_1.
Als Spiegel habe ich "External Redundancy" angegeben. |
ntp auf meinen VMs läuft. Bei mir läuft aber
Chrony. Deshalb habe ich diese Fehlermeldung ignoriert, da alles andere ohne Fehler gemeldet wurde.
crsctl check cluster -all
crsctl stat res -t
asmcmd lsdg
ocrcheck
crsctl query css votedisk
Vorbedingung:
Bevor wir die Datenbank installieren, muss die Clusterware installiert worden sein.
ASM-Disk vorbereiten:
In der Vorbereitung zur Datenbank Installation müssen wir noch im ASM die Speicherorte definieren.
Hierfür kann als OS Benutzer grid ein graphisches Frontend verwendet werden, welches auch wieder
einen XServer benötigt.
Dazu rufen wir auf:
asmca
Dann hatte ich definiert:
| Diskgroup Name | Device |
|---|---|
DATA | /dev/ORA_ASM_DATA_1 |
FRA | /dev/ORA_ASM_OFRA_1 |
External gestellt.
oracle an.
Die Installation wird mit einer graphischen Oberfläche erfolgen, weshalb wir einen XServer auf dem Rechner benötigen.ORACLE_HOME des OS Benutzers oracle.
Dazu führen wir den folgenden Befehl aus:
unzip /INSTALL/DB/LINUX.X64_2326100_db_home.zip -d /oracle/u01/app/oracle/product/23.26.0.0
unzip /INSTALL/DB/LINUX.X64_2326100_db_home.zip ✂
-d /oracle/u01/app/oracle/product/23.26.0.0
export CV_ASSUME_DISTID=OEL8.0
/oracle/u01/app/oracle/product/23.26.0.0/runInstaller
export CV_ASSUME_DISTID=OEL8.0
/oracle/u01/app/oracle/product/23.26.0.0/runInstaller
| DB-Gruppe | OS Gruppe |
|---|---|
OSDBA | dba |
OSOPER | oper |
OSBACKUPDBA | backupdba |
OSDGDBA | dgdba |
OSKMDBA | kmdba |
OSRACDBA | racdba |
Hinweis:
Für die Richtigkeit der Daten übernehme ich keine Gewähr!
Für den Inhalt von Internet-Seiten, auf die von dieser Seite verwiesen wird, übernehme ich keine Verantwortung!
Marco Burmeister, Copyright © 2024 - 2026
zuletzt geändert: 2026-04-18
URL: https://www.marco-burmeister.de/oracle/de_oracle_opensuse_oracle_26_clusterware_rac_installation.html
Impressum