Installare Oracle Grid 11g R2 su RHEL

Questa e' una guida, la piu' semplice possibile, per installare Oracle Grid Infrastructure 11gR2 su Linux.
Il documento fa riferimento ad un'installazione Standalone della versione Oracle Grid Infrastructure 11.2.0.3 su un Linux Red Hat Enterprise Linux 5.8 con processore x86-64 ma quanto descritto vale, mutatis mutandis, anche per altre versioni e distribuzioni.
Oracle Grid Infrastructure e' un componente fondamentale per le installazioni piu' complete e complesse dell'RDBMS Oracle (eg. RAC, ASM, Clusterware). Questo documento e' un naturale complemento del documento installazione di Oracle che si riferisce ad un'installazione single instance su file system. Questo documento e' volutamente incompleto, per maggiori dettagli fate riferimento alla documentazione ufficiale, ma vuole riportare gli elementi essenziali della configurazione in modo sintetico, semplice, chiaro e, non ultimo, in italiano!

Dalla versione 11g R2 (11.2) con la stessa procedura d'installazione di Oracle Grid Infrastructure e' possibile installare due prodotti distinti: Oracle Clusterware ed Oracle Automatic Storage Management (ASM). Oracle Clusterware fornisce le funzionalita' di un failover cluster ed e' un prerequisito per un'installazione di Oracle RAC. Oracle ASM fornisce le funzionalita' di un Volume Manager per gestire direttamente i dischi riservati all'RDBMS Oracle ed all'ACFS.

Il documento descrive: Prerequisiti, Preparazione, Installazione ASMlib, Installazione, Post Installazione, Varie ed eventuali, ...


Prerequisiti


Sistema con un Linux Red Hat ES 5.8 (Intel x64)
5GB di disco libero (un'installazione tipica richiede 3.5GB...)
FS x Temp 120MB Swap 150MB
Accesso come root al sistema ed X11 funzionante (eg. deve funzionare xclock&)
Accesso ad Internet, alla rete RH ed a metalink per scaricare i SW [opzionale ma fortemente consigliato]

Packages: Installazione di default + RPM definiti da Oracle
I prerequisiti sono riportati nel documento ufficiale ID 880989.1:
Requirements for Installing Oracle 11gR2 RDBMS on RHEL (and OEL) 5 on AMD64/EM64T
Il documento e' un indice e punta a molti altri documenti ed e' disponibile solo sul sito di supporto.

Il riferimento e' Master Note of Linux OS Requirements for Database Server (ID 851598.1)



Preparazione

Da eseguire come utente root!

La versione di base e' la 11.2.0.1 ma non serve scaricarla, la versione 11.2.0.3 e' una full patch
Scaricare l'ultimo Patchset del software Oracle 11g R2 (11.2.0.3) dal Supporto Oracle 
Scegliere il tab Patches&Updates e cercare il patch number: 10404530 e selezionare Linux x86-64
Va scaricato il terzo .zip che contiene l'Oracle Grid Infrastructure (i primi due sono per l'RDBMS).
Per la versione 11.2.0.4 il patch number e' 13390677.
La Grid Infrastructure va installata prima dell'RDBMS e su una Home differente rispetto al DB.

Vanno scaricati gli rpm con le ASMlib ed i driver per la gestione dello storage.
I file corretti dipendono dalla versione del kernel (uname -a) e si trovano su questa pagina

Applicare le ultime PSU (Patch Set Updates) e le ultime CPU (Critical Patch Updates and security alerts).
Le PSU che aggiungono un quinto numero alla versione (eg. 11.2.0.3.7)

Elenco delle versioni Oracle ed i path di upgrade: Oracle Database Upgrade Path Reference List (ID 730365.1)
Ultime patch disponibili: Quick Reference to Patch Numbers for Database PSU, SPU(CPU), ... (ID 1454618.1)
Ultima versione di OPatch (cercare sul supporto Patch 6880880).

