Перенести сервис RAC на другой экземпляр
OracleRAC и GridКоманда
# 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;Что делает
Переносит работающий сервис с одного экземпляра/узла на другой; новые подключения идут на целевой экземпляр, а существующие сессии закрываются сами в течение drain_timeout.
Когда использовать
Чтобы освободить узел перед обслуживанием, вернуть сервис на preferred-экземпляр после failover или перебалансировать нагрузку.
Внимание
Перенос временный: он не меняет конфигурацию сервиса (preferred/available); при перезапуске экземпляра сервис возвращается на preferred-экземпляр. -force завершает существующие сессии; если приложение не умеет переподключаться, пользователи увидят простой.
Связанные материалы
- Проверить состояние базы данных, экземпляров и сервисов RAC через srvctl
- Остановить / запустить базу данных RAC или отдельный экземпляр через srvctl (rolling)
- Добавить сервис RAC с preferred/available-экземплярами (включая Application Continuity)
- Проверить состояние ресурсов кластера (crsctl stat res -t)
- Проверить работоспособность стека кластера, список узлов и версию Clusterware
- Проверить целостность OCR и сделать бэкап OCR (ocrcheck / ocrconfig)