Отправляет email-рассылки с помощью сервиса Sendsay

СУБД Oracle "с нуля"

  Все выпуски  

Выпуск 4.


Информационный Канал Subscribe.Ru


Выпуск 4.

        Здравствуйте, дорогие подписчики! Очень рад очередной встрече с Вами.

Давайте проверим свои знания, ответив на следующие вопросы.

        1) Что такое триггер?
        2) Что такое транзакция?
        3) Какие категории файлов включает физический уровень БД Oracle?
        4) В каком табличном пространстве хранится словарь данных?
        5) Какая разница между сегментом, экстентом и блоком данных?

На эти вопросы очень просто ответить, внимательно прочитав предыдущий выпуск.

ЭКЗЕМПЛЯР ORACLE

        Экземпляр Oracle состоит из процессов и разделяемой памяти, необходимой
для доступа к информации в БД. Если копнуть чуть глубже, то экземпляр
составляют пользовательские процессы, фоновые процессы Oracle и разделяемая
область памяти, которую используют все эти процессы.
        Что же представляет собой разделяемая память (shared memory)? Oracle
использует разделяемую память в разных целях: как кэширование данных и индексов,
так и хранение программного кода. Разделяемая память делится на несколько частей
(или структур памяти). Основными структурами памяти Oracle являются Системная
Глобальная Область (System Global Area или SGA) и Программная Глобальная Область
(Program Global Area или PGA). Рассмотрим SGA и PGA более подробно.

Системная Глобальная Область (SGA)

        SGA – это область разделяемой памяти, которую Oracle использует для
хранения данных и управляющей информации одного конкретного экземпляра Oracle.
SGA размещается в памяти при запуске экземпляра Oracle и освобождает память при
останове. Каждый запущенный экземпляр Oracle имеет свою собственную SGA.
Информация в SGA состоит из следующих компонентов (каждый из которых создается
в
памяти при запуске экземпляра):

        - кэш буферов БД – здесь хранятся последние открытые блоки данных. Эти
        блоки могут содержать данные, которые изменились, но еще не были
        записаны на диск (грязные блоки); данные, которые не изменялись либо
        были записаны на диск после изменения (чистые блоки). Так как кэш
        буферов БД хранит блоки данных на основе алгоритма последних
        используемых блоков, то наиболее активно используемые блоки постоянно
        остаются в памяти (тем самым, снижая дисковый ввод/вывод и увеличивая
        производительность системы).

        - буфер журнала изменений – хранит данные об изменениях БД. Буфер
        журнала изменений записывается в файл журнала изменений настолько быстро
        и эффективно, насколько это возможно. Помните, что журнал изменений
        используется для восстановления экземпляра СУБД Oracle в случае
        сбоя системы.

        - разделяемый пул – Это область SGA, в которой хранятся такие структуры
        разделяемой памяти, как разделяемые SQL-области в библиотечном кэше и
        внутренняя информация словаря данных. Разделяемый пул важен, потому что
        недостаточный объем памяти, выделенный для него, может привести к
        деградации производительности всей системы. Разделяемый пул состоит из
        библиотечного кэша и кэша словаря данных.

        Библиотечный кэш используется для хранения разделяемых SQL. Здесь для
каждого уникального SQL-выражения строиться дерево разбора строк и план
исполнения, которые кэшируются (т.е. сохраняются в библиотечном кэше). Если
несколько приложений отправляют одинаковые SQL-выражения, то для ускорения
работы используется разделяемая SQL-область (так как используются уже
разобранные строки и готовый план исполнения, то происходит экономия времени).

        Кэш словаря данных содержит набор таблиц и представлений, используемых
в качестве ссылок к БД Oracle. Здесь храниться информация о логической и
физической структуре БД. Словарь данных содержит следующую информацию:

        - пользовательская информация (например, пользовательские привилегии)
        - ограничения целостности, определенные для таблиц БД
        - имена и типы данных всех столбцов таблиц БД
        - информация об объеме памяти, определенном и используемом объектами
        схемы данных

        Oracle часто обращается к словарю данных при разборе SQL-выражений.
Эти обращения составляют сущность работы Oracle. Узкие места в словаре данных
влияют работу всех пользователей системы Oracle. Поэтому Вы всегда должны быть
уверены, что объем памяти, определенный для словаря данных, достаточно велик
для кэширования данных. Если кэш словаря данных мал, то Вы заметите
значительное снижение производительности. Когда под кэш словаря данных Вы
определите достаточный объем памяти, существенных проблем с производительностью
быть не должно.

Программная Глобальная Область (PGA)

        Программная Глобальная Область – это такая область памяти, в которой
хранятся данные и управляющая информация о серверных процессах Oracle. Размер
и содержание PGA определяется опциями, которые Вы указываете при инсталляции
Oracle. Эта область состоит из следующих компонентов:

        - пространство стека – это память, хранящая переменные сеансов,
        массивы сеансов и т.д.

        - информация сеанса – если Oracle работает не в мультинитевом режиме,
        то информация сеанса хранится в PGA. В противном случае, информация
        сеанса хранится в SGA.

        - приватная SQL-область – это часть PGA, где хранятся связанные
        переменные и буферы реального времени.