Preparare FS sufficientemente ampi per l'installazione e per l'area temporanea
Se lo /tmp non e' sufficiente si puo' utilizzare una qualsiasi
directory impostando la variabile d'ambiente TMP (eg. mkdir /u01/bigtmp; chmod 777 /u01/bigtmp).

Creare un oracle user, groups, ... configurare i profile
  groupadd -g 500 dba
  useradd -u 500 -d /home/oracle -G "dba" -m  -s /bin/bash oracle
  grep nobody /etc/passwd
 Nobody:x:99:99:Nobody:/:/sbin/nobody
  
 $ vi ~oracle/.bash_profile
 umask 022
 ORACLE_BASE=/u01/app/grid; export ORACLE_BASE
 TMP=/u01/bigtmp; export TMP
 TMPDIR=$TMP; export TMPDIR

NB: e' fortemente consigliato utilizzare un'utenza differente tra Grid Infrastructure ed RDBMS
    In questo caso utilizzare l'utente grid per la GI e l'utente oracle per l'RDBMS

Installazione ASMlib

L'installazione dell'ASMlib non e' strettamente necessaria ma semplifica la gestione dei dischi da assegnare all'ASM (che altrimenti vanno configurati a livello di sistema operativo con udev). Quindi, in questo semplice documento, utilizziamo ASMlib!

Importante: da eseguire come utente root!

Installare gli rpm con 
rpm -ilv oracleasm-2.6.18-308.13.1.el5-2.0.5-1.el5.x86_64.rpm \
         oracleasm-support-2.1.7-1.el5.x86_64.rpm oracleasmlib-2.0.4-1.el5.x86_64.rpm

Formattare i dischi con fdisk (n new partition, p primary, 1 first partition, 1 start cylinder, last cylinder...)
E' fortemente consigliato definire partizioni con dimensioni identiche.
Vanno configurati almeno 4 dischi per ogni Disk Group. Se si utilizza il multipath (consigliato) i dischi sono:
multipath -F; multipath -v2
create: mpath17 (6900508b4000b322b0000600001ed0000)  HP,HSV450
[size=500G][features=0][hwhandler=0][n/a]
	\_ round-robin 0 [prio=100][undef]
	  \_ 7:0:1:69 sddq 69:224  [undef][ready]
	  \_ 8:0:1:69 sddq 69:224  [undef][ready]
	\_ round-robin 0 [prio=0][undef]
	  \_ 7:0:0:69 sddp 69:208  [undef][ready]
	  \_ 8:0:0:69 sddr 69:240  [undef][ready]
...
I dischi/LUN assegnati debbono avere identiche caratteristiche e performance, se sono presenti
tipologie diverse di dischi e' opportuno utilizzarli in Disk Group distinti con l'ASM.	

I dischi cosi' creati vanno definiti come proprieta' di oracle/grid o assegnati i diritti necessari.
Configurare ASMlib ed assegnare i dischi:
oracleasm configure -i
oracleasm init
oracleasm createdisk DATA01 /dev/mpath/mpath17
...
oracleasm listdisks

Installazione ASM (Grid Infrastructure)


Importante: da eseguire come utente oracle (o grid se si utilizzano utenze diverse GI/RDBMS)!

Decomprimere il SW Oracle (unzip)

Iniziare l'installazione dove e' stato scaricato il SW: abilitare X sul Client, impostare il DISPLAY e lanciare:
xhost + 		
set DISPLAY=IP_Workstation:0
cd grid; ./runInstaller&

Rispondere con il default a tutte le domande, nel seguito sono riportate le eccezioni.
Eseguire gli script, come utente root, quando richiesto.

Non dimenticate le password inserite durante l'installazione!!

I primi passi dell'installazione richiedono email ed utenze registrate sul supporto Oracle per l'eventuale (consigliato) download delle patch.

Installazione Oracle Grid 11g R2 - Support Credential

