Best Practices für die Oracle auf Bare-Metal-Lösung

Wenn Sie Oracle-Datenbanken auf der Bare-Metal-Lösung implementieren, möchten Sie Ihre Umgebung vermutlich möglichst einfach und mit so wenigen Problemen wie möglich aufzurufen. Damit Sie dieses Ziel erreichen, haben wir Feedback von Kunden, unseren Lösungsarchitekten und Supportmitarbeitern gesammelt, die Oracle-Datenbanken auf der Bare-Metal-Lösung implementiert haben. Die folgenden Informationen sind Empfehlungen von diesen Experten, damit Sie Ihre eigene Oracle-Datenbankumgebung auf Bare-Metal-Lösung so erfolgreich wie möglich einrichten können.

Softwarebereitstellung

Für die erfolgreiche Bereitstellung von Oracle-Software empfehlen wir die Verwendung des Bare-Metal-Lösungs-Toolkits. Das Toolkit bietet mehrere Ansible- und JSON-Skripts, die Ihnen bei der Installation der Oracle-Software auf Bare-Metal-Lösung helfen. Weitere Informationen zum Bare-Metal-Lösungs-Toolkit und zum Installieren von Oracle-Datenbanken in einer Bare-Metal-Lösung-Umgebung finden Sie im Nutzerhandbuch für das Toolkit.

Betriebssystem

Wenn Sie Ihr Betriebssystem auf einem Bare-Metal-Lösungsserver einrichten, sollten Sie die folgenden Aktionen ausführen.

NTP-Server validieren

Alle Bare-Metal-Lösungsserver sollten mit einer Zeitquelle synchronisiert werden. Wählen Sie eine physische oder virtuelle NTP-Server-Option aus, die Ihren Anforderungen am besten entspricht.

Wenn Ihre Server NTP für die Zeitsynchronisierung verwenden, können Sie mit dem Befehl timedatectl oder ntpstat prüfen, ob der Server mit einer Zeitquelle synchronisiert wird. Die folgenden Beispiele zeigen die Ausgabe dieser Befehle für einen Server, der erfolgreich synchronisiert wird:

timedatectl show -p NTPSynchronized
NTPSynchronized=yes
synchronised to NTP server (216.239.35.8) at stratum 3
   time correct to within 49 ms
   polling server every 1024 s

CPU-Anzahl und Arbeitsspeicherdetails von Oracle-VM ansehen

Mit dem Befehl xm info können Sie Informationen zu einem Oracle-VM-Host (OVM) aufrufen, einschließlich CPU- und Arbeitsspeicherdetails. Beispiel:

/usr/sbin/xm info

Weitere Informationen finden Sie in der Oracle-Dokumentation zum Ansehen von Hostinformationen.

/etc/fstab-Einstellungen auf die richtigen Bereitstellungsoptionen prüfen

Wenn Sie verhindern möchten, dass der Bootvorgang angehalten wird, konfigurieren Sie immer die von Ihnen erstellten Nicht-Root-Bereitstellungspunkte (z. B. /u01 und /u02) mit der Bereitstellungsoption nofail anstelle der Standardeinstellungen. In seltenen Fällen sind die zugrunde liegenden Speichergeräte möglicherweise nicht verfügbar, wenn ein Host neu gestartet wird. Mit der Bereitstellungsoption nofail kann der Bootvorgang fortgesetzt werden, wenn der Server die Speichergeräte nicht anzeigen kann.

Das folgende Beispiel zeigt die empfohlenen Einstellungen für die Bereitstellungspunkte /u01 und /u02 in der Datei /etc/fstab:

/dev/mapper/3600a098038314352513f4f765339624c1 /u01 xfs nofail 0 0
/dev/mapper/3600a374927591837194d4j371563816c1 /u02 xfs nofail 0 0

Sie können die Bereitstellungsoption von defaults in nofail ändern, ohne dass sich dies auf ein Betriebssystem auswirkt. Um die neuen Einstellungen anzuwenden, müssen Sie jedoch Ihren Server neu starten.

Einstellungen des Shell-Limits prüfen

Das Bare-Metal-Lösungs-Toolkit konfiguriert Shell-Limits, um Oracle RAC zu konfigurieren. Sie können diese Validierung überspringen, wenn Sie das Bare-Metal-Lösungs-Toolkit verwendet und die Shell-Limits nicht geändert haben. Shell-Limits müssen für alle Betriebssystemkonten festgelegt werden, die eine Oracle-Software haben, einschließlich Grid Infrastructure. Oracle empfiehlt für Linux die folgenden Einstellungen:

Limit Weicher Limitwert Harter Limitwert
Dateien öffnen 1.024 65.536
Maximale Nutzerprozesse 16.384 16.384
Stackgröße 10240 32.768
Maximaler gesperrter Arbeitsspeicher Mindestens 90% des Arbeitsspeichers Mindestens 90% des Arbeitsspeichers

Prüfen Sie mit dem Befehl ulimit die weichen und harten Shell-Limits. Geben Sie beispielsweise diesen Befehl ein, um das weiche Shell-Limit zu prüfen:

ulimit -S -n -u -s -l

Die folgende Ausgabe zeigt die korrekten Soft-Shell-Einstellungen für ein System mit 384 GB Arbeitsspeicher:

open files                      (-n) 1024
max user processes              (-u) 16384
stack size              (kbytes, -s) 10240
max locked memory       (kbytes, -l) 355263678

Prüfen Sie mit dem folgenden Befehl die harten Shell-Limits:

ulimit -H -n -u -s -l

Die folgende Ausgabe zeigt die korrekten Hartschalenlimits für ein System mit 384 GB Arbeitsspeicher:

open files                      (-n) 65536
max user processes              (-u) 16384
stack size              (kbytes, -s) 32768
max locked memory       (kbytes, -l) 355263678

Wenn eines der Shell-Limits nicht korrekt festgelegt ist, ändern Sie die Einträge in der Datei /etc/security/limits.conf wie im folgenden Beispiel gezeigt:

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 355263678
oracle  hard  memlock 355263678

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 355263678
grid    hard  memlock 355263678
grep MemTotal /proc/meminfo
MemTotal:       16092952 kB

Änderung von Multipath-Einstellungen vermeiden

Wenn Sie die Einstellungen für den Mehrpfad-Modus ändern, konfigurieren Sie das Attribut path_grouping_policy nicht, wenn Sie multipath.conf verwenden, um Aliasnamen für Geräte zu erstellen. Eine solche Änderung überschreibt die im Definitionsabschnitt devices festgelegte Standardrichtlinie.

Im Normalbetrieb sollte der Befehl multipath -ll einen Status wie im folgenden Beispiel anzeigen. Jedes Gerät enthält zwei aktive Pfade, die sich im Bereitschaftszustand befinden.

