Екзепляри Oracle (SGA і PGA). Сутність процесів. Користувальницькі процеси








Здрастуйте, дорогі читачі! Дуже радий черговій зустрічі з Вами.

Давайте перевіримо свої знання, відповівши на такі питання.


  • Що таке тригер?
  • Що таке транзакція?
  • Які категорії файлів включає фізичний рівень БД Oracle?
  • У якому табличному просторі зберігається словник даних?
  • Яка різниця між сегментом, екстент і блоком даних?

На ці питання дуже просто відповісти, уважно прочитавши попередній випуск.


ЕКЗЕМПЛЯР 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) – при роботі сервера в мультінітевом режимі, то існує хоча б один диспетчерський процес, відповідальний за кожен протокол взаємозв'язку. Диспетчерські процеси організовують взаємодію між призначеними для користувача і розділяються серверними процесами.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*