powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / О настройке Shared Server
12 сообщений из 12, страница 1 из 1
О настройке Shared Server
    #39357015
Фотография Scorpion_TSN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, Ув. форумчане!

Нужен совет по настройке диспетчеров в Shared Server.

Суть проблемы: есть 2 приложения, которые соединяются c БД Oracle 11G посредством shared соединений. Для этого настроен отдельный листенер и диспетчеры

Настройки диспетчеров: dispatchers=(PROTOCOL=tcp)(DISPATCHERS=2)(LISTENER=RM_LSNR)

, а также:

shared_servers=10
max_shared_servers=15

Проблема в том, что при блокировках или большой нагрузке на 1-ое приложение сессиями 1-ого приложения занимаются все 15 общих серверов и запросы сессий 2-ого приложения тоже стоят в очереди. И наоборот. Можно ли как-то указать, что 1-ый диспетчер имеет право работать с 3-мя общими серверами, а 2-ой - с 7 серверами. Ну или какой-то другой вариант для деления ресурсов сервера между 2-мя приложениями. Оба приложения работают на одной БД, но одно из них более критично, чем другое.

Спасибо.
...
Рейтинг: 0 / 0
О настройке Shared Server
    #39357026
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Раскидайте по сервисам
...
Рейтинг: 0 / 0
О настройке Shared Server
    #39357035
Фотография Scorpion_TSN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я тоже об этом подумал! Но разве это решит проблему? Ведь при нагрузке на одно приложение, оно (приложение) займет все сводные сервера. И для сессий 2-го приложения свободных серверов не окажется...
...
Рейтинг: 0 / 0
О настройке Shared Server
    #39357044
Фотография Scorpion_TSN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...займет все свободные сервера....
...
Рейтинг: 0 / 0
О настройке Shared Server
    #39357136
Scorpion_TSN,

диспечера не работают с серверами, а просто кладут запросы в virtual circuit откуда свободные процессы выбирают себе занятие.
Если не хочеш добавить еще серверов, то настрой ТНСы у клиентов без указания типа сервера чтобы при нехватке свободных серверов клиенты коннектились в dedicated
...
Рейтинг: 0 / 0
О настройке Shared Server
    #39357505
д0k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне кажется, ИМХО, что Shared Server-ы - припарка для 32 разрядных
платформ.
С появлением 64 разрядных систем геморой с ограничениями, накладываемыми
Shared Server -ой конфигурацией стал дороже , чем память в 64 разрядном сервере.
...
Рейтинг: 0 / 0
О настройке Shared Server
    #39357516
д0k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Где то читал , что шаред серверы в конце 90 годов ( в районе 8 версии)
были попыткой рефакторить и переписать
ядро базы для лучшей латентности ОЛТП, но потом на нее забили ,
и работа не была доведена до конца. в результате получилось ни туды ни сюды.
...
Рейтинг: 0 / 0
О настройке Shared Server
    #39357580
Фотография SeaGate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Scorpion_TSN,

DBRM(active_sess_pool_p1) + dispatchers/service
Развертываем
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
SQL> alter system set dispatchers='(SER=srv1)(IND=1)' dispatchers='(SER=srv2)(IND=2)' shared_servers=10 comment='dbrm_test_shared_srv_limit';

System altered.

SQL> exec dbms_resource_manager.clear_pending_area

PL/SQL procedure successfully completed.

SQL> 
SQL> exec dbms_resource_manager.create_pending_area

PL/SQL procedure successfully completed.

SQL> 
SQL> exec dbms_resource_manager.delete_plan( 'DBRM_TEST_SHARED_SRV_LIMIT')

PL/SQL procedure successfully completed.

SQL> exec dbms_resource_manager.delete_consumer_group( 'GROUP_SRV1')

PL/SQL procedure successfully completed.

SQL> exec dbms_resource_manager.delete_consumer_group( 'GROUP_SRV2')

PL/SQL procedure successfully completed.

SQL> 
SQL> exec dbms_resource_manager.create_consumer_group( 'GROUP_SRV1')

PL/SQL procedure successfully completed.

SQL> exec dbms_resource_manager.create_consumer_group( 'GROUP_SRV2')

PL/SQL procedure successfully completed.

SQL> 
SQL> exec dbms_resource_manager.create_plan( 'DBRM_TEST_SHARED_SRV_LIMIT')

PL/SQL procedure successfully completed.

