DBAtlas · Atlas d'exploitation des bases de données

Déplacer un service RAC vers une autre instance

OracleRAC et Grid

Commande

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

Ouvrir dans DBAtlas →

Voir aussi