I. Introduction▲
ASM est souvent considéré à tort comme une boîte noire. Quelques DBAs se cantonnent à n'utiliser qu'ASMCMD (ligne de commande) ou ASMCA (éditeur graphique minimaliste). Pour bénéficier de toute la richesse de ASM, il faut y accéder via sqlplus. Voici quelques commandes utiles...
II. Modèle de données ASM▲
Qui dit sqlplus dit SQL (un sql bien particulier, il faut l'avouer). Pour manipuler les tables du méta-modèle d'Oracle, encore faut-il en avoir une vision d'ensemble...
III. Commandes dans ASMCMD▲
| Desription | Commande |
|---|---|
| Liste des diskgroups | lsdg |
| Version ASM | showversion |
| Type de cluster Flex | showclustermode |
| Liste des patches | showpatches |
| Etat du cluster | showclusterstate |
IV. Commandes SQL▲
SELECT G.NAME DiskGroup, D.NAME Disque, C.DB_NAME, C.STATUS
FROM v$asm_diskgroup G
INNER JOIN v$asm_file F ON G.GROUP_NUMBER=F.GROUP_NUMBER
INNER JOIN v$asm_disk D ON G.GROUP_NUMBER=D.GROUP_NUMBER
INNER JOIN v$asm_alias A ON F.GROUP_NUMBER=A.GROUP_NUMBER and F.FILE_NUMBER=A.FILE_NUMBER
INNER JOIN V$asm_client C ON G.GROUP_NUMBER=C.GROUP_NUMBER
WHERE A.NAME='&FICHIER' ;
SELECT D.NAME Disque,A.NAME
FROM v$asm_diskgroup G
INNER JOIN v$asm_file F ON G.GROUP_NUMBER=F.GROUP_NUMBER
INNER JOIN v$asm_disk D ON G.GROUP_NUMBER=D.GROUP_NUMBER
INNER JOIN v$asm_alias A ON F.GROUP_NUMBER=A.GROUP_NUMBER and F.FILE_NUMBER=A.FILE_NUMBER
INNER JOIN V$asm_client C ON G.GROUP_NUMBER=C.GROUP_NUMBER
WHERE C.DB_NAME='&BASE' ;
show parameter asm_diskstring;
set pagesize100
col path format a50
select D.name, D.free_MB, D.total_MB, (D.total_MB-D.free_MB) Busy_MB, D.path , D.STATE
from v$asm_disk D
inner join v$asm_diskgroup G on G.group_number=D.group_number
where G.name='&DiskGroup' ;
select name, path from v$asm_disk where name is null ;
set pagesize100
col path format a50
select G.name, D.name, D.free_MB, D.total_MB, ltrim(to_char(100-(100.0/D.total_MB*D.free_MB), '999G99')||'%','%') Restant, D.path
from v$asm_disk D
inner join v$asm_diskgroup G on G.group_number=D.group_number
where D.STATE='DROPPING' ;
select NAME DG, OPERATION, O.STATE, EST_MINUTES, ERROR_CODE , POWER
from v$asm_operation O inner join v$asm_diskgroup G on G.group_number=O.group_number ;
alter diskgroup DGARCH add disk '/oracle/devasm/ARCH1-part1' ;
alter diskgroup DGARCH drop disk DGARCH_0002 ;
set pagesize 200
set linesize 200
select group_number, name,compatibility, database_compatibility from v$asm_diskgroup;
alter diskgroup ORA_MABASE_DAT set attribute 'compatible.asm'='11.2.0.4' ;
alter diskgroup ORA_MABASE_DAT set attribute 'compatible.rdbms'='11.2.0.4' ;V. Ajouter un disque▲
- faire créer les luns par l'équipe Storage
- Les rendre visibles depuis le chemin de recherche ASM
ln -s /dev/mapper/NETAPP-ITC-ARCH1 /oracle/devasm/NETAPP-ITC-ARCH1
chown oracle:oinstall /dev/mapper/NETAPP-ITC-ARCH1
chown oracle:oinstall /oracle/devasm/NETAPP-ITC-ARCH1 - Ajouter le disque au DG
alter diskgroup DGARCH add disk '/oracle/devasm/NETAPP-ITC-ARCH1' - Si besoin, supprimer l'ancien disque
select d.name, d.TOTAL_MB from v$asm_disk D inner join v$asm_diskgroup G on D.group_number=g.group_number and g.name='DGARCH' ;
alter diskgroup DGARCH drop disk DGARCH_0000 rebalance power 5 ;
VI. Problèmes connus▲
| Problème | Résolution |
|---|---|
| ERROR at line 1: ORA-15032: not all alterations performed ORA-15033: disk '/oracle/devasm/NETAPP-ITC-HIGH1-part1' belongs to diskgroup "DGHIGH" |
alter diskgroup DGHIGH add disk '/oracle/devasm/NETAPP-ITC-HIGH1-part1' force ; |
| Pas possibilité de faire un kfed sur le fichier dans /dev/mapper | Contrôler les droits sur le fichier dans /dev Contrôler dans /etc/udev/rules.d/96-oracle-dm.rules |





