Dans cet article, je vais vous montrer comment dé-configurer/reconfigurer la couche Grid Infrastructure 12.1 sur Exadata.
La dé-configuration et la reconfiguration du cluster entier reconstruisent l’OCR et Voting Disks.
Les ressources utilisateurs (base de données, instance, service, listener, etc.) devront être rajoutées manuellement au cluster une fois la reconfiguration terminée.
Pourquoi la dé-configuration est-elle nécessaire ?
La dé-configuration est nécessaire lorsque :
- L’OCR est corrompu sans aucune sauvegarde
- On souhaite changer le séquence number des instances ASM (+ASM1, +ASM2 , etc.)
- $GRID_HOME est intact, car la dé-configuration ne corrigera pas la corruption
Vérifier l’état des nœuds :
Avant de dé-configurer un nœud, il faut s’assurer qu’il n’est pas épinglé :
/u01/app/12.1.0.2/grid/bin/olsnodes -s -t racnode1 Inactive Pinned racnode2 Active Unpinned racnode3 Active Unpinned racnode4 Active Unpinned
Si le nœud est épinglé, vous devriez le détacher en premier, en tant que root :
/u01/app/12.1.0.2/grid/bin/crsctl unpin css -n racnode1
Collecter les ressources du cluster :
Avant de dé-configurer, vous devez collecter les éléments suivants en tant qu’utilisateur grid, afin de générer une liste des ressources utilisateurs à rajouter au cluster une fois la reconfiguration terminée, un exemple des éléments à récupérer :
echo "########### /u01/app/12.1.0.2/grid/bin/crsctl stat res -t ###########" >> health_crs.txt /u01/app/12.1.0.2/grid/bin/crsctl stat res -t >> health_crs.txt echo "########### /u01/app/12.1.0.2/grid/bin/crsctl stat res -p ###########" >> health_crs.txt /u01/app/12.1.0.2/grid/bin/crsctl stat res -p >> health_crs.txt echo "########### /u01/app/12.1.0.2/grid/bin/crsctl query css votedisk ###########" >> health_crs.txt /u01/app/12.1.0.2/grid/bin/crsctl query css votedisk >> health_crs.txt echo "########### /u01/app/12.1.0.2/grid/bin/ocrcheck ###########" >> health_crs.txt /u01/app/12.1.0.2/grid/bin/ocrcheck >> health_crs.txt echo "########### /u01/app/12.1.0.2/grid/bin/oifcfg getif ###########" >> health_crs.txt /u01/app/12.1.0.2/grid/bin/oifcfg getif >> health_crs.txt echo "########### /u01/app/12.1.0.2/grid/bin/srvctl config nodeapps -a ###########" >> health_crs.txt /u01/app/12.1.0.2/grid/bin/srvctl config nodeapps -a >> health_crs.txt echo "########### /u01/app/12.1.0.2/grid/bin/srvctl config scan ###########" >> health_crs.txt /u01/app/12.1.0.2/grid/bin/srvctl config scan >> health_crs.txt echo "########### /u01/app/12.1.0.2/grid/bin/srvctl config asm -a ###########" >> health_crs.txt /u01/app/12.1.0.2/grid/bin/srvctl config asm -a >> health_crs.txt echo "########### /u01/app/12.1.0.2/grid/bin/srvctl config listener -l LISTENER -a ###########" >> health_crs.txt /u01/app/12.1.0.2/grid/bin/srvctl config listener -l LISTENER -a >> health_crs.txt echo "########### /u01/app/12.1.0.2/grid/bin/srvctl config listener -l LISTENER_IB -a ###########" >> health_crs.txt /u01/app/12.1.0.2/grid/bin/srvctl config listener -l LISTENER_IB -a >> health_crs.txt srvctl config database | while read SID ; do export ORACLE_SID=$SID; export ORAENV_ASK=NO; . oraenv; echo "########### /u01/app/oracle/product/12.1.0.2/dbhome_1/bin/srvctl config database -d $SID -a ###########" >> health_crs.txt /u01/app/oracle/product/12.1.0.2/dbhome_1/bin/srvctl config database -d $SID -a >> health_crs.txt done
Si ACFS (ASM Cluster File System) ou bien AFD (ASM Filter Driver) est utilisé, les données ci-dessous doivent être collectées avant de dé-configurer la couche GRID :
uname -a df -k lsmod | grep oracle rpm -qa | grep -i kmod /u01/app/12.1.0.2/grid/bin/acfsdriverstate supported /u01/app/12.1.0.2/grid/bin/acfsdriverstate version /u01/app/12.1.0.2/grid/bin/acfsdriverstate installed /u01/app/12.1.0.2/grid/bin/acfsdriverstate loaded /u01/app/12.1.0.2/grid/bin/afddriverstate supported /u01/app/12.1.0.2/grid/bin/afddriverstate version /u01/app/12.1.0.2/grid/bin/afddriverstate installed /u01/app/12.1.0.2/grid/bin/afddriverstate loaded $ /sbin/acfsutil info fs /u01/app/12.1.0.2/grid/bin/asmcmd showclustermode /u01/app/12.1.0.2/grid/bin/asmcmd volinfo --all /u01/app/12.1.0.2/grid/bin/asmcmd lsdg
Arrêter du cluster GRID
Avant de dé-configurer le cluster, vous devez arrêter le cluster sur tous les nœuds :
crsctl stop cluster -all crsctl stop crs (sur chaque noeud du cluster)
Dé-configuration de la couche GRID
1. Si l’OCR et Voting Disks ne sont pas dans l’ASM ou si l’OCR et Voting Disks sont sur ASM et qu’il n’y a pas de données utilisateur dans l’OCR et Voting Disks :
Sur tous les nœuds distants, en tant que root :
/u01/app/12.1.0.2/grid/crs/install/rootcrs.sh -deconfig -force -verbose
Une fois la commande ci-dessus est terminée sur les nœuds distants, sur le nœud local, en tant que root:
/u01/app/12.1.0.2/grid/crs/install/rootcrs.sh -deconfig -force -verbose -lastnode
2. Si l’OCR et Voting Disks sont sur ASM et qu’il existe des données utilisateur dans l’OCR et Voting Disks :
Sur tous les nœuds distants, en tant que root :
/u01/app/12.1.0.2/grid/crs/install/rootcrs.sh -deconfig -force -verbose
Une fois la commande ci-dessus terminée sur les nœuds distants, sur le nœud local, en tant que root :
/u01/app/12.1.0.2/grid/crs/install/rootcrs.sh -deconfig -force -verbose -keepdg -lastnode
Sur cet article, je vais traiter le deuxième cas (OCR et Voting Disks sont sur ASM et il existe des données utilisateur dans l’OCR et Voting Disks) :
Création d’un nouveau GRIDDISK
Création d’un nouveau GRIDDISK sur l’ensemble des storage cells de l’exadata :
CREATE GRIDDISK ALL HARDDISK PREFIX=DATAREC1, size=300G
Configuration de la couche GRID 12cR1
Le fichier Grid-racnode1.oracle.com.rsp est auto-généré au moment du déploiement de la couche GRID avec l’outil onecommand, exemple de l’emplacement du fichier « onecommand/linux-x64/WorkDir/Grid-racnode1.oracle.com.rsp »
Un exemple de l’output du fichier rsp généré (vous devez changer tous les occurrences DATA1 en DATAREC1)
oracle.install.responseFileVersion=/oracle/install/rspfmt_crsinstall_response_schema_v12.1.0
ORACLE_HOSTNAME=racnode1.oracle.com
INVENTORY_LOCATION=/u01/app/oraInventory
SELECTED_LANGUAGES=all_langs
oracle.install.option=CRS_CONFIG
ORACLE_BASE=/u01/app/grid
ORACLE_HOME=/u01/app/12.1.0.2/grid
oracle.install.asm.OSDBA=asmdba
oracle.install.asm.OSOPER=asmoper
oracle.install.asm.OSASM=asmadmin
oracle.install.crs.config.gpnp.scanName=racnode-scan
oracle.install.crs.config.gpnp.scanPort=1530
oracle.install.crs.config.ClusterType=STANDARD
oracle.install.crs.config.clusterName=racnode-clu
oracle.install.crs.config.gpnp.configureGNS=false
oracle.install.crs.config.autoConfigureClusterNodeVIP=false
oracle.install.crs.config.gpnp.gnsOption=CREATE_NEW_GNS
oracle.install.crs.config.clusterNodes=racnode3.oracle.com:racnode03-vip.oracle.com,racnode4.oracle.com:racnode04-vip.oracle.com
oracle.install.crs.config.networkInterfaceList=bondeth0:192.168.0.0:1,ib0:192.168.240.0:2,ib1:192.168.240.0:2
oracle.install.crs.config.storageOption=LOCAL_ASM_STORAGE
oracle.install.crs.config.sharedFileSystemStorage.ocrRedundancy=NORMAL
oracle.install.crs.config.useIPMI=false
oracle.install.asm.SYSASMPassword=We1come$
oracle.install.asm.diskGroup.name=DATA1
oracle.install.crs.config.sharedFileSystemStorage.votingDiskRedundancy=NORMAL
oracle.install.crs.config.ignoreDownNodes=false
oracle.install.config.managementOption=NONE
oracle.install.asm.diskGroup.redundancy=HIGH
oracle.install.asm.diskGroup.AUSize=4
oracle.install.asm.monitorPassword=We1come$
[ConfigWizard]
oracle.install.asm.useExistingDiskGroup=false
[ConfigWizard]
Lancer le script config.sh :
/u01/app/12.1.0.2/grid/crs/config/config.sh -silent -responseFile /home/grid/Grid-racnode1.oracle.com.rsp
Exécuter le script root.sh
Le script root.sh doit être lancé sur le premier nœud et attendre la fin de son exécution. Puis vous pouvez le démarrer sur tous les autres nœuds sauf le dernier, attendez qu’il se termine sur tous les nœuds; et enfin l’exécuter sur le dernier nœud.
/u01/app/12.1.0.2/grid/root.sh
#### Vous pouvez rencontrer une erreur de script root.sh sur les noeuds distants (Doc ID 1919825.1) : CLSRSC-507: The root script cannot proceed on this node <node-n> (Doc ID 1919825.1) The workaround is to modify /u01/app/12.1.0.2/grid/crs/install/crsutils.pm as following: sub isOcrKeyExists return TRUE; <---
Récupérer les diskgroups
Une fois l’installation est terminée, vous devez récupérer les données utilisateurs qui étaient sur les diskgroups DATA1 et RECO1.
En tant que grid :
asmcmd mount DATA1 asmcmd mount RECO1
Démarrer le diskgroup sur les nœuds distants :
srvctl start diskgroup -diskgroup DATA1 -node racnode2,racnode3,racnode4 srvctl start diskgroup -diskgroup RECO1 -node racnode2,racnode3,racnode4
Changer l’emplacement de l’OCR et VOTING DISK
OCR :
/u01/app/12.1.0.2/grid/bin/ocrconfig -add +DATA1 /u01/app/12.1.0.2/grid/bin/ocrconfig -delete +DATAREC1
Voting disk :
/u01/app/12.1.0.2/grid/bin/crsctl replace votedisk +DATA1
Supprimer le diskgroup temporaire
srvctl stop diskgroup -diskgroup DATAREC1 srvctl remove diskgroup -diskgroup DATAREC1
Création de ressources cluster
Quelques exemples de recréation des ressources cluster.
1. Création de la ressource listener infiniband :
En tant que root :
srvctl add network -k 2 -S 192.168.240.0/255.255.255.0/ib0\|ib1 srvctl add vip -n racnode1 -A racnode1-ib-vip/255.255.255.0/ib0\|ib1 -k 2 srvctl add vip -n racnode2 -A racnode2-ib-vip/255.255.255.0/ib0\|ib1 -k 2 srvctl add vip -n racnode3 -A racnode3-ib-vip/255.255.255.0/ib0\|ib1 -k 2 srvctl add vip -n racnode4 -A racnode4-ib-vip/255.255.255.0/ib0\|ib1 -k 2 srvctl start vip -i racnode1-ib-vip srvctl start vip -i racnode2-ib-vip srvctl start vip -i racnode3-ib-vip srvctl start vip -i racnode4-ib-vip srvctl add scan -scanname racnode-ib-scan.oracle.com -netnum 2
En tant que grid :
srvctl add listener -listener LISTENER_IB -netnum 2 -p 1540 srvctl add scan_listener -netnum 2 -listener listener_ib -p 1541 srvctl start listener -l listener_ib srvctl start scan_listener -k 2
2. Création de la ressource database :
En tant que oracle :
srvctl add database -d DBTEST -o /u01/app/oracle/product/12.1.0.2/dbhome_1 -dbtype RAC -spfile +DATA1/DBTEST/PARAMETERFILE/spfile.657.970353407 -diskgroup DATA1,RECO1 -pwfile +DATA1/DBTEST/PASSWORD/orapwDBTEST srvctl add instance -i DBTEST1 -d DBTEST -n racnode1 srvctl add instance -i DBTEST2 -d DBTEST -n racnode2 srvctl add instance -i DBTEST3 -d DBTEST -n racnode3 srvctl add instance -i DBTEST4 -d DBTEST -n racnode4 srvctl start database -d DBTEST srvctl add service -db DBTEST -service dbtest -netnum 2 srvctl start service -db DBTEST -service dbtest
Objectif atteint !
Vous avez ré-configuré de nouveau la couche GRID 12cR1.