Теневой сервис автоматически создается при создании основного сервиса, если вы укажете ключ -P PRECONNECT:
rac1-> srvctl add service -d racdb -s OLTP -P PRECONNECT -r "racdb1" -a "racdb2"
После создания сервиса OLTP автоматически будет создан сервис OLTP_PRECONNECT:
rac1-> crs_stat -p | grep oltp
NAME=ora.racdb.oltp.svc
NAME=ora.racdb.oltp_preconnect.svc
rac1->
Теневой сервис, при старте основного сервиса, автоматически запускается на резервных узлах. Поэтому shadow-сервис может существовать только тогда, когда у основного сервиса определены и "живы" резервные узлы:
rac1-> crs_stat
... ... ...
NAME=ora.racdb.oltp.svc
TYPE=ora.service.type
TARGET=ONLINE
STATE=ONLINE on rac1
NAME=ora.racdb.oltp_preconnect.svc
TYPE=ora.service.type
TARGET=ONLINE
STATE=ONLINE on rac2
... ... ...
Теперь проделаем интересный эксперимент: принудительно переместим наш сервис OLTP на узел rac2
rac1-> srvctl relocate service -d racdb -s OLTP -i racdb1 -t racdb2 -f
rac1-> crs_stat
... ... ...
NAME=ora.racdb.oltp.svc
TYPE=ora.service.type
TARGET=ONLINE
STATE=ONLINE on rac2
NAME=ora.racdb.oltp_preconnect.svc
TYPE=ora.service.type
TARGET=ONLINE
STATE=ONLINE on rac1
... ... ...
обратите внимание, что теневой сервис oltp_preconnect переехал на узел rac1, то есть произошел своеобразный "Switсh Over"!
При остановке основного сервиса, теневой сервис также автоматически останавливается.
Как использовать теневые сервисы на клиенте ?
К сожалению, пока клиент не понимает их наличие и нужно его явно конфигурировать в backup-соединении в файле tnsnames.ora:
OLTP =
(DESCRIPTION =
(FAILOVER=YES)
(ADDRESS = (PROTOCOL = TCP)(HOST = rac-scan)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = oltp.rac.com)
(FAILOVER_MODE=
(BACKUP=OLTP_PRECONNECT)
(TYPE=SELECT)
(METHOD=PRECONNECT)
)
)
)
OLTP_PRECONNECT =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac-scan)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = oltp_preconnect.rac.com)
)
)
Сделаем тестовое соединение и проверим как распределяются сессии:
C:\Work\RACDD4D\v3.1>sqlplus rscott/rtiger@oltp
SQL*Plus: Release 11.2.0.2.0 Production on Fri May 20 21:55:45 2011
Copyright (c) 1982, 2010, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, and Real Application Testing options
SQL> SELECT inst_id FROM gv$session WHERE username='RSCOTT' and program='sqlplus.exe';
INST_ID
----------
1
2
SQL> select dbms_utility.current_instance from dual;
CURRENT_INSTANCE
----------------
1
Как видите, соединение было сделано к основному сервису (первый узел), а резервное - к теневому сервису (второй узел).
Комментариев нет:
Отправить комментарий