11gR2 Grid Infrastruktur - Funktionstrennung & Aufgabenverteilung in älteren Datenbank Releases
von Sebastian Solbach, ORACLE Deutschland GmbH

Die 11gR2 Grid Infrastruktur ermöglicht eine saubere Trennung von Aufgaben des System- bzw. Storage-Administrators auf der einen Seite und der Datenbank Administratoren auf der anderen Seite. Dazu gehört im ersten Schritt das Anlegen unterschiedlicher Benutzer und Benutzergruppen, da dies die Grundlage jeder Funktionstrennung bei der Systemadministration ist.

Zwar gibt das Installationshandbuch genügend Informationen, wie solch eine Trennung in einer 11gR2 Umgebung vorzunehmen ist und wie dazu die Benutzer und Gruppen angelegt werden sollten. Allerdings fiel mir in Gesprächen mit Kunden auf, dass es gerade in Bezug auf diese Funktionstrennung immer wieder zu Missverständnissen kommt. Zusätzlich ergibt sich mit der 11gR2 Grid Infrastruktur noch eine andere Problematik, wenn auch auch ältere Datenbanken Versionen betrieben und deren Prozesse von der 11gR2 Grid Infrastruktur überwacht werden sollen: Die vorhergehenden Releases kannten die saubere Trennung der Verantwortlichkeiten, wie sie 11gR2 einführt noch nicht.

Diese Unklarheiten möchte ich mit diesem Tipp beseitigen und verwende hierzu eine Testumgebung, in der sowohl eine 11.2.0.1 Grid Infrastruktur, eine 11.2 Datenbank, eine 11.1 Datenbank und eine 10.2 Datenbank betrieben werden, jeweils mit unterschiedlichen Benutzergruppen respektive Berechtigungen für die unterschiedlichen Datenbank Versionen und die 11.2 Grid Infrastruktur.

Anmerkung: Bilder zum Tipp werden sichtbar, indem man mit der Maus über das Brillen Icon fährt.


Um das Bild wieder zu verkleinern, auf das Bild klicken.

Benutzer & Gruppen

Folgende Gruppen und Gruppen-IDs (GID) werden in der Testumgebung für die 11gR2 Grid Infrastruktur verwendet (kursiv dargestellte Gruppen sind optional):
Bereich Gruppe GID Zugeordnete Benutzer Bedeutung
Software Installation oinstall 501 grid
oracle
oracle11
oracle10
Alle Benutzer, die Software installieren, müssen diese Gruppe als Primärgruppe besitzen. Dies ist insbesondere für das gemeinsam verwendete Oracle Inventory notwendig.
Grid Administration asmadmin 502 grid Benutzer, die zur ASM Admin Gruppe gehören, melden sich als SYSASM an der ASM Instanz an und dürfen somit Diskgruppen verwalten. Dies ist auch die Gruppe, der die ASM Platten/Devices zugeordnet sein müssen
ASM DBA asmdba 504 grid
oracle
oracle11
oracle10
ASM DBA Benutzer melden sich als SYSDBA an der ASM Instanz an. Dies ist notwendig, damit die Datenbank Instanz (die sich ebenfalls als SYSDBA anmeldet) Datenfiles in ASM anlegen kann. Im Gegensatz zum DBA bei einer Datenbank können diese Benutzer ASM nicht stoppen oder starten. Ebenfalls können keine Diskgruppen verwaltet werden. SYSASM und SYSDBA Gruppen werden in das oracle Executable der Grid Infrastruktur gelinkt.
ASM Operator asmoper 505 grid Die optionalen ASM Operators sind Benutzer, die ASM stoppen und starten dürfen. Diese Gruppe ist nur notwendig, falls man einigen DBAs auch das Stoppen und Starten von ASM erlauben möchte. Liegen allerdings OCR und Voting Disks in ASM, so kann ASM nur vom Root User durch das Stoppen des Clusters angehalten werden.