Viene richiesto il tipo di installazione. Scegliere "Install and Configure Grid Infrastructure for a Standalone Server".
Se l'installazione viene eseguita configurare un RAC va invece scelto "Install and Configure Grid Infrastructure for a Cluster" [NdA l'installazione e' un poco piu' complessa e non la vediamo in questo documento].

Installazione Oracle Grid 11g R2 - Tipo Installazione

Vanno indicati il Disk Group da creare ed i dischi da assegnare, vengono visualizzati quelli catalogati dall'ASMlib, basta selezionarli:

Installazione Oracle Grid 11g R2 - Disk e Disk Group

Se non vengono trovati i dischi... basta cambiare il path:

Installazione Oracle Grid 11g R2 - Change Path

Vengono chieste le password delle utenze SYS, ASM, ... l'importante e' ricordarle!

Installazione Oracle Grid 11g R2 - Utenze

Terminate le domande, confermato il prospetto riassuntivo e lanciati alcuni script come root viene eseguita l'installazione del software, il relink degli eseguibili, ...

Finito!

Installazione Oracle Grid 11g R2 - The End

Buon divertimento! Have a lot of Fun! Que te diviertas! Diverte-te!


Post installazione

Controllate che l'istanza Oracle ASM funzioni con sqlplus / as SYSASM.

Non e' obbligatorio... ma e' comodo che PATH, ORACLE_HOME ed ORACLE_SID siano impostati nel .bash_profile di oracle:

ORACLE_BASE=/ora11r2/app/oracle; export ORACLE_BASE
ORACLE_HOME=/ora11r2/app/oracle/product/11.2.0/grid; export ORACLE_HOME
PATH=$PATH:$ORACLE_HOME/bin
ORACLE_SID=+ASM
export ORACLE_SID
La procedura ha installato anche i comandi Clusterware Control (CRSCTL) e Server Control Utility (SRVCTL). Il cluster ed i servizi vengono gestiti con:
crsctl [check|start|stop] has crsctl status server crsctl check css svrctl [status|start|stop] asm srvctl [status|start|stop] database -d DB_NAME srvctl [status|start|stop] instance -d DB_NAME -i INSTANCE_NAME

Ovviamente prima di poter avviare un database con i comandi di cui sopra... bisogna installarlo!


Altre informazioni...

E' disponibile un'ampia documentazione ufficiale sul sito Oracle tra cui la guida per l'installazione. Molto comoda e' anche questa pagina che riporta l'esempio di un'installazione standalone.

La configurazione ottimale dello storage richiede un disegno specifico ed un po' di esperienza ma l'utilizzo dell'ASM semplifica le attivita' da parte del DBA ed ottimizza gli accessi.
Nel caso di utilizzo di Storage su SAN conviene scegliere la protezione esterna: EXTERNAL, nel caso di utilizzo di dischi locali conviene utilizzare il livello di protezione piu' elevato: HIGH.

Una successiva installazione di Oracle Database 11gR2 vede in modo semplice l'ASM. Basta scegliere l'ASM come tipologia di Database Storage ed indicare la password di ASMSNMP: i datafile verranno creati su ASM.

Installazione Oracle Database 11g R2 - Utilizzo ASM