3600a0980383143524f2b50476d59554e dm-7 NETAPP  ,LUN C-Mode
size=xxxG features='4 queue_if_no_path pg_init_retries 50 retain_attached_hw_handle' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=50 status=active
| |- 14:0:3:2 sdf                8:80   active ready running
| `- 16:0:5:2 sdv                65:80  active ready running
`-+- policy='service-time 0' prio=10 status=enabled
  |- 14:0:2:2 sdc                8:32   active ready running
  `- 16:0:3:2 sdq                65:0   active ready running

Jumbo Frames verwenden

Damit die Fragmentierung von Paketen bei der Übertragung von einem Server zu einem anderen in einer RAC-Umgebung vermieden wird, empfiehlt Oracle, die Serverschnittstellen mit riesigen Frames zu konfigurieren. Jumbo-Frames haben eine MTU-Größe von 9.000 Byte und sind groß genug, um Oracle-Datenbankblockgrößen von 8.192 Byte zu unterstützen.

So konfigurieren Sie Jumbo-Frames auf Bare-Metal-Lösungsservern für Oracle RAC:

  1. Rufen Sie die Einstellungen Ihres privaten Netzwerks Ihrer Bare-Metal-Lösung auf, um zu prüfen, ob Jumbo-Frames konfiguriert wurden:

    gcloud bms networks describe NETWORK_NAME --project=PROJECT_ID --region=REGION | grep jumboFramesEnabled
    

    Beispielausgabe:

    jumboFramesEnabled: true
    
  2. Ermitteln Sie die Netzwerkschnittstellen und ihre mtu-Größe:

    ip link show | grep mtu
    

    Beispielausgabe:

    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    2: enp55s0f1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000
    3: enp55s0f2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000
    4: enp55s0f3: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000
    5: enp17s0f0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP mode DEFAULT group default qlen 1000
    6: enp17s0f1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond1 state UP mode DEFAULT group default qlen 1000
    7: enp173s0f0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP mode DEFAULT group default qlen 1000
    8: enp173s0f1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond1 state UP mode DEFAULT group default qlen 1000
    9: bond1: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    10: bond1.117@bond1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    11: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    12: bond0.118@bond0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    13: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default qlen 1000
    14: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN mode DEFAULT group default qlen 1000
    
  3. Fügen Sie mithilfe von Berechtigungen auf Stammebene der Schnittstellenkonfigurationsdatei für alle Server in der Umgebung der Bare-Metal-Lösung, die Jumbo-Frames verwenden, MTU=9000 hinzu. Sie finden die Datei unter /etc/sysconfig/network-scripts/ifcfg-interface_name.

    Beispielausgabe:

    BONDING_OPTS="lacp_rate=1 miimon=100 mode=802.3ad xmit_hash_policy=1"
    TYPE=Bond
    BONDING_MASTER=yes
    PROXY_METHOD=none
    BROWSER_ONLY=no
    DEFROUTE=yes
    IPV4_FAILURE_FATAL=no
    IPV6INIT=no
    IPV6_AUTOCONF=yes
    IPV6_DEFROUTE=yes
    IPV6_FAILURE_FATAL=no
    IPV6_ADDR_GEN_MODE=stable-privacy
    NAME=bond1
    UUID=0e7da685-64bf-44f3-812f-9846d747a801
    DEVICE=bond1
    ONBOOT=yes
    AUTOCONNECT_SLAVES=yes
    MTU=9000
    
  4. Starten Sie die Netzwerkdienste neu, damit die Änderungen wirksam werden:

    service network restart
    
  5. Führen Sie den Befehl ping aus, um die neue MTU-Konfiguration zu testen:

     ping -c 2 -M do -s 8972 svr001
     PING svr001 (172.16.1.10) 8972(9000) bytes of data.
     8980 bytes from svr001 (172.16.1.10): icmp_seq=1 ttl=64 time=0.153 ms
     8980 bytes from svr001 (172.16.1.10): icmp_seq=2 ttl=64 time=0.151 ms
    
    --- svr001 ping statistics ---
    2 packets transmitted, 2 received, 0% packet loss, time 1001ms
    rtt min/avg/max/mdev = 0.151/0.152/0.153/0.001 ms
    

Automatische Speicherverwaltung von Oracle

Unser Cloud Customer Care-Team und mehrere Kunden der Bare-Metal-Lösung haben Oracle Automatische Speicherverwaltung (ASM) zu ihren Bare-Metal-Lösungsumgebungen hinzugefügt. Aufgrund ihrer gesammelten Erfahrung und Erfahrung haben wir die folgende Liste mit Best Practices zusammengestellt, die Ihnen dabei helfen sollen, mit der Installation einer eigenen ASM-Laufwerksgruppe erfolgreich zu sein. Unser Ziel ist es, Sie dabei zu unterstützen, die beste Speicherleistung für Ihre Bare-Metal-Lösungsumgebung zu erzielen.

Einheitliche LUN-Größe verwenden

Die ausgewählte LUN-Größe sollte für die Wachstumseinheit repräsentativ sein. ASM funktioniert am besten mit LUNs, die dieselbe Größe und ähnliche Leistungseigenschaften haben. Für sehr große Datenbanken empfehlen wir eine LUN-Größe von 2 TB, um die Leistung zu optimieren.

Maximal zwei ASM-Laufwerksgruppen erstellen

Sie sollten Datendateien und eine Kopie der REDO-Logs an eine einzelne DATA-Laufwerksgruppe senden. Optional können Sie eine zweite FRA-Laufwerksgruppe erstellen, um Sicherungen auf dem Laufwerk und Archivlogs zu speichern. Wenn Sie REDO-Logs in sehr widerstandsfähigem Speicher speichern, benötigen Sie keine zwei Kopien.

REDO Log-Schreibvorgänge sind empfindlich auf Latenz. Deshalb sollten Sie REDO-Logs nur dann multiplizieren, wenn das Leistungsprofil der Laufwerkgruppe FRA mit dem Leistungsprofil der Laufwerkgruppe DATA übereinstimmt.

ASM-Laufwerksgruppen über alle LUNs in allen Volumes entfernen

Wenn Sie ASM-Laufwerksgruppen erstellen, entfernen Sie sie aus allen LUNs aller Volumes. Wenn Ihre LUNs zu einem einzelnen Volume gehören, müssen Sie beim Erstellen einer Laufwerksgruppe alle LUNs in das Volume aufnehmen. Wenn ein Volume beispielsweise X Anzahl von LUNs hat, sollten Sie beim Erstellen der Laufwerksgruppe alle X LUNs verwenden.

Diese Anleitung gilt auch für die Verwendung mehrerer Volumes, da wir Limits für die Funktion „Dienstqualität“ festlegen. Wenn Sie mehrere Volumes für einen höheren Durchsatz (> 900 Mbit/s) verwenden, müssen Sie beim Erstellen der Laufwerksgruppe alle LUNs aus jedem Volume einschließen, um die erforderliche Leistung zu erzielen.

LUNs und Volumes mit denselben Leistungseigenschaften in derselben Laufwerksgruppe verwenden

Wenn Sie mehrere Volumes zur Optimierung des Durchsatzes verwenden, verwenden Sie beim Erstellen von ASM-Laufwerksgruppen die gleiche Volume-Größe und dieselben Leistungsmerkmale.

Mischen Sie LUNs nicht mit Volumes, die unterschiedliche Leistungseigenschaften haben. Wenn Sie LUNs und Volumes mit unterschiedlichen Leistungsprofilen in dieselbe Laufwerksgruppe aufnehmen, haben Laufwerke, die E/A-Vorgänge ausführen, eine wesentlich geringere Leistungsobergrenze und können zu Latenzspitzen führen.

Wenn Sie beispielsweise eine ASM-Laufwerksgruppe mit 2 ungleichmäßigen Volumes (1 x 16 TiB und 1 x 5 TiB) erstellen, können die E/A-Vorgänge, die von den Laufwerken im 5-TB-Volume ausgeführt werden, zu erhöhter Latenz führen. Das Volumen von 5 TiB hat einen viel niedrigeren Durchsatz und eine maximale Anzahl von EPS, sodass es den Drosselungsgrad lange vor dem Drosselungsniveau für das 16-TiB-Volume erreichen würde.

Speicher-Volumes nicht auf mehrere RAC-Cluster teilen

Geben Sie für jeden RAC-Cluster ein eindeutiges Speicher-Volume an. Verwenden Sie nicht dasselbe Speicher-Volume für mehrere RAC-Cluster. Da Speichergeräte die Funktion „Dienstqualität“ auf Lautstärkeebene anwenden, wird so die Wahrscheinlichkeit minimiert, dass laute Nachbarn um einen einzelnen IOPS-Pool und Durchsatz konkurrieren.

Wenn ein einzelnes Volume beispielsweise 8 LUNs hat, weisen Sie einige LUNs keinem RAC-Datenbankcluster und die verbleibenden LUNs einem anderen RAC-Datenbankcluster zu. Stattdessen müssen Sie zwei separate Speicher-Volumes bereitstellen und jedes Volume einem separaten RAC-Cluster pro Volume zuweisen.

Erforderliche IOPS und Durchsatzkapazität kennen, bevor Sie ASM-Laufwerksgruppen erstellen

Achten Sie auf die Leistungsspitzen für Ihre lokale Umgebung. Erstellen Sie AWR-Berichte während der Spitzenarbeitslaststunden, um die Spitzen-IOPS und -Durchsatzwerte Ihres Systems zu erfassen. Sie können auch unser Oracle Database Assessment-Tool verwenden, um die Spitzenleistung zu ermitteln.

Wenn Sie Ihre lokalen Leistungszahlen zur Hand haben, prüfen Sie unsere Speicherleistungstabelle für Bare-Metal-Lösung, um den Speicherplatz zu berechnen, den Sie Ihren ASM-Laufwerksgruppen zuweisen müssen, um die erforderliche Leistung zu erzielen. Wenn Sie Anforderungen an den erweiterten Durchsatz haben (über 768 Mbit/s), können Sie mehrere Volumes erstellen und die ASM-Laufwerksgruppe für alle LUNs und alle Volumes entfernen.

Multipath-Konfiguration unverändert lassen

Sie sollten den Standard-group_pathing_policy in der /etc/multipath.conf-Datei nicht ändern. Sie sollten immer den Standardwert group_pathing_policy=group_by_prio verwenden, um die Bereinigung von RAC-Knoten bei Speicherpfadfehlern zu vermeiden.

Weitere Informationen dazu, wie Sie die Konfiguration mit mehreren Pfaden beibehalten, finden Sie unter Einstellungen für Multipath-Änderungen vermeiden.

Wichtige Einstellungen für ASM konfigurieren

Wenn Sie Oracle Grid Infrastructure 12.1.0.2 oder höher unter Linux verwenden, richten Sie ASM mit ASMFD oder UDEV ein.

Verwenden Sie für frühere Versionen von Oracle Grid Infrastructure ASMLib.

  • Wenn Sie Oracle ASM nicht daran hindern möchten, Ihr ASM-Gerät als einzelnen Pfad auszuwählen, legen Sie die Scanreihenfolge so fest:

    ORACLEASM_SCANORDER="dm"
    ORACLEASM_SCANEXCLUDE="sd"
    

    Wir benötigen diese Einstellung, da die Speicherumgebung der Bare-Metal-Lösung DM-Geräte verwendet, die Sie in /proc/partitions ansehen können.

  • Führen Sie den folgenden Befehl als Root-Nutzer aus, um zu prüfen, ob ASMLib für die Verwaltung Ihrer ASM-Laufwerke konfiguriert ist:

    /usr/sbin/oracleasm configure | grep SCAN
    

    Wenn Sie ASMLib verwenden, sieht die Ausgabe so aus:

    ORACLEASM_SCANBOOT=true
    ORACLEASM_SCANORDER="dm"
    ORACLEASM_SCANEXCLUDE="sd"
    ORACLEASM_SCAN_DIRECTORIES=""
    

ASM-Laufwerksgruppe mit externer Redundanz erstellen

Der von der Bare-Metal-Lösung bereitgestellte Speicher verwendet NETAPP RAID-DP. Dies ist eine Form von RAID 6, die Daten schützt, auch wenn zwei Laufwerke ausfallen. Daher empfehlen wir, für ASM die externe Redundanz zu verwenden.

Starten Sie die Server Ihrer Bare-Metal-Lösung nach der Erstellung des ASM-Laufwerks neu

Nachdem Sie die ASM-Laufwerksgruppen erstellt haben, sollten Sie alle Bare-Metal-Lösungsserver im Cluster neu starten, damit sowohl die ASM-Instanz als auch die Laufwerksgruppen nach dem Neustart online sind. Mit diesem proaktiven Schritt können Sie Probleme vermeiden, die nach dem Erstellen des Datenbankclusters für die ASM-Laufwerksgruppe auftreten können.

Oracle ist eine eingetragene Marke von Oracle und/oder seinen Tochterunternehmen.