Um eine saubere Trennung der Datenbank Administratoren von den 11gR2 Grid Infrastruktur Administratoren zu erreichen, sollte zumindest ein eigener User und eine eigene Gruppe für die Datenbank Administration vorhanden sein. In meinem Beispiel gehe ich sogar noch weiter und teile den einzelnen Datenbank Versionen eigene Benutzer und eigene Gruppen zu:
Bereich Oracle 11.2 Oracle 11.1 Oracle 10.2 Bedeutung
Gruppe GID Zugeordnete Benutzer Gruppe GID Zugeordnete Benutzer Gruppe GID Zugeordnete Benutzer
DB Admin dba 500 oracle dba11 506 oracle11 dba10 508 oracle10 Benutzer der DBA Gruppe melden sich als SYSDBA an der jeweiligen Oracle Datenbank an. Die SYSDBA Gruppe wird in das RDBMS oracle Executable gelinkt.
DB Oper oper 503 oracle oper11 507 oracle11 oper10 509 oracle10 Die optionalen Datenbank Operator sind Benutzer, die die Datenbank starten und stoppen dürfen.

In folgender Tabelle ist die Zuordnung der Benutzer und User-IDs (UID) zu den Gruppen aufgelistet:
Benutzer UID Gruppen Verantwortung
grid 499 oinstall,asmadmin,asmdba,asmoper Installation & Verwaltung der Grid Infrastruktur und ASM - inklusive Anlegen von Diskgruppen.
oracle 500 oinstall,dba,oper,asmdba Installation und Verwaltung der Oracle 11.2 Datenbank.
oracle11 501 oinstall,dba11,oper11,asmdba Installation und Verwaltung der Oracle 11.1 Datenbank.
oracle10 502 oinstall,dba10,oper10,asmdba Installation und Verwaltung der Oracle 10.2 Datenbank.

Anlegen der Benutzer & Gruppen

Das folgende Skript zeigt das Anlegen der Gruppen und Benutzer durch den User root:

# groupadd -g 500 dba
# groupadd -g 501 oinstall
# groupadd -g 502 asm

# groupadd -g 503 oper
# groupadd -g 504 asmdba
# groupadd -g 505 asmoper

# groupadd -g 506 dba11
# groupadd -g 507 oper11
# groupadd -g 508 dba10
# groupadd -g 509 oper10

# useradd -u 499 -g oinstall -G asm,asmdba,asmoper grid
# useradd -u 500 -g oinstall -G dba,oper,asmdba oracle
# useradd -u 501 -g oinstall -G dba11,oper11,asmdba oracle11
# useradd -u 502 -g oinstall -G dba10,oper10,asmdba oracle10              
Sollten die Benutzer bereits existieren (wie z.B. nach der Installation von oracle-validated), wird statt des Befehls useradd der Befehl usermod verwendet.

Anlegen der Verzeichnisse vor der Installation

Es empfiehlt sich, auf allen Rechnerknoten die Installationsverzeichnisse mit den entsprechenden Berechtigungen im Vorfeld zu vergeben. Ebenfalls hat die Erfahrung in Umgebungen mit Funktionstrennung gezeigt, dass es entgegen der Best Practices von Oracle - nur ein Oracle Base Verzeichnis für alle Oracle Installationen zu verwenden - Sinn macht ein Oracle Base pro Benutzergruppe zu verwenden. Dies liegt insbesondere daran, dass die Logverzeichnisse des DIAG Verzeichnisses den unterschiedlichen Benutzern zugeordnet sind, und somit ein DBA User Berechtigungsfehler beim Zugriff auf die ASM Logs bekommt.