L'utilizzo di datafile su ASM e' molto semplice. Per create un tablespace basta il comando (DGROUP e' un Disk Group definito su ASM):
create tablespace mytbs datafile '+DGROUP' size 100M;

Per controllare l'allocazione di spazio e' utile questa query:

col PCT format 999.0
select GROUP_NUMBER DG#, name, ALLOCATION_UNIT_SIZE AU_SZ, STATE,
       TYPE, TOTAL_MB, FREE_MB, free_mb/total_mb*100 PCT, OFFLINE_DISKS 
from v$asm_diskgroup;
Un report piu' completo puo' essere ottenuto con questo script SQL.

Su un DB Server e' presente una sola istanza ASM (con SID= +ASM) e le diverse istanze di Database ospitate sullo stesso server utilizzano lo stesso unico ASM. Nel caso di configurazione in RAC ogni nodo ha una propria istanza ASM, anche in questo caso le diverse istanze di database ospitate sullo stesso nodo utilizzano lo stesso unico ASM (con SID= +ASMn).

ASMlib Internals

L'installazione e la configurazione dell'ASMlib sono semplici. Ma se qualcosa non funziona e' necessario conoscere qualche elemento in piu' sull'implementazione di ASMlib. Quindi quanto segue e' un poco meno semplice...
Poiche' si tratta di un'interfaccia tra sistema operativo e database una corretta configurazione di ASMlib e' importante per garantire il funzionamento nelle configurazioni piu' complesse (eg. multipath, cluster, RAC) ed a fronte di ogni situazione (eg. reboot, componente failure).

Il file di configurazione /etc/sysconfig/oracleasm e' (e deve essere) un link simbolico al file oracleasm-_dev_oracleasm.
E' possibile indicare l'ordine di scan e/o l'eventuale esclusione di dischi con i parametri ORACLEASM_SCANORDER e ORACLEASM_SCANEXCLUDE.
I nomi dei dischi riconosciuti sono quelli di /proc/partitions ed i relativi device driver debbono trovarsi sono /dev.

Per ottenere l'elenco dei dischi da ASM e visualizzarne i dettagli:

oracleasm scandisks

oracleasm listdisks
oracleasm querydisk -p DATA01
oracleasm querydisk -l DATA01

L'ASMlib crea nella directory /dev/oracleasm/disks/ l'elenco dei dischi creati con oracleasm createdisk. I dischi debbono avere le permission corrette ed utilizzare gli stessi major number e minor number dei dischi cui fanno riferimento (eg. il disco del multipath):
ls -l /dev/oracleasm/disks/
total 0
brw-rw---- 1 grid asmadmin 253, 13 Jul 13 13:13 DATA01
brw-rw---- 1 grid asmadmin 253, 21 Jul 13 13:13 DATA02
brw-rw---- 1 grid asmadmin 253, 14 Jul 13 13:13 DATA03

ls -l dm-13
brw-rw---- 1 root disk 253, 13 Jul 13 13:13 dm-13

Su Linux, dalla versione 2.6, viene utilizzato udev per la gestione dei devices. Con udev e' possibile gestire dinamicamente i device e svolgere configurazioni analoghe a quelle effettuate da ASMlib. L'importante e' che non vadono in conflitto...
La configurazioni di udev sono guidate da regole (eg. /etc/udev/rules.d).

Quando ASMlib crea un disco da utilizzare con Oracle lo marchia:

od -c /dev/sb1
0000000  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0   #  \b 037   {
0000020  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
0000040   O   R   C   L   D   I   S   K   D   A   T   A   0   1  \0  \0
0000060  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
*
Quando lo si cancella (ammesso di riuscirci...):
oracleasm deletedisk DATA01
Clearing disk header: done
Dropping disk: done

od -c /dev/sb1
0000000  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0   #  \b 037   {
0000020  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
0000040   O   R   C   L   C   L   R   D  \0  \0  \0  \0  \0  \0  \0  \0
0000060  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
*

Poiche' i dischi sono marchiati e' semplice per l'ASM riconoscere lo storage assegnato ed evitare situazioni di conflitto (eg. un mapping errato sulla SAN che inverta o raddoppi un disco).

Da ultimo, ma non ultimo per importanza, occhio alle versioni ed agli aggiornamenti: meglio che siano sempre aggiornate, in particolare in fase di configurazione su nuovo HW.


Titolo: Installazione di Oracle Grid Infrastructure 11g R2
Livello: Avanzato (3/5)
Data: 21 Giugno 2012
Versione: 1.0.2 - 14 Febbraio 2014
Autore: mail [AT] meo.bogliolo.name