DeepEdit!

Программирование баз данных на Oracle, техническая документация, литература, статьи и публикации

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

Процесс сервера

Последний рассматриваемый процесс называется процессом сервера. Неко-
торые предпочитают называть его теневым процессом. Каждое подключающее-
ся к базе данных Oracle приложение (процесс пользователя) получает этот
процесс, создаваемый от его имени. Каждый раз, когда запускается        и
выполняется подключение к базе данных, стартует еще один такой процесс. Он
является одним из пользователей, если только не задействована конфигурация
Oracle MTS.
Если Oracle конфигурируется в режиме MTS, каждый процесс пользователя
взаимодействует с процессом диспетчера (один диспетчер может взаимодейст-
вовать с несколькими        хранящим операторы SQL для обработ-
ки в 

очереди запросов. 

Коллективно используемый процесс сервера непрерывно
проверяет очередь запросов, обрабатывает операторы SQL (как это будет объ-
яснено позже) и сохраняет результаты в 

очереди ответов. 

Процессы диспетчера
постоянно проверяют очередь ответов, и как только будет получен результат,
они немедленно отправят его назад тому пользовательскому процессу, который
запрашивал эти результаты.
Процесс сервера (в        режиме Oracle) выполняет
для пользователя всю работу. В среде выделенного сервера для каждого подклю­чения выделяется один из таких процессов, которые просто ожидают, когда из
приложения будут посланы какие-либо распоряжения (операторы SQL). Про­цесс сервера читает блоки из файлов данных (если только они к этому времени не находятся в оперативной памяти), манипулирует данными, содержащимися в блоках базы данных, и в соответствии с запросом возвращает данные. Наконец, это тот процесс, которому требуется помощь, потому что именно он использует ресурсы системы.
Ниже приведен пример выходных данных системы UNIX, в которой выполня­ется база данных Oracle. В этих выходных данных показаны фоновые процессы -процесс сервера и прикладной процесс
Замечание
Процесс SQL*Plus не будет указан в выходных данных, если он запущен как приложение с клиентской машины. Отображаемый в приводимых выходных данных процесс SQL*Plus запущен в рамках сеанса эмуляции терминала (telnet) хост-машины, на которой резидентно расположена база данных Oracle.
□ oracle
15956
1
0
11:: 23
?
00
•01
ora_pmon_oradev
oracle
15958
1
0
11 :23
9
00
00:00
ora_dbw0_oradev
oracle
15960
1
0
11:23
9
00
00:00
ora_lgwr_oradev
oracle
15962
1
0
11:23
9
00
00
ora_ckpt_oradev
oracle
15964
1
0
23
9
00
00 06
ora_smon_oradev
oracle
15966
1
0
23
?
00
00
ora_reco_orade,v
oracle
16032
15939
0
10
pts/1
00
01
sqlplus
oracle
16033
16032
1
14: 10
9
00
00:02
oracleoradev
(DESCRIPTION







Вы заметили после просмотра этой архитектурной информации, как измене-
ние, сделанное в одной области, потенциально влияет на производительность в
других областях? Кроме того, становится понятно, что узкие места, переживае-
мые основными фоновыми процессами, могут        распространиться на
всю систему.
Представьте, что DBWR не имеет возможности записывать грязные буферы на диск с той скоростью, которая обеспечивала бы наличие свободных буферов, доступных для процессов сервера. Рассмотрите, что произойдет, если LGWR не сможет достаточно быстро сбрасывать на диск буферы протокола. Все эти ситу­ации создают возможности для возникновения узких мест, а, значит, и для на­стройки. Но проактивное (упреждающее) конфигурирование экземпляра Oracle и использование методологии, обсуждавшейся в главе "Метод, стоящий за безумием", поможет тратить время и системные ресурсы более благоразум­ным образом. Мы не хотим, чтобы пользователи вслепую пытались выделять па­мять для одной или нескольких структур в SGA Oracle и расстраивались из-за производительности. Мы хотим, чтобы проблему определили, используя для этого метод событий ожидания, спланировали решение, реализовали а за­тем проверили. Нужно прекратить просто подбрасывать Oracle дополнитель­ную память, даже если раньше дело шло именно так.
Программная глобальная область (PGA, Program Global Area)
Когда на рис. 5.1 обнаружилась надпись PGA, вы могли подумать, что она обозначает Ассоциацию профессиональных игроков в гольф (Professional Gol­fers Association). Но ваше предположение 

слишком далеко 

от Oracle. PGA, или
программная глобальная область - это частный фрагмент памяти для процесса
сервера, состоящий из трех частей: пространство стека, состояние курсора и
данные сеанса пользователя. На самом деле здесь нет ничего глобального (по
крайней мере, до тех        пока вы не        режим Oracle MTS, при исполь-
зовании которого части PGA действительно становятся глобальными).
В пространстве стека присутствуют значения переменных, скаляров и кон­стант, используемых сеансом пользователя. Состояние курсора содержит ин­формацию о курсоре (открыт, закрыт, постоянный или нет, сведения об-обработке и т. д.). В данных пользователя наряду с другой информацией отража­ется текущее состояние сеанса, ID текущей транзакции (если существует), но­мер текущего сегмента отката (если имеется) и пространство для выполнения сортировок в памяти (если оно выделено).

 









jAntivirus