Oracle Inventory Verzeichnis
# chown grid:oinstall /opt/oraInventory
# chmod 775 /opt/oraInventory
Grid Infrastruktur Verzeichnis + Grid Infrastruktur Oracle Base
# chown grid:oinstall /opt/grid
# chown grid:oinstall /opt/oracle
# chmod 775 /opt/grid
# chmod 775 /opt/oracle
Oracle 11gR2 RDBMS + 11gR2 Oracle Base
# chown oracle:oinstall /opt/oracle/11.2
# chown oracle:oinstall /opt/oracle/11.2/product/11.2.0
# chmod 775 /opt/oracle/11.2
# chmod 775 /opt/oracle/11.2/product/11.2.0
Oracle 11gR1 RDBMS + 11gR1 Oracle Base
# chown oracle11:oinstall /opt/oracle/11.1
# chown oracle11:oinstall /opt/oracle/11.1/product/11.1.0
# chmod 775 /opt/oracle/11.1
# chmod 775 /opt/oracle/11.1/product/11.1.0
Oracle 10gR2 RDBMS + Oracle 10gR2 Base
# chown oracle10:oinstall /opt/oracle/10.2
# chown oracle10:oinstall /opt/oracle/10.2/product/10.2.0
# chmod 775 /opt/oracle/10.2
# chmod 775 /opt/oracle/10.2/product/10.2.0
Anmerkung: Sollte für alle Oracle Homes dasselbe Oracle Base (z.B. /opt/oracle) verwendet werden, gibt es Zugriffsprobleme auf einige der Unterverzeichnisse, insbesondere beim Zugriff auf das Verzeichnis des cfgtoollogs und beim Zugriff auf das Verzeichniss diag. Beim Aufruf eines Assistenten aus dem ersten Oracle Home (normalerweise das Grid Home beim Aufruf des ASMCAs und NETCAs) wird automatisch das cfgtoollogs Verzeichnis angelegt - beim Schreiben von Logs das diag Verzeichnis. Dadurch wird als Eigner/Gruppe beider Verzeichnisse grid:asmadmin mir der Berechtigung 750 eingetragen. Nachfolgende Prozesse aus den anderen Homes können somit nicht in diese Verzeichnisse schreiben.

Deswegen sollte besonder nach der Installation und in periodischen Abständen die Berechtigungen mittels chmod 770 -R und chgrp oinstall -R auf /opt/oracle/cfgtoollogs und /opt/oracle/diag angepasst werden.

Storage Berechtigungen & Installation

Die Berechtigung der Devices, die für ASM verwendet werden, sollten für eine 11gR2 Grid Installation dem Benutzer grid und der Gruppe asmadmin gehören. Im Beispiel sind sdc1, sdd1 und sde1 als Devices für ASM vorgesehen:

# ll /dev/sd*
brw-r----- 1 root disk     202,  0 May  5 14:44 /dev/sda
brw-r----- 1 root disk     202,  1 May  5 14:44 /dev/sda1
brw-r----- 1 root disk     202,  2 May  5 14:44 /dev/sda2
brw-r----- 1 root disk     202,  3 May  5 14:44 /dev/sda3
brw-r----- 1 root disk     202, 16 May  5 14:44 /dev/sdb
brw-r----- 1 root disk     202, 17 May  5 14:44 /dev/sdb1
brw-r----- 1 root disk     202, 32 May  5 14:44 /dev/sdc
brw-r----- 1 grid asmadmin 202, 33 May  5 14:45 /dev/sdc1
brw-r----- 1 root disk     202, 48 May  5 14:44 /dev/sdd
brw-rw---- 1 grid asmadmin 202, 49 May 20 12:18 /dev/sdd1
brw-r----- 1 root disk     202, 64 May  5 14:44 /dev/sde
brw-rw---- 1 grid asmadmin 202, 65 May 20 11:06 /dev/sde1
...
Alternativ könnten die Devices auch der Gruppe dba zugeordnet sein, allerdings widerspricht dies dem Berechtigungskonzept, und wird nur in Ausnahmefällen gesetzt (siehe hierzu auch Abschnitt über die Berechtigungen des RDBMS Oracle Executables).

Wie diese Berechtigungen beim Booten vergeben werden können, können Sie in folgendem Tipp nachlesen.

Das Oracle Inventory muss der oinstall Gruppe gehören:

Bei der Installation der Grid Infrastruktur wählt man nun für die Berechtigung der ASM Instanz folgende Werte aus:

  • ASM Database Administrator (OSDBA) Group: asmdba
  • ASM Instance Administrator Operator (OSOPER) Group: asmoper oder falls nicht verfügbar asmdba
  • ASM Instance Administrator (OSASM) Group: asmadmin
Für die Datenbank Installation sind die Berechtigungen wie folgt zu wählen:

  • Database Administrator (OSDBA) Group: dba
  • Database Operator (OSOPER) Group: oper oder falls nicht verfügbar dba

Berechtigung des RDBMS Oracle Executables