ПРОЦЕССЫ

        Процесс (или нить) – это механизм выполнения программного кода,
который может выполняться незаметно для пользователя. Кроме того, несколько
процессов могут работать одновременно. В разных операционных системах и на
разных платформах они могут называться по-разному (процессы, нити, демоны
и т.д.), но, в сущности, одинаковы. СУРБД Oracle работает с двумя видами
процессов: пользовательские процессы и процессы Oracle (также известные как
фоновые или теневые). В некоторых операционных системах (таких как
Windows NT) процессы действительно являются нитями, но, чтобы не путаться
в понятиях, будем называть их просто “процессами”.

Пользовательские процессы

        Пользовательские (клиентские) процессы – это пользовательские
соединения с СУРБД. Пользовательский процесс управляет вводом и
взаимодействует с серверными процессами Oracle через программный интерфейс
Oracle. Пользовательский процесс используется также для выдачи информации
пользователю, и, при необходимости, представляет ее в более удобной форме.

Процессы Oracle

        Процессы Oracle выполняют функции для пользовательских процессов. Могут
быть разбиты на две группы: серверные процессы (выполняющие функции для
активных процессов) и фоновые процессы (выполняют функции СУРБД в целом).

        Серверные процессы (теневые) взаимодействуют между процессами
пользовательскими и Oracle, исполняя пользовательские запросы. Например, если
пользовательский процесс запрашивает часть данных, которых еще нет в SGA, то
теневой процесс несет ответственность за чтение блоков данных из БД в SGA.
Между пользовательским и теневым процессом возникает связь один-к-одному
(конфигурация выделенного сервера), хотя один теневой процесс может
одновременно взаимодействовать с несколькими пользовательскими (конфигурация
мультинитевого сервера), экономя системные ресурсы.

        Фоновые процессы используются для выполнения разнообразных задач СУРБД
Oracle. Эти задачи варьируются от взаимодействия с экземпляром Oracle до записи
грязных блоков на диск. Далее представлены девять фоновых процессов Oracle:

        - DBWR (DataBase Writer) – ответственен за запись грязных блоков из
        блоковых буферов БД на диск. Когда транзакция изменяет информацию в
        блоке данных, этот блок данных не обязан быть немедленно записан на
        диск. Следовательно, DBWR может записывать данные на диск способом
        более эффективным, чем запись всех изменений по отдельности. DBWR
        обычно записывает данные тогда, когда они уже нужны для чтения.
        Записываются также те данные, которые были недавно использованы. Для
        систем с асинхронным вводом/выводом достаточно одного процесса DBWR.
        Для остальных систем можно значительно увеличить производительность,
        создав несколько процессов DBWR.

        - LGWR (LoG Writer) – записывает данные из журнального буфера в
        журнал изменений.

        - CKPT (ChecK PoinT) – дает сигнал процессам DBWR о необходимости
        выполнения контрольной точки и обновления всех файлов данных и
        управляющих файлов. Контрольная точка – это событие, когда все
        измененные буферы БД записываются на диск. CKPT – это не обязательный
        процесс. Если процесс CKPT не запущен, то его работу принимает на
        себя LGWR.

        - PMON (Process MONitor) – используется для поддержания остальных
        процессов и перезапуска преждевременно погибших :) Также PMON очищает
        неиспользуемые области буферов и освобождает те ресурсы, которые могут
        быть еще заняты. Ответственен за перезапуск всех зависших процессов
        и диспетчеров.

        - SMON (System MONitor) – выполняет восстановление экземпляра при его
        запуске. Это включает очистку временных сегментов и восстановление
        незаконченных транзакций. А также дефрагментирует БД.

        - RECO (RECOvery) – очищает незаконченные транзакции в распределенной
        БД. Выполняет фиксацию или откат спорных транзакций.

        - ARCH (ARCHiver) – копирует файлы журнала изменений при их заполнении.
        ARCH активен только в том случае, если СУРБД работает в режиме
        ARCHIVELOG. Если система не работает в этом режиме, то возможны ситуации,
        в которых не удастся восстановить систему после сбоя. В некоторых
        случаях все же можно работать и в режиме NOARCHIVELOG.

        - LCKn (Parallel Server LoCK) – до десяти процессов (где n – от 0 до 9)
        могут использоваться при работе сервера в параллельном режиме. Выполняют
        функции межэкземплярной блокировки.

        - Dnnn (Dispatcher) – при работе сервера в мультинитевом режиме, то
        существует хотя бы один диспетчерский процесс, ответственный за каждый
        протокол взаимосвязи. Диспетчерские процессы организуют взаимодействие
        между пользовательскими и разделяемыми серверными процессами.

На этом четвертый выпуск закончен. До новых встреч!

Всегда Ваш – Lemon
lemon@donmetal.ru

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное