Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 shared server в разработке  [new]
shared server
Guest
Влияет ли наличии настройки shared server (разделяемых сессий) на код приложения? Например, если клиент выполняет команду alter session set ..., после чего эта сессия обрабатывает запрос другого клиента, который не в курсе, что предыдущий выполнил alter session set... и это приводит к ошибке?

При dedicated server сессия может навредить только сама себе. Ужесточаются ли требования к разработке при включении shared server?
1 фев 17, 10:29    [20168638]     Ответить | Цитировать Сообщить модератору
 Re: shared server в разработке  [new]
Viewer
Member

Откуда: Самара
Сообщений: 5369
ещё один зомбированный20168658 нашёлся ... или тот же самый?
1 фев 17, 10:49    [20168731]     Ответить | Цитировать Сообщить модератору
 Re: shared server в разработке  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
Если один серверный процесс обрабатывает запросы нескольких сессий, это вовсе не значит, что сессии зависимые или "разделяемые".
1 фев 17, 11:16    [20168828]     Ответить | Цитировать Сообщить модератору
 Re: shared server в разработке  [new]
shared server
Guest
tru55
Если один серверный процесс обрабатывает запросы нескольких сессий, это вовсе не значит, что сессии зависимые или "разделяемые".


Можно подробнее. Если есть 10 серверных процессов, которые обрабатывают поступающие во входящую очередь запросы. Допустим, формат даты по-умолчанию dd.mm.yyyy. Один из SQL в очереди меняет его на yyyymmdd. Этот запрос берет один серверных процессов и выполняет его. После этого у 9 серверных процессов будет формат даты dd.mm.yyyy, а в одного - yyyymmdd ? Или по-другому работает?
1 фев 17, 11:44    [20168912]     Ответить | Цитировать Сообщить модератору
 Re: shared server в разработке  [new]
arlx
Guest
shared server,

по умолчанию, все под дождем носят зонтик, но ты одел капюшон, хотя дождь для всех один
1 фев 17, 11:54    [20168965]     Ответить | Цитировать Сообщить модератору
 Re: shared server в разработке  [new]
Добрый Э - Эх
Guest
shared server,

шаред сервер - это как официант в ресторане. сессии пользователей - посетители ресторана.
каждый посетитель ресторана вправе затребовать себе индивидуальный набор блюд. и даже несмотря на то, что всех этих посетителей будет обслуживать один официант, каждый из посетителей получит именно свой заказ, а не то, что до него заказал другой посетитель...
1 фев 17, 12:00    [20168989]     Ответить | Цитировать Сообщить модератору
 Re: shared server в разработке  [new]
шарит сервер
Guest
shared server
Влияет ли наличии настройки shared server (разделяемых сессий) на код приложения? Например, если клиент выполняет команду alter session set )

Сервер от сессии не отличаешь?
1 фев 17, 12:04    [20169001]     Ответить | Цитировать Сообщить модератору
 Re: shared server в разработке  [new]
Viewer
Member

Откуда: Самара
Сообщений: 5369
tru55
...серверный процесс обрабатывает запросы нескольких сессий....

shared server
клиент выполняет команду alter session...

shared server
После этого у 9 серверных процессов будет...


10 продавцов обслуживают подходяших по очереди покупателей.
Допустим по умолчанию торгуют на рубли.
Один из покупателей в очереди менят рубли на доллары.
После этого у 9 продавцов будет... да как было у каждого по 2 руки, так и останется.
В руки взял, из рук в руки отдал...
Подходи следующий. Что там у вас? Давайте ... получите.
Следующий...
Ну и что там будет у серверных продавцов.. тьфу... процесссов?
1 фев 17, 12:14    [20169029]     Ответить | Цитировать Сообщить модератору
 Re: shared server в разработке  [new]
shared server
Guest
То есть в случае, если есть 100 пользователей, они устанавливают 100 сессий к БД, и эти 100 сессий обслуживают 10 серверных процессов. Для каждой из ста сессий в БД находится свои собственные настройки, которые меняются через alter session и они никак не смешиваются. Например, одна из сессий включает трассировку и делает запрос. Этот запрос обрабатывается через серверный процесс с учетом включенной трассировки для данной сессии. После этот же серверный процесс будет выполнять запрос уже от другой сессии и так как в ней не включена трассировка, он не делает трейс. То есть серверный процесс связывает поступивший запрос в очереди с окружением сессии, которая этот запрос отправила, а следующий запрос для другой сессии связывает уже с ее окружением правильно?
1 фев 17, 13:01    [20169275]     Ответить | Цитировать Сообщить модератору
 Re: shared server в разработке  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18486
Есть состояние сессии -- оно хранится в UGA, которое, в случае shared server, в свою очередь располагается в SGA, куда имеют доступ все серверные процессы.
И есть состояние процесса -- оно хранится в PGA и никому оно кроме него и не нужно
Для выделенных процессов UGA располагается в PGA
1 фев 17, 13:04    [20169293]     Ответить | Цитировать Сообщить модератору
 Re: shared server в разработке  [new]
shared server
Guest
Спасибо за ответы, теперь понятно, что и при shared и при dedicated варианте каждая сессия влияет только на себя.

А при варианте, когда появляется промежуточное звено в виде пула установленных соединений с БД, например, web-сервер всегда держит 10 соединений. Пользователи не работают напрямую с базой, только через сервер-приложений. Возможен ли такой сценарий. Разработчик забывает для одного модуля приложения отключить отладку. Пользователь заходит в этот модуль и выполняет запрограммированный код. Этот код через одно из десяти соединений передается на БД, где исполняется, в том числе включается трассировка. После чего это же соединение выполняет запрос уже от другого пользователя, но у него же включена трассировка! То есть все запросы через это соединение будет выполняться с отладкой?
1 фев 17, 13:18    [20169365]     Ответить | Цитировать Сообщить модератору
 Re: shared server в разработке  [new]