Normalerweise gehört das Oracle Executable ($ORACLE_HOME/bin/oracle) zu der oinstall Gruppe, d.h. der Gruppe, die die Oracle Software installiert hat. Die DBA Berechtigungen sind in dieses Executable hineingelinkt:

$ ll $ORACLE_HOME/bin/oracle
-rwsr-s--x 1 oracle oinstall 159110992 Apr  8 17:55 /opt/oracle/product/11.2.0/db/bin/oracle
Sollte allerdings die ASM Administration durch einen anderen Benutzer durchgeführt werden, so muss einiges an dem oracle Executable der RDBMS Software geändert werden. Dies geschieht bei 11.2.0 implizit, wenn die Datenbank über den Database Configuration Assistant (DBCA) angelegt wird. Dieser ruft automatisch das setasmgidwrap aus dem Grid Home aus und konfiguriert so das oracle Executable um:
$ /opt/grid/bin/setasmgidwrap o=/opt/oracle/product/11.2.0/db/bin/oracle
Der Aufruf des setasmgidwrap ist auch in den Skripten enthalten, die der DBCA optional erstellen kann. Wird die Datenbank allerdings komplett manuell erstellt, sollte darauf geachtet werden, dass setasmgidwrap manuell aufgerufen wird. Ob dieses Kommando ausgeführt wurde erkennt man an den Berechtigungen des oracle Executables:
$ ll $ORACLE_HOME/bin/oracle
-r-sr-s--x 1 oracle asmadmin 159110992 May  1 12:29 /opt/oracle/product/11.2.0/db/bin/oracle
Der DBCA von 10gR2 und 11gR1 kennt das setasmgidwrap Utility allerdings nicht. Daher muss bei älteren Datenbanken setasmgidwrap immer manuell aufgerufen werden. Allerdings erkennt das setasmgidwrap in der default 11.2.0.1 Installation die älteren oracle Executables noch nicht. Siehe dazu auch den nachfolgenden Abschnitt.

Anmerkung zur Installation älterer Datenbank Releases zusammen mit 11gR2 Infrastruktur

Um ältere Datenbank Releases auf einer 11gR2 Grid Infrastruktur (11.2.0.1) zu betreiben, sind einige Voraussetzungen notwendig. Da diese nicht automatisch erfüllt sind, müssen dises manuell angepasst werden:

  • Die Rechnerknoten müssen mit crsctl pin css -n <nodname> gepinnt werden
  • OPatch Utilities sollten auf der letzten Version sein
  • Linux Grid Infrastruktur sollte 11.2.0.1.1 sein (Grid PSU), dies ist auf anderen Plattformen nicht notwendig
  • setasmgidwrap muss in einer neueren Version vorliegen
  • SRVCTL des Datenbank Homes benötigt einen Patch um mit 11.2 Grid Infrastruktur kompatibel zu sein
  • Der remote_listener Parameter der Datenbank bzw. dessen TNSNAMES.ORA Eintrag sollte nicht mehr die VIP Adressen der Knoten beinhalten, sondern die IP Adressen des SCAN Listerner.
    LISTENERS_ORA11 =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 10.165.244.131)(PORT = 1521))
        (ADDRESS = (PROTOCOL = TCP)(HOST = 10.165.244.132)(PORT = 1521))
        (ADDRESS = (PROTOCOL = TCP)(HOST = 10.165.244.133)(PORT = 1521))
      )
    
Die wichtigsten Patches sind dabei in der MySupport Note 948456.1: "Pre 11.2 Database Issues in 11gR2 Grid Infrastructure Environment" zusammengetragen. Für die ganz Eiligen, habe ich die Patches und deren "Schnell-Installationsanleitung" auf der zweiten Seite dieses Tipps dargestellt.

Nützliche Links und Referenzen

  • Oracle Grid Infrastructure Installation Guide: 2.6 Creating Groups, Users and Paths for Oracle Grid Infrastructure
  • Oracle Grid Infrastructure Installation Guide: 5.3 Using Older Oracle Database Versions with Grid Infrastructure
  • Clusterware Installation Linux (OEL5, RHEL5): Multipathing und UDEV
  • MySupport Note 948456.1: "Pre 11.2 Database Issues in 11gR2 Grid Infrastructure Environment"
  • Zurück zur Community-Seite