Кілька екземплярів Oracle - це хороша практика?


9

Один з моїх клієнтів розгорнув конвеєр нашого продукту в машину Solaris, яка вже має 3 екземпляри Oracle. Отже, зараз є 4 екземпляри Oracle, що працюють на одній машині. А зараз у нас виникають проблеми з продуктивністю.

У мене немає доступу до інших екземплярів або до машини, і всі інструменти, які я маю, є alert.log, AWR та ADDM. Я знаю, що є щось, що стосується декількох випадків, але я не можу цього довести.

Отже, моє запитання, чи ви переживали подібну ситуацію? Як я маю справу з цим? Як я можу визначити причину проблем із ефективністю, пов’язаних із кількома екземплярами?

Відповіді:


8

Isaac, бажано, ми запускаємо один екземпляр на одному сервері та реалізовуємо різні додатки як схеми та служби в цій єдиній базі даних. Якщо на сервері достатньо пам'яті, не виникне проблем, якщо всі програми поводяться як хороші громадяни Oracle. Як тільки з’являється програма, яка не використовує змінні зв'язування, на хоста виникає біль. Те саме для програм, які створюють нові з'єднання кожні кілька секунд, замість того, щоб повторно використовувати наявні з'єднання. Такі речі, як автоматичне здійснення, також не допомагають покращити ситуацію. Яка нормальна поведінка вашої заявки? Чи великі оновлення? Коли він робить зобов’язання? Скільки повторів генерується / година? Чи використовує ваш додаток прив'язки змінних? У багатьох випадках розташування онлайн-файлів повторного запису є критичним. Якщо додаток генерує багато повторень (або конкурує з іншим додатком, який це робить), логопедник сповільнить роботу та призведе до значної погіршення продуктивності, оскільки сеанс очікує завершення запису журналу. Дайте клієнту макет диска, де повторювачі знаходяться на виділених рейдах-10 дисках, і подивіться, наскільки це допомагає. Дізнайтеся також ситуацію з розподілом пам'яті. Може виникнути потреба у справедливому перерозподілі наявної пам’яті.

Я сподіваюся, що це допомагає


Ви праві. Ми контролюємо наш екземпляр і проводимо оптимізацію будь-де, де можемо. Але продуктивність не є стабільною, іноді вона падає без пояснених причин (з нашого боку)
Ісаак А. Нугрохо

Ісаак, як часто перезавантажується база даних, яка це версія і чи є у вас стовпчики хронології на стовпцях, що генеруються в процесі автоматичної статистики? Чи використовуєте ви змінні зв'язування та оптимізатор перед визиркою?
ik_zelf

2

Запуск декількох примірників на одному сервері можливий, а в деяких випадках і необхідний. Oratab розроблений спеціально для управління кількома екземплярами. У випадках, коли у вас є кілька незалежних програм, бажано мати примірник для кожної програми.

Наявність достатньої пам’яті є критичним. Oracle створює SGA в спільній пам'яті. Якщо у вас недостатньо пам’яті, SGA або процеси почнуться замінятись і вимикатися. Це відомо як "молотіння" і призводить до значного покарання за продуктивність.

Можливо, можливо налаштувати екземпляри для запуску з меншою SGA. Oracle надає інструменти, які допоможуть налаштувати розмір SGA. Якщо будь-який із екземплярів має надмірно великий SGA, він буде штрафувати всі екземпляри.

Ще одне значення для пам’яті, яке є важливим, - це буферний простір. Це виступає як вторинний кеш-пам'ять і може усунути значне введення-виведення читання.

Запуск sar(припускаючи, що це стосується баз Unix O / S) може дати вам хорошу діагностику щодо проблеми. Ймовірно, проблеми полягають у заміні або насиченні дискового вводу / виводу. Додавання оперативної пам’яті, ймовірно, вирішить будь-яку з цих проблем.

Насичення вводу / виводу диска також може бути вирішено шляхом переміщення деяких просторів таблиць на інші диски. Як правило, я налаштовую Oracle так, щоб введення / виведення розподілялося на якомога більше дисків.

EDIT: Це кілька випадків, які можуть вимагати окремих примірників.

  • Це завжди необхідно, якщо ви запускаєте різні версії Oracle на одному сервері. Програми не завжди сертифіковані або здатні працювати з останньою версією.
  • Можливо, вам потрібні екземпляри, які можна автоматично повернути до певного часу. (Хоча я і заважаю цьому, я використовував це для автоматизованого тестування.)
  • Якщо у програмах є посилання на схему із жорстким кодом, вам можуть знадобитися різні екземпляри для вирішення колізій у просторі імен.
  • Вимоги безпеки може бути простіше вирішити, використовуючи окремі екземпляри. У цьому випадку може бути доречним використання різних серверів.
  • Запуск різних версій однієї бази даних (розробка, тестування, прийняття користувача, навчання та виробництво) на одному сервері безпечніше з окремими екземплярами. Я б не запускав усі ці середовища на одному сервері, але часто запускав два або більше на одному сервері.

Чи можете ви навести приклади, коли необхідно запустити кілька екземплярів?
ScottCher

1
@ScottCher Я відредагував свою відповідь, щоб надати деякі випадки.
BillThor

1

Найбільш критичний ресурс - оперативна пам'ять.

Кожен запущений екземпляр Oracle виділяє деяку оперативну пам’ять самостійно, коли тільки запускається і не навантажується.

Ми працюємо з 10 екземплярами 10 і 11 г з 8 екземплярами, але це сервери розробки. Після перезавантаження ОС деякі сервіси Oracle не запускаються автоматично, і їх потрібно запускати вручну: Oradim -startup -sid xxx.

Ми тільки починаємо використовувати автоматичне управління пам’яттю, але ситуація відрізняється від SQL Server, де ви можете додавати бази даних стільки, скільки дає дисковий простір.

У вашому випадку, якщо більше примірників на одній машині, SGA для кожного екземпляра стає меншим, менше попередньо складеного sql можна кешувати, і машина повинна робити більше компіляції sql, що знижує продуктивність.

Додавання оперативної пам’яті може допомогти у вашій ситуації.


2
Причина, по якій ви говорите, що сервер SQL відрізняється, - це більше номенклатура. Група процесів та її виділена пам'ять - це екземпляр. Якщо ви додаєте базу даних SQL Server, і вона не додає новий процес, це не примірник. У цьому випадку це набагато ближче до додавання схеми.
Стефанія Сторінка
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.