SUN Oracle grid ASM 11G installation
Oracle Database grid ASM 11g Release 2 Installation auf Solaris 10 (x86)
Für eine saubere Trennung von den Aufgaben des System- bzw. Storage-Administrators auf der einen Seite und der Datenbank Administratoren auf der anderen Seite, ist es notwendig unterschiedlicher Benutzer und Benutzergruppen anzulegen.
Quellen:
http://www.oracle.com/webfolder/technetwork/de/community/dbadmin/tipps/gridinfrastruktur_sod/index.html
http://www.idevelopment.info/data/Oracle/DBA_tips/Automatic_Storage_Management/ASM_10.shtml
http://www.pipperr.de/dokuwiki/doku.php?id=dba:install_solaris_10_x86_11g
Gruppen und Gruppen-IDs (GID)
Bereich Gruppe Zugeordnete Benutzer Bedeutung Software Installation oinstall grid
oracleAlle Benutzer, die Software installieren, müssen dieser Gruppe als Primärgruppe angehören. Dies ist insbesondere für das gemeinsam verwendete Oracle Inventory notwendig. Grid Administration
asmadmin
grid Benutzer, die zur dieser 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
grid
oracleASM 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 gelinktASM Operator asmoper grid Die 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 der ASM, so kann ASM nur vom Root User durch das Stoppen des Clusters angehalten werden. DB Admin dba oracle Benutzer der DBA Gruppe melden sich als SYSDBA an der jeweiligen Oracle Datenbank an. Zuordnung der Benutzer und User-IDs (UID) zu den Gruppen
Benutzer
Gruppen
Bereich grid
asmadmin,asmdba,oinstall
Installation, Verwaltung der Grid Infrastruktur und ASM und Anlegen von Diskgruppen.
oracle
dba,asmdba,oinstall
Installation und Verwaltung Datenbank
Create User / Group
Erstellen neuer Gruppen und Benutzer.
groupadd asmadmin
groupadd asmoper
groupadd asmdba
groupadd oinstall
# er wird davon ausgegangen, daß der User oracle bereits vorhanden ist
#useradd -g oinstall -G dba -d /home/oracle -s /usr/bin/bash -u 1001 oracle
usermod -G dba,asmdba oracle
useradd -G asmadmin,asmdba,asmoper -g oinstall -d /home/grid -s /usr/bin/bash -u 1002 grid
mkdir /home/grid
chown grid:asmadmin /home/grid
passwd -r files grid
test -f ~grid/.profile && cp ~grid/.profile ~grid/.profile.bak
echo "HISTSIZE=3000
export HISTSIZE
PATH=$PATH:/usr/openwin/bin
export PATH
unset LANG;
export sitename=`hostname`
PS1='[ \${LOGNAME}@\${sitename} SID=\${ORACLE_SID}: \$PWD ]
> ';export PS1
PS2='Befehl komplettieren! >: '
umask 022" > ~grid/.profile
Eine Platte erzeugen, für die Installation von Oracle Grid Infrastruktur
zpool create -m /applications/grid appl_grid c1t4d0
chown -R grid:asmdba /applications/grid
zfs list
NAME USED AVAIL REFER MOUNTPOINT
appl_grid 104K 2.94G 31K /applications/grid
oder erstellen Sie ein Verzeichnisse, in dem die Oracle-Software installiert werden soll. Die Größe muss größer als 4GB sein.
mkdir -p /applications/grid
chown -R grid:asmdba /applications/grid
Download Software
Download Sie die folgende Software.
Set Kernel Parameters
In äteren Versionen von Solaris wurden Kernelparameter durch Hinzufügen von Einträgen in der "/etc/system" gesetzt. Ein Neustart der Maschine war notwendig.
set semsys:seminfo_semmni=100
set semsys:seminfo_semmsl=256
set shmsys:shminfo_shmmax=4294967295
set shmsys:shminfo_shmmni=100
Der Oracle Installer erkennt diese Kernel Parameter, die mit dieser Methode gesetzt wurden, aber das ist eine veraltet Methode.
Die Parameter werden mit dem System Resource Controller (SRC) gesetzt.
projadd oracle
oracle::::project=oracle
Wenn Sie eine Standard-Installation durchgeführt haben, ist es wahrscheinlich, dass nur der Kernel-Parameter "max-shm-memory" geändert werden muss.
Den aktuellen Wert erhalten Sie mit folgenden Befehl. Stellen Sie sicher, das mindestens eine Sitzung ein Oracle-Benutzer angemeldet ist, nachdem die Änderungen durchgeführt wurden.
prctl -n project.max-shm-memory -i project oracle
project: 100: oracle
NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT
project.max-shm-memory
privileged 254MB - deny -
system 16.0EB max deny -
So setzen Sie diesen Wert, stellen Sie sicher, das mindestens eine Sitzung mit einem Oracle-Benutzer angemeldet ist und führen Sie dann als Root-Benutzer folgenden Befehle aus:
prctl -n project.max-shm-memory -v 4gb -r -i project oracle
projmod -s -K "project.max-shm-memory=(priv,4gb,deny)" oracle
Das erste Command setzt dynamisch den Wert, während der zweite die Änderungen in die Datei "/etc/project"schreibt. Damit steht der Wert nach einem Neustarts wieder zu Verfügung
cat /etc/project
system:0::::
user.root:1::::
noproject:2::::
default:3::::
group.staff:10::::
oracle:100::::project.max-shm-memory=(priv,4294967296,deny)
Die Oracle-Installer erkennt die Kernel-Parameter mit dem SRC nicht, aber wenn man die Warnungen ignorieret, dann kann die Installation erfolgreich abgeschlossen werden.
Unpack Files
1. Die Dateien liegen im Zip-Format vor . Es wird ein UnZipper benötigt.
2. Herunterladen und entpacken Sie die Datei in dem gleiche Verzeichnis, wo bereits die Oracle Database Files liegen
unzip solaris.x64_11gR2_grid.zip
Storage Berechtigungen und Konfiguration
vorbereitung
Anzeigen der Festplatten:
iostat -En
c2t0d0 Soft Errors: 0 Hard Errors: 0 Transport Errors: 0
Vendor: VMware Product: Virtual disk Revision: 1.0 Serial No:
Size: 3.22GB <3221224960 bytes>
Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
Illegal Request: 2 Predictive Failure Analysis: 0
Formatieren der Platte:
Zum Erstellen oder identifizieren der Festplatten-Slices (Partitionen), die Sie in der Automatic Storage Management disk Gruppe verwenden möchten:
format
AVAILABLE DISK SELECTIONS:
0. c2t0d0 <DEFAULT cyl 1533 alt 2 hd 128 sec 32>
/pci@0,0/pci15ad,790@11/pci15ad,1976@2/sd@0,0
Specify disk (enter its number): 0
Dieser Befehl zeigt Ihnen, welche Festplatte an diesem System angeschlossen sind
Geben Sie die Nummer der Festplatte, die Sie verwenden möchten.
Verwenden Sie den Befehl "fdisk" eine Solaris-Partition auf der Festplatte anzulegen, wenn diese nicht bereits vorhanden ist.
format> fdisk
No fdisk table exists. The default partition for the disk is:
a 100% "SOLARIS System" partition
Type "y" to accept the default partition, otherwise type "n" to edit the
partition table.
Mit "y" bestätigen.
Für ASM sollten Sie bei dem Zylinder 1 und nicht mit Zylinder 0 den neuen Slice beginnen
Die Festplatte zuerst "label"
format> label
Geben dann Sie die Option "Partition" ein
partition
Für einen Überblick können Sie
partition> print
eingeben
Current partition table (original):
Total disk cylinders available: 1532 + 2 (reserved cylinders)
Part Tag Flag Cylinders Size Blocks
0 unassigned wm 0 0 (0/0/0) 0
1 unassigned wm 0 0 (0/0/0) 0
2 backup wu 0 - 1531 2.99GB (1532/0/0) 6275072
3 unassigned wm 0 0 (0/0/0) 0
4 unassigned wm 0 0 (0/0/0) 0
5 unassigned wm 0 0 (0/0/0) 0
6 unassigned wm 0 0 (0/0/0) 0
7 unassigned wm 0 0 (0/0/0) 0
8 boot wu 0 - 0 2.00MB (1/0/0) 4096
9 unassigned wm 0 0 (0/0/0) 0
Wählen Sie den zu erstellende Slice
partition> 6
Part Tag Flag Cylinders Size Blocks
6 unassigned wm 0 0 (0/0/0) 0
Enter partition id tag[unassigned]:
Enter partition permission flags[wm]:
Enter new starting cyl[0]: 1
Enter partition size[0b, 0c, 1e, 0.00mb, 0.00gb]: 1531c
6 unassigned wm 1 - 1531 2.99GB (1531/0/0) 6270976
Die Änderungen mit "label" speichern:
partition> label
mit "y" und "quit" das Format Programm verlassen.
Die Berechtigung für diese Slice setzten:
chown grid:asmadmin /dev/rdsk/c2t0d0s6
chmod 660 /dev/rdsk/c2t0d0s6
ORA-15081 Achtung: Auf meiner Testmaschine konnte ich die Databank mit dem User Oracle nicht starteten, wenn das Datafile im ASM liegt.
Ich muste die Berechtigungen wie folgt setzten:
chown grid:oinstall /dev/rdsk/c2t0d0s6
chmod 660 /dev/rdsk/c2t0d0s6
Damit hatte Oracle voll schreibrechte auf das Device, was aber dem Konzept wiederspricht. Ich gehe davon aus, das die Datenbank direkt in die ASM Platten schreibt und nicht über die ASM Instance.
Feststellen, ob das Oracle Central Inventory directory und die Oracle Inventory-Gruppe existiert
Wenn Sie die Oracle-Software zum ersten Mal installieren, dann erstellt der OUI die oraInst.loc Datei. Diese Datei enthät den Namen der Installationsgruppe und den Pfad zum Oracle Central Inventory Verzeichnis.
Ein oraInst.loc Datei hat folgenden Inhalt :
# more /var/opt/oracle/oraInst.loc
inventory_loc=/applications/oracle/oraInventory
inst_group=oinstall
Installation
Melden Sie sich als grid Benutzer an
echo "# Oracle Settings
TMP=/tmp; export TMP
TMPDIR=\$TMP; export TMPDIR
# Select the appropriate ORACLE_BASE
ORACLE_BASE=/applications/grid
export ORACLE_BASE
ORACLE_HOME=\$ORACLE_BASE/11.2.0.1
export ORACLE_HOME
PATH=\$ORACLE_HOME/bin:\$PATH
export PATH " >> ~grid/.profile
Wenn Sie als Oracle-Benutzer mit X-Emulation remote arbeiten, dann setzen Sie die DISPLAY-Umgebungsvariable.
DISPLAY=<machine-name>:0.0
export DISPLAY
./runInstaller
- Type der Datenbank Installation
Wir wählen die "Grid Infrastruture Software only" aus - Auswahl der Sprache
- Gruppe für die OS Authentication festlegen
- Festlegen der Installations Directorys
- Überprüfung Prerequisits (Voraussetungen)
- Installationszusammenfassung
- Installationsvorgang
Ausführen "post Install script" als root - ende
Für weitere Informationen siehe
Einrichten der ASM Instance
Einrichten mit dem asmca
# Oracle Home auf Grid Home einstellen
grid> asmca
Manuelles Anlegen einer ASM Instance
Erstellen der init.ora
echo "############################################
# Automatic Storage Management
###########################################
INSTANCE_TYPE=ASM
DB_UNIQUE_NAME=+ASM
LARGE_POOL_SIZE=16M
ASM_DISKGROUPS='DB_DATA'
ASM_DISKSTRING ='/dev/rdsk/c2t*'
diagnostic_dest='/ORACLE/+ASM/trace'" >/tmp/init+ASM.ora
export ORACLE_SID=+ASM
sqlplus / as sysasm
SQL> startup pfile='/tmp/init+ASM.ora';
ASM instance started
Total System Global Area 283930624 bytes
Fixed Size 2210328 bytes
Variable Size 256554472 bytes
ASM Cache 25165824 bytes
ORA-15032: not all alterations performed
ORA-15017: diskgroup "DB_DATA" cannot be mounted
SQL> create spfile from pfile='/tmp/init+ASM.ora';
SQL> shutdown
ORA-29701: unable to connect to Cluster Synchronization Service
Cluster Dienst wurde nicht gestartet
grid> crsctl start resource -all
CRS-2672: Attempting to start 'ora.LISTENER.lsnr' on 'ora_01'
CRS-2672: Attempting to start 'ora.cssd' on 'ora_01'
CRS-2679: Attempting to clean 'ora.diskmon' on 'ora_01'
CRS-2681: Clean of 'ora.diskmon' on 'ora_01' succeeded
CRS-2672: Attempting to start 'ora.diskmon' on 'ora_01'
CRS-2676: Start of 'ora.LISTENER.lsnr' on 'ora_01' succeeded
CRS-2676: Start of 'ora.diskmon' on 'ora_01' succeeded
CRS-2676: Start of 'ora.cssd' on 'ora_01' succeeded
CRS-2672: Attempting to start 'ora.asm' on 'ora_01'
CRS-2676: Start of 'ora.asm' on 'ora_01' succeeded
ORA-29786: SIHA attribute GET failed with error [Attribute 'SPFILE' sts[200]
CRS Registry muss Verweis auf Listener und ASM Instance enthalten
grid> crsctl stat res | grep NAME\= |grep asm
Wenn kein Eintrag vorhanden ist:
grid> srvctl add listener -l LISTENER -s -o $ORACLE_HOME
grid> srvctl add asm -l LISTENER
Einrichten Oracle Cluster Synchronization Services (CSS)
Der Automatic Storage Management (ASM) erfordert den Einsatz von dem Oracle Cluster Synchronization Services (CSS). Bevor ASM verwendet werden kann, muss der CSS konfiguriert werden, um die Synchronisation zwischen der ASM-Instanz und den Datenbank-Instanzen zu ermöglichen.
In einer Nicht-RAC-Umgebung, wird der CSS-Service als "single-node version" gestartet.
Für eine Oracle Real Application Clusters (RAC)-Installationen wird der CSS-Service mit dem Oracle Cluster Ready Services (CRS) in einem separaten Oracle Home-Verzeichnis (CRS Home-Verzeichnis) installiert.
In einer "Single-Node-Installationen" wird der CSS-Service mit dem Oracle Home der ASM Instance gestartet.
Da der CSS ausgeführt werden muss,
Bevor die ASM-Instanz oder ein Datenbank-Instanz gestartet wird, muss der CSS gestartet sein.
Der Oracle Universal Installer schreibt die Aufruf der CSS-Konfigurations in die root.sh, die nach der Installation als root ausgeführt wird.
Running Oracle 11g root.sh script...
The following environment variables are set as:
ORACLE_OWNER= grid
ORACLE_HOME= /applications/grid/11.2.0.1
Enter the full pathname of the local bin directory: [/usr/local/bin]:
The file "dbhome" already exists in /usr/local/bin. Overwrite it? (y/n) [n]: y
Copying dbhome to /usr/local/bin ...
The file "oraenv" already exists in /usr/local/bin. Overwrite it? (y/n) [n]: y
Copying oraenv to /usr/local/bin ...
The file "coraenv" already exists in /usr/local/bin. Overwrite it? (y/n) [n]: y
Copying coraenv to /usr/local/bin ...
Entries will be added to the /var/opt/oracle/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root.sh script.
Now product-specific root actions will be performed.
To configure Grid Infrastructure for a Stand-Alone Server run the following command as the root user:
/applications/grid/11.2.0.1/perl/bin/perl -I/applications/grid/11.2.0.1/perl/lib -I/applications/grid/11.2.0.1/crs/install /applications/grid/11.2.0.1/crs/install/roothas.pl
To configure Grid Infrastructure for a Cluster perform the following steps:
1. Provide values for Grid Infrastructure configuration parameters in the file - /applications/grid/11.2.0.1/crs/install/crsconfig_params. For details on how to do this, see the installation guide.
2. Run the following command as the root user:
/applications/grid/11.2.0.1/perl/bin/perl -I/applications/grid/11.2.0.1/perl/lib -I/applications/grid/11.2.0.1/crs/install /applications/grid/11.2.0.1/crs/install/rootcrs.pl
To update inventory properties for Grid Infrastructure, perform the following
steps. If a pre-11.2 home is already configured, execute the following:
11.2_Home/oui/bin/runInstaller -updateNodeList -silent -local CRS=false ORACLE_HOME=pre-11.2_Home
Always execute the following to register the current home:
11.2_Home/oui/bin/runInstaller -updateNodeList -silent -local CRS=true ORACLE_HOME=11.2_Home.
If either home is shared, provide the additional argument -cfs.
Diskgroups verwalten
Eine Diskgroup mit externen Spiegel anlegen.
SQL> create DISKGROUP DB_DATA_GRP EXTERNAL REDUNDANCY DISK '/dev/rdsk/c2t0d0s6';
Eine Diskgroup mit einem Spiegel
SQL> create DISKGROUP DB_DATA_GRP01
normal REDUNDANCY
FAILGROUP data_fg1 DISK '/dev/rdsk/c2t3d0s6' name data_fg1_disk3
FAILGROUP data_fg2 DISK '/dev/rdsk/c2t4d0s6' name data_fg1_disk4;
Eine Diskgroup mit einem Spiegel und mehreren Disk
SQL> create DISKGROUP DB_DATA_GRP02
normal REDUNDANCY
FAILGROUP data_fg21 DISK '/dev/rdsk/c3t0d0s6' name c3t0d0s6,'/dev/rdsk/c3t1d0s6'name c3t1d0s6,'/dev/rdsk/c3t2d0s6' name c3t2d0s6,'/dev/rdsk/c3t3d0s6' name c3t3d0s6
FAILGROUP data_fg22 DISK '/dev/rdsk/c4t0d0s6' name c4t0d0s6,'/dev/rdsk/c4t1d0s6'name c4t1d0s6,'/dev/rdsk/c4t2d0s6' name c4t2d0s6,'/dev/rdsk/c4t3d0s6' name c4t3d0s6;
Eine Diskgroup mit neuen Platten erweitern
SQL> alter DISKGROUP DB_DATA_GRP02 add FAILGROUP data_fg22 DISK '/dev/rdsk/c4t4d0s6' name c4t4d0s6,'/dev/rdsk/c4t5d0s6' name c4t5d0s6,'/dev/rdsk/c4t6d0s6' name c4t6d0s6;
alter DISKGROUP DB_DATA_GRP02 add FAILGROUP data_fg21 DISK '/dev/rdsk/c3t4d0s6' name c3t4d0s6,'/dev/rdsk/c3t5d0s6' name c3t5d0s6,'/dev/rdsk/c3t6d0s6' name c3t6d0s6;
Platten aus einer Diskgroup entfernen
SQL> alter DISKGROUP DB_DATA_GRP02 drop disk C4T4D0S6,C4T5D0S6,C4T6D0S6;
Status der Diskgoup Operation
SQL> select group_number,operation,state, est_minutes from v$asm_operation;
GROUP_NUMBER OPERA STAT EST_MINUTES
------------ ----- ---- -----------
2 REBAL RUN 0
Diskgoup Informationen
SQL> select group_number,name,type,total_mb,free_mb from v$asm_diskgroup;
GROUP_NUMBER NAME TYPE TOTAL_MB FREE_MB
------------ ------------------------------ ------ ---------- ----------
0 DB_DATA_GRP 0 0
Diskgoup mount / umounten
SQL> ALTER DISKGROUP DB_DATA_GRP MOUNT;
Diskgoup löschen
SQL> drop DISKGROUP DB_DATA_GRP;
Diskgoup Übersicht Platten und Diskgroup
SQL> set pagesize 200 linesize 400 long 1000
col DISK_PATH format a30
select dg.name as dg_name,
d.name as disk_name,
d.path as disk_path,
d.failgroup as disk_failgroup,
d.FREE_MB as free,
d.mount_status as status
from v$asm_disk d, v$asm_diskgroup dg
where d.group_number = dg.group_number(+);
oder ein änliches Ergebnis mit asmcmd
ASMCMD> lsdsk -p -k --discovery
DG_NAME DISK_NAME DISK_PATH DISK_FAILGROUP STATUS
------------------------------ ------------------------------ ------------------------------ ------------------------------ -------
DB_DATA /dev/rdsk/c2t0d0s6 CLOSED
DB_DATA /dev/rdsk/c2t1d0s6 CLOSED
DB_DATA_GRP DB_DATA_GRP_0000 /dev/rdsk/c2t2d0s6 DB_DATA_GRP_0000 CACHED
mount der Diskgroup
SQL> ALTER DISKGROUP DB_DATA_GRP01 MOUNT;
Änderung vom asm_diskstring
SQL> alter system set asm_diskstring='/dev/rdsk/c2t*d*s6','/dev/rdsk/c3t*d*s6','/dev/rdsk/c4t*d*s6' scope=both
Auslessen asm_diskstring
SQL> show parameter asm_diskstring;
Platten auflisten
SQL> set pagesize 200 linesize 400 long 1000
col disk_path format a30
select PATH as disk_path,MOUNT_STATUS as status,TOTAL_MB as Total_Disk_Space from v$asm_disk order by PATH;
Dump ASM disk header
Wenn Sie den ASM Disk-Header ausgeben möchten, können Sie das Oracle-interne Tool "kfed" (Kernel Datei-Editor) verwenden, um Informationen über Ihre Festplatte, diskgroup etc. zu erhalten, auch wenn die Festplatte offline ist.
Es ist standardmäßig mit einer Oracle 11g Installation vorhanden
Wenn Sie Informationen über den gespeicherten ASM Disk-Header lesen möchten, können Sie es wie folgt Befehl verwenden:
kfed read /devASM3 dsk1.dump
Nun haben Sie in der Datei dsk1.dump den ASM-Disk-Header . Diese Datei kann einfach mit einem Texteditor gelesen werden
Wenn Sie den "diskgroup Namen" die der Platte angehört umbenennen möchten, können Sie den dumpfile benutzen und mit den "Merge"-Befehl von KFED die Änderungen wieder zurück schreiben.
kfed merge /dev/ASM3 text=dsk1.dump
Achtung, Es scheint so, das der "diskgroup Name" oder "disk Name "mit einer festen Länge kodiert wird. Wenn Sie den Namen zu ändern, und dieser basiert auf einer Basis von 4 Byte Wort, benennen Sie sie in ein 4 Byte Wort um.
Löschen ASM Disk Header
ls /dev/Ora*|while read d;do dd if=/dev/zero of=$d bs=4096 count=5000 ;done
Artikelaktionen