SQL> 
SQL> exec dbms_resource_manager.create_plan_directive( -
>   'DBRM_TEST_SHARED_SRV_LIMIT', -
>   'GROUP_SRV1', -
>   active_sess_pool_p1=> 2)

PL/SQL procedure successfully completed.

SQL> 
SQL> exec dbms_resource_manager.create_plan_directive( -
>   'DBRM_TEST_SHARED_SRV_LIMIT', -
>   'GROUP_SRV2', -
>   active_sess_pool_p1=> 3)

PL/SQL procedure successfully completed.

SQL> 
SQL> exec dbms_resource_manager.create_plan_directive( -
>   'DBRM_TEST_SHARED_SRV_LIMIT', -
>   'OTHER_GROUPS')

PL/SQL procedure successfully completed.

SQL> 
SQL> exec dbms_resource_manager.set_consumer_group_mapping( -
>   dbms_resource_manager.service_name, -
>   'srv1', -
>   'GROUP_SRV1')

PL/SQL procedure successfully completed.

SQL> exec dbms_resource_manager.set_consumer_group_mapping( -
>   dbms_resource_manager.service_name, -
>   'srv2', -
>   'GROUP_SRV2')

PL/SQL procedure successfully completed.

SQL> 
SQL> exec dbms_resource_manager.validate_pending_area

PL/SQL procedure successfully completed.

SQL> 
SQL> exec dbms_resource_manager.submit_pending_area

PL/SQL procedure successfully completed.

SQL> 
SQL> drop user tc cascade;

User dropped.

SQL> 
SQL> grant connect to tc identified by tc;

Grant succeeded.

SQL> grant execute on dbms_lock to tc;

Grant succeeded.

SQL> 
SQL> exec dbms_resource_manager_privs.grant_switch_consumer_group( 'TC', 'GROUP_SRV1', false)

PL/SQL procedure successfully completed.

SQL> exec dbms_resource_manager_privs.grant_switch_consumer_group( 'TC', 'GROUP_SRV2', false)

PL/SQL procedure successfully completed.

SQL> 
SQL> alter system set resource_manager_plan=dbrm_test_shared_srv_limit;

System altered.


Создадим для теста пару скриптов:
один
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
#!/usr/bin/env bash

SRV=$1
SESS=$2
SLEEP=$3

for i in $(seq 1 $SESS) ;
do
  SQLPATH="" sqlplus tc/tc@\'localhost/$SRV\' <<_EOF &
exec dbms_lock.sleep( $SLEEP)

_EOF
done


Два:
Код: plsql
1.
2.
bash dbrm_test.sh srv1 15 5 &
bash dbrm_test.sh srv2 15 5 &


Запускаем, смотрим.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
SQL> select service_name, status, state, event from v$session where username='TC' order by service_name, status;

SERVICE_NAME                   STATUS   STATE               EVENT
------------------------------ -------- ------------------- ------------------------------
srv1                           ACTIVE   WAITING             PL/SQL lock timer
srv1                           ACTIVE   WAITING             PL/SQL lock timer
srv1                           INACTIVE WAITING             SQL*Net message from client
srv1                           INACTIVE WAITING             SQL*Net message from client
srv1                           INACTIVE WAITING             SQL*Net message from client
srv1                           INACTIVE WAITING             SQL*Net message from client
srv1                           INACTIVE WAITING             SQL*Net message from client
srv1                           INACTIVE WAITING             SQL*Net message from client
srv1                           INACTIVE WAITING             SQL*Net message from client
srv1                           INACTIVE WAITING             SQL*Net message from client
srv1                           INACTIVE WAITING             SQL*Net message from client
srv1                           INACTIVE WAITING             SQL*Net message from client
srv1                           INACTIVE WAITING             SQL*Net message from client
srv1                           INACTIVE WAITING             SQL*Net message from client
srv1                           INACTIVE WAITING             SQL*Net message from client
srv2                           ACTIVE   WAITING             PL/SQL lock timer
srv2                           ACTIVE   WAITING             PL/SQL lock timer
srv2                           ACTIVE   WAITING             PL/SQL lock timer
srv2                           INACTIVE WAITING             SQL*Net message from client
srv2                           INACTIVE WAITING             SQL*Net message from client
srv2                           INACTIVE WAITING             SQL*Net message from client
srv2                           INACTIVE WAITING             SQL*Net message from client
srv2                           INACTIVE WAITING             SQL*Net message from client
srv2                           INACTIVE WAITING             SQL*Net message from client
srv2                           INACTIVE WAITING             SQL*Net message from client
srv2                           INACTIVE WAITING             SQL*Net message from client
srv2                           INACTIVE WAITING             SQL*Net message from client
srv2                           INACTIVE WAITING             SQL*Net message from client
srv2                           INACTIVE WAITING             SQL*Net message from client
srv2                           INACTIVE WAITING             SQL*Net message from client