Viewer
Member

Откуда: Самара
Сообщений: 5369
Архитектура общего сервера
1 фев 17, 13:26    [20169409]     Ответить | Цитировать Сообщить модератору
 Re: shared server в разработке  [new]
шарит сервер
Guest
shared server
Спасибо за ответы, теперь понятно, что и при shared и при dedicated варианте каждая сессия влияет только на себя.

А при варианте, когда появляется промежуточное звено в виде пула установленных соединений с БД, например, web-сервер всегда держит 10 соединений. /// То есть все запросы через это соединение будет выполняться с отладкой?

Да.
Потому что тут у тебя shared session с точки зрения веб-пользюков.
Хуже того - при типичной степени рукожопости современных веб-разработчиков, последующие будут комитить изменения в базу, на пол-пути отвалившиеся и потому наполовину внесенные кем-то предыдущим.
Короче будет весело.
Но есть лекарство - DRCP.
Посмотри на него пристально.
1 фев 17, 15:46    [20170094]     Ответить | Цитировать Сообщить модератору
 Re: shared server в разработке  [new]
shared server
Guest
шарит сервер
shared server
Спасибо за ответы, теперь понятно, что и при shared и при dedicated варианте каждая сессия влияет только на себя.

А при варианте, когда появляется промежуточное звено в виде пула установленных соединений с БД, например, web-сервер всегда держит 10 соединений. /// То есть все запросы через это соединение будет выполняться с отладкой?

Да.
Потому что тут у тебя shared session с точки зрения веб-пользюков.
Хуже того - при типичной степени рукожопости современных веб-разработчиков, последующие будут комитить изменения в базу, на пол-пути отвалившиеся и потому наполовину внесенные кем-то предыдущим.
Короче будет весело.
Но есть лекарство - DRCP.
Посмотри на него пристально.


Понятно. То есть не важно, как именно подключается сессия к серверу, она всегда сохраняет только присущий ей набор аттрибутов, состояний и окружения, которые хранятся в UGA. Если один пользователь = одна сессия, то проблем во взаимодействии не возникает. Однако, если делить сессию через сервер приложений, то код нужно писать очень внимательно, т.к. эта же сессия в дальнейшем будет выполнять запрос уже от другого пользователя и если первый пользователь изменил среду сессии, она наследуется вторым пользователем.

А размер DRCP сделан не для тех, кто не умеет держать пул сессий на сервере приложений самостоятельно? Например apache+php
1 фев 17, 16:52    [20170475]     Ответить | Цитировать Сообщить модератору
 Re: shared server в разработке  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18486
Вот с пулом подключений там все не так очевидно
1 фев 17, 17:08    [20170546]     Ответить | Цитировать Сообщить модератору
 Re: shared server в разработке  [new]
shared server
Guest
Вячеслав Любомудров
Вот с пулом подключений там все не так очевидно


А что там? пул подключений может отслеживать такие события и перед передачей запроса сессии выполнить сброс окружения в дефолтное?
2 фев 17, 09:09    [20172001]     Ответить | Цитировать Сообщить модератору
 Re: shared server в разработке  [new]
Alexey Zhidkov
Member

Откуда: Москва
Сообщений: 1256
Вячеслав Любомудров
Есть состояние сессии -- оно хранится в UGA, которое, в случае shared server, в свою очередь располагается в SGA, куда имеют доступ все серверные процессы.
И есть состояние процесса -- оно хранится в PGA и никому оно кроме него и не нужно
Для выделенных процессов UGA располагается в PGA

Ты таким ответом можешь ТСа в кому ввести :)
Зависнет на год после прочтения :)
2 фев 17, 09:21    [20172077]     Ответить | Цитировать Сообщить модератору
 Re: shared server в разработке  [new]
шарит сервер
Guest
shared server
А размер DRCP сделан не для тех, кто не умеет держать пул сессий на сервере приложений самостоятельно? Например apache+php

А DRCP - это типа очень быстро создаваемые dedicated-серверы/
То есть они де-факто работают как dedicated-server, но при этом connection создается очень-очень быстро с точки зрения клиента (в данном случае - сервера приложения).
Очень-очень быстро - потому что они предварительно подготовлены: есть пулл готовых, уже созданных под конкретную аутентификацию, выделенных (dedicated) серверов. Из этого пула серверный процесс выдается серверу приложения, когда тот создает сессию, и возвращается обратно в пул, когда сервер приложений отцепляется от базы.
То есть в отличие от dedicated-mode при установлении соединения серверный процесс не порождается (не создается), а выдается (он создан заранее), и при завершении соединения серверный процесс не уничтожается, а память его сессионная очищается и он возвращается "в стойло" для ожидания выдачи под обслуживание очередного подключения.
Это как раз спец-мода для веб-приложений, ибо процесс создания соединения в dedicated-mode - штука дорогая по ресурсам.
2 фев 17, 09:25    [20172098]     Ответить | Цитировать Сообщить модератору
 Re: shared server в разработке  [new]
шарит сервер
Guest
ПС.
Если ты будешь работать через DRCP, то тебе нет необходимости держать пулл соединений с БД в сервере приложений.
Взамен ты на каждый хит создаешь соединение с БД, а по завершению хита его убиваешь.
И это соединение - только твое, работает в рамках только одного хита, полностью изолируя хиты.
И это соединение - происходит очень быстро, и не жрет, как паровоз, память сервера БД, в отличие от подключения в режиме выделенного сервера.
2 фев 17, 09:32    [20172134]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить