Après les annonces de la grande messe Oracle, voici un tout petit article sur une toute petite commande pour ASM 11gR2 qui curieusement n’est pas intégré à asmcmd. Oracle a enfin implémenté en ligne de commande fonctionnalité réclamée par beaucoup : la possibilité de renommer un diskgroup ASM. Mon collègue s’était déjà frotté au problème en version 11.1 pour réaliser un clonage de diskgroup, voici la commande magique pour le faire : renamedg.
Sa syntaxe est particulière et m’a donné du fil à retordre, ci-dessous son expression exacte pour renommer le disque groupe TESTDG1 en ELDG1:
$ renamedg -dgname TESTDG1 -newdgname ELDG1 asm_diskstring='/dev/oracleasm/disks/*' Parsing parameters.. renamedg operation: -dgname TESTDG1 -newdgname ELDG1 asm_diskstring=/dev/oracleasm/disks/* Executing phase 1 Discovering the group Checking for hearbeat... Re-discovering the group Generating configuration file.. Completed phase 1 Executing phase 2 Completed phase 2
le point important est la déclaration du paramètre asm_diskstring, sans lui, c’est le défaut qui est utilisé (qui dépend de la plate forme) , or il arrive souvent que l’on n’utilise pas la valeur par défaut, on se retrouve donc dans la nécessité de le préciser, sous peine de retour du message suivant :
$ renamedg TESTDG1 DG1 Parsing parameters..[ renamedg operation: TESTDG1 DG1 Executing phase 1 Discovering the group KFNDG-00407: file not found; arguments: []
Attention au pré-requis : le diskgroup que l’on doit renommer ne peut pas être dans l’état « mounted » , il faut donc le démonter au préalable, voire arrêter les bases de données qui l’utilisent, voire même le cluster associé si voting disk et OCR sont présents dans ce groupe (dans ce cas là, il faut d’ailleurs préciser si l’on veut conserver ou non la section voting, car elle est supprimée par défaut lors de cette opération, prudence donc!).
Un autre élément intéressant est que l’opération se réalise en deux phases, la première génère un fichier de configuration et effectue quelques vérifications :
$ renamedg phase=one dgname=TESTDG1 newdgname=ELDG1 asm_diskstring='/dev/oracleasm/disks/*' verbose=true config=/tmp/data2.conf Parsing parameters.. Parameters in effect: Old DG name : TESTDG1 New DG name : ELDG1 Phases : Phase 1 Discovery str : /dev/oracleasm/disks/* Clean : TRUE Raw only : TRUE renamedg operation: phase=one dgname=TESTDG1 newdgname=ELDG1 asm_diskstring=/dev/oracleasm/disks/* verbose=true config=/tmp/data2.conf Executing phase 1 Discovering the group Performing discovery with string:/dev/oracleasm/disks/* Identified disk UFS:/dev/oracleasm/disks/DATA3 with disk number:0 and timestamp (32925909 -884319232) Checking for hearbeat... Re-discovering the group Performing discovery with string:/dev/oracleasm/disks/* Identified disk UFS:/dev/oracleasm/disks/DATA3 with disk number:0 and timestamp (32925909 -884319232) Checking if the diskgroup is mounted Checking disk number:0 Checking if diskgroup is used by CSS Generating configuration file.. Completed phase 1 Terminating kgfd context 0x2b931df160a0
Le contenu du fichier de configuration est ceci :
$ cat /tmp/data2.conf /dev/oracleasm/disks/DATA3 TESTDG1 ELDG1
La seconde phase réalise la modification du nom en utilisant le fichier de configuration précédent pour recréer l’entête de la partition.
Cette séparation en deux étapes permet de pouvoir retenter plusieurs fois l’opération de la phase II, en cas de problème sur celle-ci. On peut éventuellement en profiter pour changer de nouveau le nom du diskgroup, en le modifiant à la fois dans la ligne de commande et dans le fichier.
Une fois l’opération terminée on remonte le disque et on vérifie :
$ asmcmd mount eldg1 $ asmcmd lsdg State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name MOUNTED EXTERN N 512 4096 1048576 1018 443 0 443 0 N DATA/ MOUNTED EXTERN N 512 4096 1048576 509 457 0 457 0 N ELDG1/
Pour plus d’information sur la commande et ses arguments, utiliser l’aide :
$ renamedg -help Parsing parameters.. phase Phase to execute, (phase=ONE|TWO|BOTH), default BOTH dgname Diskgroup to be renamed newdgname New name for the diskgroup config intermediate config file check just check-do not perform actual operation, (check=TRUE/FALSE), default FALSE confirm confirm before committing changes to disks, (confirm=TRUE/FALSE), default FALSE clean ignore errors, (clean=TRUE/FALSE), default TRUE asm_diskstring ASM Diskstring (asm_diskstring='discoverystring', 'discoverystring1' ...) verbose verbose execution, (verbose=TRUE|FALSE), default FALSE keep_voting_files Voting file attribute, (keep_voting_files=TRUE|FALSE), default FALSE
Voilà c’était tout, un petit pas grand chose, mais qui peut vous faire gagner du temps si vous souhaitez utiliser cette commande.