IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

ASM : commandes utiles

Avancé

L'auteur

Profil ProSite personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

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...

Modèle de données
Modèle de données

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▲

Localisation et utilisation d'un fichier
Sélectionnez

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' ;
Liste des fichiers d'une base
Sélectionnez

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' ;
Chemin de recherche de ASM
Sélectionnez

show parameter asm_diskstring;
Disques d'un Disk Group donné
Sélectionnez

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' ;
Disques disponibles
Sélectionnez

select name, path from v$asm_disk where name is null ;
Disques en cours de suppression
Sélectionnez

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' ;
Opérations en cours
Sélectionnez

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 ;
Ajouter un disque
Sélectionnez

alter diskgroup DGARCH add disk '/oracle/devasm/ARCH1-part1' ;
Supprimer un disque
Sélectionnez

alter diskgroup DGARCH drop disk DGARCH_0002 ;
Afficher les compatibilités
Sélectionnez

set pagesize 200 
set linesize 200
select group_number, name,compatibility, database_compatibility from v$asm_diskgroup;
Modifier les compatibilités
Sélectionnez

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

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2015 Fabien Celaia. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.