Im heutigen Artikel werden wir Oracle RAC 19c unter Linux installieren. Unsere Installation wird auf Oracle Linux 8.3 sein.
Was ist Oracle RAC?
Oracle Real Application Cluster ist eine Clusterstruktur, in der mehrere Server für einen einzelnen Dienst arbeiten, indem gemeinsam genutzte Festplattentechnologie für einen ununterbrochenen Datenbankzugriff vorbereitet wird. Dank dieser Struktur, die mit einem Minimum von zwei Servern arbeitet, streben wir einen unterbrechungsfreien Service bei maximaler Effizienz in Produktionsumgebungen an.
Für die Installation von Real Application Cluster verwenden wir zwei Oracle Linux-Betriebssysteme, zwei Ethernet-Karten, die mit diesen Betriebssystemen verbunden sind, 3 virtuelle SCSI Adapter, und 5 gemeinsam genutzte Festplatten, welche von beiden Betriebssystemen eingesehen werden kann. Das ganze wird mit Virtualisierter Hardware auf ESXi 6.7 laufen.
Zuerst sollten Sie Schritt1 lesen: Howto Installation von Oracle RAC 19C auf ESXi Teil 1. Wenn Sie bereits über Oracle Linux verfügen, sollten Sie Ihre Betriebssysteme wie folgt konfigurieren.
Netzwerkkonfiguration für Oracle RAC
Wir installieren unser Betriebssystem, indem wir die Schritte auf dem obigen Link befolgen. Auf diese Weise müssen wir zwei Betriebssysteme verwenden. Ich verwende die Namen rac101. techlab.local für das erste Betriebssystem und rac102. techlab.local für das zweite Betriebssystem.
Nachdem das Betriebssystem bereit ist, bearbeiten wir das Netzwerk und die Pakete.
Zuallererst machen wir unsere Netzwerkeinstellungen. Auf diese Weise kann über die entsprechende IP-Adresse auf meine Server zugegriffen werden.
Öffentliche IP-Definitionen für rac101:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
TYPE=Ethernet PROXY_METHOD=keine BROWSER_ONLY-nein BOOTPROTO=keine DEFROUTE=ja IPV4_FAILURE_FATAL-nein IPV6INIT-nr NAME=ens161 UUID=f92eda33-78e9-497c-b4ad-ebe88b353f8b DEVICE=ens161 ONBOOT=ja IPADDR=192.168.19.118 PREFIX=24 GATEWAY=192.168.19.254 DNS1=192.168.19.254 DOMAIN=techlab.lokal |
Öffentliche IP-Definitionen für rac102:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
TYPE=Ethernet PROXY_METHOD=keine BROWSER_ONLY-nein BOOTPROTO=keine DEFROUTE=ja IPV4_FAILURE_FATAL-nein IPV6INIT-nr NAME=ens161 UUID=012de8f5-588a-4e0f-829d-3f0d06b8772c DEVICE=ens161 ONBOOT=ja IPADDR=192.168.19.119 PREFIX=24 GATEWAY=192.168.19.254 DNS1=192.168.19.254 DOMAIN=techlab.lokal |
Wir konfigurieren unsere zweite Ethernet-Karte für Verbindungsverbindungen.
Private IP-Definitionen für rac101:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
TYPE=Ethernet PROXY_METHOD=keine BROWSER_ONLY-nein BOOTPROTO=keine DEFROUTE=ja IPV4_FAILURE_FATAL-nein IPV6INIT-nr NAME=ens256 UUID=2ae2b887-bd1d-485f-8521-f5cdbbf6aae5 DEVICE=ens256 ONBOOT=ja IPADDR=192.168.2.118 PREFIX=24 DNS1=192.168.19.254 DOMAIN=techlab.lokal |
Private IP-Definitionen für rac102:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
TYPE=Ethernet PROXY_METHOD=keine BROWSER_ONLY-nein BOOTPROTO=keine DEFROUTE=ja IPV4_FAILURE_FATAL-nein IPV6INIT-nr NAME=ens256 UUID=2c2ad1b2-4509-4225-9d31-59835a5e46f0 DEVICE=ens256 ONBOOT=ja IPADDR=192.168.2.119 PREFIX=24 DNS1=192.168.19.254 DOMAIN=techlab.lokal |
Restart Oracle Linux-Hosts
Da wir öffentliche und private IP-Informationen auf unseren beiden Servern hinzugefügt haben, können wir unsere Systeme jetzt neu starten. reboot.
Deaktivieren von Selinux unter Oracle Linux
Wir deaktivieren Selinux auf Node1 und Node2.
1 2 3 |
# nano /etc/selinux/config SELINUX=disable |
Deaktivieren von der Firewall auf Oracle Linux
Wir deaktivieren Firewalldienste auf Node1 und Node2.
1 2 3 |
# systemctl stop firewalld.service # systemctl disable firewalld.service |
Avahi-Dämon auf Oracle Linux deaktivieren
Wir deaktivieren Avahi-Dienste auf Node1 und Node2.
1 2 3 4 |
#systemctl disable avahi-daemon.service #systemctl stop avahi-daemon.service #systemctl disable avahi-daemon.socket #systemctl stop avahi-daemon.socket |
NTP-Konfiguration auf Oracle Linux
Wir erstellen unsere NTP-Konfiguration für Knoten 1 und Knoten 2 und starten den Dienst neu.
1 2 3 4 5 6 |
nano /etc/chrony.conf server 192.168.19.254 iburst timedatectl set-ntp true #systemctl restart chronyd.service #systemctl enable chronyd.service |
Hinweis: Der Oracle Grid and Database Installer hat uns gesagt, dass wir den ntp Daemon installieren sollten, der in der Oracle Linux 8 Distribution nicht mehr verfügbar ist. Wir können die Nachricht verwerfen, Oracle läuft gut mit dem chrony Daemon.
Installieren von Paketen
Wir installieren unsere Pakete, die für Installationen erforderlich sind. Das Vorinstallationspaket erstellt automatisch prioritäre Benutzer für uns. Wir führen es für Node1 und Node2 aus.
1 2 3 4 |
# yum install oracle-database-preinstall-19c # yum install oracleasm-support # reboot |
Festlegen von Ressourceneinschränkungen
Auf beiden Knoten.
vi /etc/security/limits.conf
1 2 3 4 |
grid soft nofile 1024 grid hard nofile 65536 grid soft nproc 2047 grid hard nproc 16384 grid soft stack 10240 grid hard stack 32768 grid soft memlock unlimited grid hard memlock unlimited oracle soft nofile 1024 oracle hard nofile 65536 oracle soft nproc 2047 oracle hard nproc 16384 oracle soft stack 10240 oracle hard stack 32768 oracle soft memlock unlimited oracle hard memlock unlimited [root@primary01 ~]# sysctl -p |
Erstellen von Benutzern
Ich erstelle die folgenden Benutzer auf Node1 und Node2 und weise sie Gruppen zu.
1 2 3 4 5 6 7 |
# groupadd -g 54333 asmdba # groupadd -g 54334 asmoper # groupadd -g 54335 asmadmin # useradd -m -u 54341 -g oinstall -G dba,asmadmin,asmdba,asmoper -d /home/grid -s /bin/bash grid # usermod -a -G asmdba oracle # passwd oracle # passwd grid |
Ich erstelle die folgenden Ordner auf Node1 und Node2 und konfiguriere die zugehörigen Rechte.
1 2 3 4 5 6 |
mkdir -p /u01/app/grid/19.3.0/gridhome_1 mkdir -p /u01/app/grid/gridbase/ mkdir -p /u01/app/oracle/database/19.3.0/dbhome_1 chown -R oracle.oinstall /u01/ chown -R grid.oinstall /u01/app/grid chmod -R 775 /u01/ |
Jetzt werden wir unsere Profildefinitionen vornehmen. Dieser Vorgang wird erneut für Node1 und Node2 erfolgen.
Ich mache die . bash_profile Definitionen für den "Oracle"-Benutzer auf Knoten 1.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# nano /home/oracle/.bash_profile # Oracle Settings # Fake Oracle Linux 7. export CV_ASSUME_DISTID=OEL7.6 export TMP=/tmp export TMPDIR=$TMP export ORACLE_HOSTNAME=rac101.techlab.local export ORACLE_UNQNAME=RAC19C export ORACLE_BASE="/u01/app/oracle/database/19.3.0" export DB_HOME=$ORACLE_BASE/dbhome_1 export ORACLE_HOME=$DB_HOME export ORACLE_SID=RAC19C1 export ORACLE_TERM=xterm export PATH=/usr/sbin:/usr/local/bin:$PATH export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib |
Ich mache die . bash_profile Definitionen für den "Grid"-Benutzer auf Knoten 1.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# nano /home/grid/.bash_profile # Grid Settings export TMP=/tmp export TMPDIR=$TMP export ORACLE_HOSTNAME=rac101.techlab.local export ORACLE_BASE=/u01/app/grid/gridbase/ export ORACLE_HOME=“/u01/app/grid/19.3.0/gridhome_1“ export GRID_BASE=/u01/app/grid/gridbase/ export GRID_HOME=“/u01/app/grid/19.3.0/gridhome_1“ export ORACLE_SID=+ASM1 export ORACLE_TERM=xterm export PATH=/usr/sbin:/usr/local/bin:$PATH export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib export CV_ASSUME_DISTID=OEL8.1 |
Ich mache meine . bash_profile Definitionen für den "Oracle"-Benutzer auf Node2.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#nano /home/oracle/.bash_profile # Fake Oracle Linux 7. export CV_ASSUME_DISTID=OEL7.6 export TMP=/tmp export TMPDIR=$TMP export ORACLE_HOSTNAME=rac102.techlab.local export ORACLE_UNQNAME=RAC19C export ORACLE_BASE="/u01/app/oracle/database/19.3.0" export DB_HOME=$ORACLE_BASE/dbhome_1 export ORACLE_HOME=$DB_HOME export ORACLE_SID=RAC19C2 export ORACLE_TERM=xterm export PATH=/usr/sbin:/usr/local/bin:$PATH export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib |
Ich mache die . bash_profile Definitionen für den „Grid“-Benutzer auf Knoten 2.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# nano /home/grid/.bash_profile # Grid Settings export CV_ASSUME_DISTID=OEL8.1 export TMP=/tmp export TMPDIR=$TMP export ORACLE_HOSTNAME=rac102.techlab.local export ORACLE_BASE=/u01/app/grid/gridbase/ export ORACLE_HOME=“/u01/app/grid/19.3.0/gridhome_1“ export GRID_BASE=/u01/app/grid/gridbase/ export GRID_HOME=“/u01/app/grid/19.3.0/gridhome_1“ export ORACLE_SID=+ASM2 export ORACLE_TERM=xterm export PATH=/usr/sbin:/usr/local/bin:$PATH export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib export CV_ASSUME_DISTID=OEL8.1 |
Wir fügen die folgenden Informationen zur Hostdatei Node1 und Node2 hinzu.
1 2 3 4 5 6 7 8 9 10 11 |
# nano /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 #private ips rac101 192.168.2.118 rac101-priv.techlab.local rac101-priv 192.168.2.119 rac102-priv.techlab.local rac102-priv #public ips rac101 192.168.19.118 rac101.techlab.local rac101 192.168.19.119 rac102.techlab.local rac102 #vips rac101 192.168.19.120 rac101-vip.techlab.local rac101-vip 192.168.19.121 rac102-vip.techlab.local rac102-vip #scan single cluster access node rac101 #192.168.19.122 RAC19C-SCAN.techlab.local RAC19C-SCAN #192.168.19.123 RAC19C-SCAN.techlab.local RAC19C-SCAN #192.168.19.124 RAC19C-SCAN.techlab.local RAC19C-SCAN 192.168.19.254 dns01.techlab.local dns01 |