Déplacer un service RAC vers une autre instance
OracleRAC et GridCommande
# First check the current placement:
srvctl status service -db <db_unique_name> -service <service>
# Relocate by instance (sessions are drained):
srvctl relocate service -db <db_unique_name> -service <service> \
-oldinst <inst1> -newinst <inst3> -drain_timeout 120 -wait YES
# By node (policy-managed / singleton service):
srvctl relocate service -db <db_unique_name> -service <service> \
-currentnode <node1> -targetnode <node2>
# Session distribution per instance (SQL):
SELECT inst_id, service_name, COUNT(*) AS sessions
FROM gv$session
WHERE type = 'USER'
GROUP BY inst_id, service_name
ORDER BY service_name, inst_id;Ce que fait la commande
Déplace un service en cours d'exécution d'une instance/d'un nœud vers un autre ; les nouvelles connexions vont vers l'instance cible et les sessions existantes se ferment d'elles-mêmes pendant drain_timeout.
Quand l'utiliser
Pour vider un nœud avant maintenance, ramener un service sur son instance preferred après un failover, ou rééquilibrer la charge.
Attention
Le déplacement est temporaire : il ne modifie pas la configuration du service (preferred/available) ; au redémarrage de l'instance, le service revient sur son instance preferred. -force tue les sessions existantes ; si l'application ne peut pas se reconnecter, les utilisateurs subissent une interruption.
Voir aussi
- Vérifier l'état de la base, des instances et des services RAC avec srvctl
- Arrêter / démarrer une base RAC ou une seule instance avec srvctl (rolling)
- Ajouter un service RAC avec instances preferred/available (y compris Application Continuity)
- Vérifier l'état des ressources du cluster (crsctl stat res -t)
- Vérifier la santé de la pile cluster, la liste des nœuds et la version de Clusterware
- Vérifier l'intégrité de l'OCR et sauvegarder l'OCR (ocrcheck / ocrconfig)