Questa paginetta riporta le indicazioni piu' importanti per
utilizzare
Oracle ASM.
Oracle ASM (Oracle Automatic Storage Management)
fornisce le funzionalita' di un Volume Manager per gestire direttamente
i dischi riservati all'RDBMS Oracle.
Una funzionalita' importante di ASM e' l'ACFS (ASM Cluster File System).
ACFS permette di creare un file system per mantenere file differenti da quelli del database.
Questo documento e' volutamente incompleto, per maggiori dettagli fate riferimento alla documentazione ufficiale, ma vuole riportare gli elementi essenziali dell'utilizzo di ASM in modo sintetico, semplice, chiaro e, non ultimo, in italiano!
Il documento descrive: Architettura, Utilizzo, asmcmd: comandi in linea, sqlplus: comandi SQL, ACFS, Installazione, Varie ed eventuali, ...
L'ASM e' un volume manager sviluppato da Oracle Corporation per l'RDBMS Oracle. La configurazione ottimale dello storage richiede un disegno specifico ed esperienza ma l'utilizzo dell'ASM semplifica le attivita' da parte del DBA ed ottimizza gli accessi.
In pratica all'ASM vengono assegnati direttamente le partizioni dei dischi o le LUN
di una SAN (Storage Area Network) ed e' poi l'ASM a gestirli in maniera ottimale.
I dischi assegnati vengono raggruppati in Disk Group che mantengono informazioni
omogenee e su cui l'ASM distribuisce i dati.
Nel caso di utilizzo di Storage su SAN conviene scegliere la protezione esterna: EXTERNAL (nessun mirror),
nel caso di utilizzo di dischi locali conviene utilizzare il livello di protezione piu' elevato: HIGH.
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).
L'utilizzo di ASM da parte di un DBA e' molto semplice.
Per create un tablespace basta il comando (DGROUP e' un Disk Group definito su ASM):
create tablespace my_tbs datafile '+DGROUP' size 100M;
Per controllare l'allocazione di spazio e' utile questa query:
col PCT format 999.0 set lines 132 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 lo script asm2html.sql contenuto nelle utility SQL per Oracle.
La gestione dell'ASM puo' essere effettuata in modo grafico con il comando asmca.
Lanciando il comando asmca viene presentata un'interfaccia grafica simile a quella dei comandi
dbca o netca cui il DBA Oracle e' abituato.
Esistono tuttavia altre modalita' per la gestione dell'ASM che consentono un controllo
maggiore e vengono descritte nei prossimi capitoli.
L'utility asmcmd consente di operare da linea di comando su ASM.
L'ASM mantiene una struttura gerarchica dei file.
La struttura e' fissa:
+diskGroupName/databaseName/fileType/fileTypeTag.file.incarnation
I comandi utilizzabili per navigare nella struttura di ASM sono Unix-like:
ls cd du find rm mkdir mkalias ...
Sono supportate anche le principali opzioni (eg. ls -l), i path assoluti/relativi,
i wildchar, ...
Lanciato con l'opzione -p il prompt contiene il path corrente (molto comodo :-).
Facciamo un giro:
L'istanza +ASM ha alcune analogie con le altre istanze di database. E' infatti possibile accedere all'istanza, come utente grid, con il comando: sqlplus / as sysasm
Per controllare l'allocazione di spazio e' utile questa query:
col PCT format 999.0 set lines 132 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;
Per controllare lo spazio utilizzato per tipologia d'oggetto e' utile questa query:
set lines 132 select type, group_number, count(*), to_char(round(sum(bytes)/(1024*1024*1024)),'999,999,999,999') GB, to_char(sum(bytes),'999,999,999,999,999,999') bytes from v$asm_file group by group_number,type;
Un report piu' completo puo' essere ottenuto con questi script SQL.
Le stesse query possono essere utilizzate anche sulle istanze Oracle connesse all'ASM.
Quando lanciate dall'ASM le query riportano i dati relativi a tutte le istanze,
mentre ciascuna istanza puo' vedere solo i dati relativi alle proprie attivita'.
La gestione delle allocazioni, la definizione degli oggetti, i principali
aspetti amministrativi (come la rottura di un disco), ... vengono gestiti
automaticamente dall'ASM.
Nonostante questo con i comandi in linea o da SQL si puo' gestire in modo completo ogni
oggetto definito in ASM.
In questo modo si possono risolvere velocemente problemi complessi oppure...
combinare grossi guai.
Quindi CAVE CANEM: non eseguite i comandi che seguono se non sapete quello che state facendo!
Agire direttamente sui file ASM comporta che le basi dati Oracle non sanno cosa sia stato modificato ed e' necessario riallinearle. Il primo comando RMAN porta in stato X (expired) gli archived log, il secondo li cancella completamente dai control file (ed eventualmente dal catalogo RMAN).
L'ACFS (ASM Cluster File System) e' un FS definito su dischi ASM. Ha le normali caratteristiche di un moderno FS ma, anziche' appoggiarsi a partizioni fisiche di un disco, utilizza gli spazi allocati sull'ASM. L'utility acfsutil consente di definire dinamicamente le caratteristiche di un file system. Il seguente esempio riporta come creare da zero un nuovo ACFS /cloudfs2 e mountarlo in cluster:
Una volta definito un file system ACFS e' di semplice controllo e gestione. Per controllarlo si utilizzano i normali comandi unix (eg. df, mount, ...) ed acfsutil. Ecco come allargarlo di altri 10GB [NdE attenzione alla versione: prima della 11.2.0.4 il numero di resize era limitato a 5]:
Non funziona? Potrebbe mancare qualcosa!
Ci sono diverse combinazioni a seconda della configurazione:
seguite le note successive...
Se mancano i driver nel kernel:
/u01/app/11.2.0.4/grid/bin/acfsroot install /u01/app/11.2.0.4/grid/bin/acfsload start lsmod | grep oraclePer avviare manualmente il file system:
/u01/app/11.2.0.4/grid/bin/acfsload start -s su - grid -c "asmcmd volenable -a" mount /dev/asm/u03-296 /u03 -t acfsPer avviare da cluster:
acfsutil registry -l /u01/app/11.2.0.4/grid/bin/acfsload start -sInfine con Oracle Restart il file system non e' gestito con i comandi di cluster e quindi va montato normalmente ovvero con i comandi di sistema operativo:
mount -t acfs /dev/asm/cloudfs2-69 /cloudfs2
La procedura di installazione della Grid Infrastructure, che contiene l'ASM,
e' descritta in dettaglio
nel documento installazione di Oracle Grid Infrastructure.
Nel seguito sono riportati solo alcuni elementi:
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.
Ecco i passi da eseguire:
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.
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].
Vanno indicati il Disk Group da creare ed i dischi da assegnare, vengono visualizzati quelli catalogati dall'ASMlib, basta selezionarli:
Durante l'installazione vengono chieste le password delle utenze SYS, ASM, ... l'importante e' ricordarle!
Terminate le domande e confermato il prospetto riassuntivo viene eseguita l'installazione del software, il relink degli eseguibili, ...
Finito!
Buon divertimento! Have a lot of Fun! Que te diviertas! Diverte-te!
Dalla versione 12c e' presente la nuova architettura FLEX che estende l'utilizzo di ASM anche a nodi non connessi allo storage. Oltre ai nodi (HUB) con il componente ASM installato ed attivo e' possibile inserire in cluster nodi (LEAF) senza la componente ASM. I nodi LEAF accedono allo storage mediante il nodo HUB cui sono assegnati.
Come sempre con Oracle su ASM e' disponibile un'ampia documentazione ufficiale sul sito Oracle.
In qualche caso e' necessario conoscere qualche dettaglio sugli ASMlib Internals...
Titolo: Oracle ASM
Livello: Avanzato
Data: 14 Febbraio 2013
Versione: 1.0.0 - 1 Aprile 2014
Autore: mail [AT] meo.bogliolo.name