- •Структуры программных средств Oracle
- •Серверы и экземпляры баз данных
- •Запуск и остановка сервера
- •Авария сервера
- •Параллельный сервер и высокая степень доступности
- •Соединения сервера
- •Процессы Oracle8
- •Серверные фоновые процессы
- •Процесс записи в базу данных (dbwr)
- •Процесс записи в журнал (lgwr)
- •Процесс архивации (arch)
- •Процесс контрольной точки (ckpt)
- •Процесс системного монитора (smon)
- •Процесс монитора процессов (pmon)
- •Отдельные и многопоточные фоновые процессы
- •Различные архитектуры для поддержки соединений пользователей
- •Архитектура клиент/сервер
- •Архитектура процессов, специфичная для Oracle Выделенные серверы
- •Многопоточные серверы
- •Архитектура процесса однозадачного сервера
- •Области памяти и кэширование данных
- •Кэш-попадания, кэш-промахи и кэш-перезагрузки
- •Области памяти Oracle8
- •Буферный кэш
- •Размер буферного кэша
- •Разделяемый пул
- •Библиотечный кэш и разделяемые sql-операторы
- •Словарный кэш
- •Организация сети Oracle8 и Net8
- •Transparent Network Substrate (tns) и другие уровни Net8
- •Соединения, инициаторы и адресаты tns
- •Пулинг соединений
- •Мультиплексирование
- •Прослушивающий tns-процесс
- •Прослушивающие web-процессы
- •Tns-адресация
- •127.0.0.1 Localhost
- •128.126.50.100 Alitest1.Animatedlearning.Com alitest1
- •128.126.50.101 Client1.Animatedlearning.Com client1
- •128.126.50.100 Alitest1.Animatedlearning.Com oranamesrvr0
- •Имена Oracle
- •Средство многопротокольного обмена
- •Навигатор
- •Менеджер соединений
- •Линии перекачки данных
- •Конфигурация Net8
Архитектура процесса однозадачного сервера
В средах, где используются хост-машины, для установления сеансов связи с хост-компьютером применяются терминалы ввода/вывода или эмуляторы терминалов. С помощью сеанса, установленного операционной системой, пользователь может работать с выбранным клиентским приложением и соединяться с экземпляром базы данных на одном и том же компьютере - между внутренним и внешним компонентами приложения в этом случае нет сети.
Для поддержки таких сред в Oracleиспользуется архитектура процесса однозадачного сервера(single-task server process architecture),которая представлена на рис. 6.
Однозадачный процесс эффективен в среде, созданной на основе хост-компьютера, так как в этом случае как клиентскую, так и серверную часть приложения выполняет лишь один процесс. Однако однозадачную конфигурацию Oracleподдерживают не все операционные системы: ее могут применять только те из них, которые обеспечивают надлежащую защиту границы между клиентской и серверной программами. Например, операционная системаVAXVMSкомпанииDigitalможет поддерживать однозадачную конфигурацию для соединений в среде хост-машины, а большинство серверовUNIX- нет; вместо этого для поддержки как соединений клиент/сервер, так и соединений в среде хост-машин большинство серверовUNIXдолжно использовать конфигурацию многопоточного или выделенного сервера.
Области памяти и кэширование данных
В любой компьютерной системе обращение к диску неизбежно. Почему? Чтобы сохранять данные, компьютер должен записывать их на диск, а чтобы затем их выбирать - считывать информацию с диска. Операции дискового ввода/вывода обычно принадлежат к числу самых медленных компьютерных операций. Поэтому, чем меньше обращений к диску, тем быстрее функционируют компьютер и приложения, которые его используют.
Чтобы минимизировать число обращений к диску и ускорить работу компьютерных систем, приложения обычно создают области оперативной памяти (RAM - random access memory),в которых временно кэшируются(cache)данные, хранимые на диске. Приложение может работать с данными в кэше памяти практически без задержек и использовать ресурсоёмкие операции обращения к диску только при необходимости или когда это наиболее эффективно. Применяя кэш памяти, приложение и система в целом функционируют намного быстрее.
Кэш-попадания, кэш-промахи и кэш-перезагрузки
Перед тем как перейти к рассмотрению областей памяти, создаваемых и используемых экземплярами Oracle, полезно чуть подробнее ознакомиться с кэшированием данных. На рис. 7 проиллюстрированы основные концепции этого процесса.
Кэш-попадание (cache hit илиcache get)происходит в том случае, когда приложение запрашивает данные, уже находящиеся в кэше памяти. Кэш-попадания полезны, так как позволяют обойтись без обращения к диску в процессе обработки запрошенных данных. Кэш-промах(cache miss)происходит тогда, когда приложение запрашивает данные, которых в кэше нет, так что для помещения их в кэш нужно обратиться к диску. Кэш-перезагрузка(cache reload)очень похожа на кэш-промах. Она происходит, когда приложение запрашивает данные, которые находились в кэше, но затем устарели и были из него удалены (записаны обратно на диск) - поэтому приложение должно опять считывать данные с диска в память. Естественно, чем меньше кэш-промахов и кэш-перезагрузок, тем меньше обращений к диску и тем лучше функционирование системы.
Кэш памяти обычно представляет собой фиксированный участок памяти, который не увеличивается и не уменьшается в размере. Поэтому существует ограничение для хранения данных в кэше. Когда кэш заполнен данными и в него нужно считать дополнительную информацию, приложение должно решить, какие блоки следует удалить из кэша, чтобы освободить место для новых данных. Для сохранения в памяти чаще всего используемых блоков данных и минимизации числа кэш-промахов и кэш-перезагрузок приложение должно применять соответствующий алгоритм кэширования (caching algorithm)и с его помощью решать, когда удалять устаревшие блоки из кэша. Широко распространен алгоритм кэширования, называемыйMRU/LRU (most-recently-used/least-recently-used caching algorithm - алгоритм кэширования "использовавшийся позже всех/ использовавшийся раньше всех).Смысл этого алгоритма заключается в том, что при его применении блоки данных, использовавшиеся позже всех, хранятся в кэше, а блоки данных, использовавшиеся раньше всех, записываются обратно на диск, когда требуется дополнительное пространство памяти.