30 rows selected.

SQL> select service_name, status, state, event from v$session where username='TC' order by service_name, status;

SERVICE_NAME                   STATUS   STATE               EVENT
------------------------------ -------- ------------------- ------------------------------
srv1                           ACTIVE   WAITING             PL/SQL lock timer
srv1                           ACTIVE   WAITING             PL/SQL lock timer
srv1                           INACTIVE WAITING             SQL*Net message from client
srv1                           INACTIVE WAITING             SQL*Net message from client
srv1                           INACTIVE WAITING             SQL*Net message from client
srv1                           INACTIVE WAITING             SQL*Net message from client
srv1                           INACTIVE WAITING             SQL*Net message from client
srv1                           INACTIVE WAITING             SQL*Net message from client
srv1                           INACTIVE WAITING             SQL*Net message from client
srv1                           INACTIVE WAITING             SQL*Net message from client
srv1                           INACTIVE WAITING             SQL*Net message from client
srv1                           INACTIVE WAITING             SQL*Net message from client
srv1                           INACTIVE WAITING             SQL*Net message from client
srv2                           ACTIVE   WAITING             PL/SQL lock timer
srv2                           ACTIVE   WAITING             PL/SQL lock timer
srv2                           ACTIVE   WAITING             PL/SQL lock timer
srv2                           INACTIVE WAITING             SQL*Net message from client
srv2                           INACTIVE WAITING             SQL*Net message from client
srv2                           INACTIVE WAITING             SQL*Net message from client
srv2                           INACTIVE WAITING             SQL*Net message from client
srv2                           INACTIVE WAITING             SQL*Net message from client
srv2                           INACTIVE WAITING             SQL*Net message from client
srv2                           INACTIVE WAITING             SQL*Net message from client
srv2                           INACTIVE WAITING             SQL*Net message from client
srv2                           INACTIVE WAITING             SQL*Net message from client
srv2                           INACTIVE WAITING             SQL*Net message from client
srv2                           INACTIVE WAITING             SQL*Net message from client
srv2                           INACTIVE WAITING             SQL*Net message from client



Отдельно смотрим v$shared_server.
...
Рейтинг: 0 / 0
О настройке Shared Server
    #39357785
Фотография Scorpion_TSN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeaGate, Спасибо огромное!! Судя по всему - это то, что нужно!
...
Рейтинг: 0 / 0
О настройке Shared Server
    #39358144
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
д0kМне кажется, ИМХО, что Shared Server-ы - припарка для 32 разрядных
платформ.
С появлением 64 разрядных систем геморой с ограничениями, накладываемыми
Shared Server -ой конфигурацией стал дороже , чем память в 64 разрядном сервере.Вопрос, в основном, не в памяти
А в количестве процессов в OS (когда у планировшика начинало крышу сносить)
Ну и накладные расходы на создание каждого процесса в Oracle
Это было достаточно актуально для двузвенки

Для WEB-приложений, конечно, лучше использовать пул.
...
Рейтинг: 0 / 0
О настройке Shared Server
    #39358145
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeaGate...Красиво

Ну и мапить можно еще и по всяким APPLICATION_INFO, если приложение это устанавливает -- тогда можно ограничивать только заведомо ресурсоемкие операции
...
Рейтинг: 0 / 0
О настройке Shared Server
    #39358482
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
д0kГде то читал , что шаред серверы в конце 90 годов ( в районе 8 версии)
были попыткой рефакторить и переписать
ядро базы для лучшей латентности ОЛТП, но потом на нее забили ,
и работа не была доведена до конца. в результате получилось ни туды ни сюды.

то что у ТС 15 сессий - это совершенно ни о чем, однако есть упоротые вендоры, которые про пул соединений ничего слыхом не слышали, в итоге получается, что помимо того, что на одного пользователя приходится одна сессия в базе, оно еще постоянно открывает/закрывает соединения, а где-то при тысячах 10 таких "пользователей" базе становится ой как плохо.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / О настройке Shared Server
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]