Wiele wystąpień Oracle - czy to dobra praktyka?

9

Jeden z moich klientów wdrożył bazę danych naszego produktu na komputerze Solaris, który ma już 3 instancje Oracle. Tak więc teraz są 4 instancje Oracle działające na tym samym komputerze. A teraz mamy problemy z wydajnością.

Nie mam dostępu do innych instancji ani komputera, a wszystkie narzędzia, które mam, to alert.log, AWR i ADDM. Wiem, że jest coś związanego z wieloma instancjami, ale nie mogę tego udowodnić.

Moje pytanie brzmi: czy doświadczyłeś podobnej sytuacji? Jak mam sobie z tym poradzić? Jak mogę zidentyfikować przyczynę problemów z wydajnością związanych z wieloma wystąpieniami?

Isaac A. Nugroho
źródło

Odpowiedzi:

8

Isaac, najlepiej uruchamiamy jedną instancję na jednym serwerze i implementujemy różne aplikacje jako schematy i usługi w tej pojedynczej bazie danych. Jeśli serwer ma wystarczającą ilość pamięci, nie będzie problemu, jeśli wszystkie aplikacje będą zachowywać się jak dobrzy obywatele Oracle. Gdy tylko pojawi się aplikacja, która nie korzysta ze zmiennych wiązania, host odczuwa coraz większy ból. To samo dotyczy aplikacji, które co kilka sekund tworzą nowe połączenia, zamiast ponownie wykorzystywać istniejące połączenia. Rzeczy takie jak automatyczne zatwierdzanie również nie pomagają poprawić sytuacji. Jakie jest normalne zachowanie twojej aplikacji? Czy robi duże aktualizacje? Kiedy wykonuje zatwierdzenie? Ile powtórzeń jest generowanych / godzinę? Czy Twoja aplikacja używa zmiennych powiązań? W wielu przypadkach lokalizacja plików redologa online ma kluczowe znaczenie. Jeśli aplikacja generuje dużo powtórzeń (lub konkuruje z inną aplikacją, która to robi), program rejestrujący zwolni i spowoduje znaczne obniżenie wydajności, ponieważ sesja czeka na zakończenie zapisu pliku dziennika. Daj klientowi układ dysku, na którym redo znajduje się na dedykowanych dyskach RAID-10, i zobacz, jak bardzo to pomaga. Dowiedz się również o sytuacji przydziału pamięci. Może zaistnieć potrzeba sprawiedliwej redystrybucji dostępnej pamięci.

mam nadzieję, że to pomoże

ik_zelf
źródło
masz rację. Monitorujemy naszą instancję i przeprowadzamy optymalizację w dowolnym miejscu. Ale wydajność nie jest stabilna, czasem spada bez żadnego uzasadnionego powodu (z naszej strony)
Isaac A. Nugroho
Izaaku, jak często baza danych jest restartowana, jaka to wersja i czy masz histrogramy na kolumnach generowane przez proces automatycznych statystyk? Czy używasz zmiennych wiążących i optymalizatora przed podglądaniem?
ik_zelf
2

Uruchamianie wielu instancji na tym samym serwerze jest możliwe, aw niektórych przypadkach konieczne. Oratab został zaprojektowany specjalnie do zarządzania wieloma instancjami. W przypadku wielu niezależnych aplikacji może być wskazane utworzenie instancji dla każdej aplikacji.

Posiadanie wystarczającej ilości pamięci ma kluczowe znaczenie. Oracle buduje SGA we wspólnej pamięci. Jeśli nie masz wystarczającej ilości pamięci, SGA lub procesy zaczną się zamieniać. Jest to znane jako drżenie i powoduje znaczną utratę wydajności.

Możliwe może być dostrojenie instancji do pracy z mniejszym SGA. Oracle zapewnia narzędzia pomagające dostroić rozmiar SGA. Jeśli którakolwiek z instancji ma zbyt dużą SGA, będzie karać wszystkie instancje.

Innym ważnym zastosowaniem pamięci jest przestrzeń buforowa. Działa to jako dodatkowa pamięć podręczna i może wyeliminować znaczące operacje we / wy odczytu.

Uruchomienie sar(przy założeniu, że O / S bazuje na Uniksie) może dać ci dobrą diagnostykę, gdzie jest problem. Prawdopodobne problemy to zamiana lub nasycenie dysku we / wy. Dodanie pamięci RAM prawdopodobnie rozwiąże jeden z tych problemów.

Nasyceniem We / Wy dysku można również zaradzić, przenosząc niektóre obszary tabel na inne dyski. Zasadniczo konfiguruję Oracle, aby operacje we / wy były rozmieszczone na jak największej liczbie dysków.

EDYCJA: To kilka przypadków, które mogą wymagać osobnych wystąpień.

  • Jest to zawsze konieczne, jeśli używasz różnych wersji Oracle na tym samym serwerze. Aplikacje nie zawsze są certyfikowane lub mogą współpracować z najnowszą wersją.
  • Możesz chcieć wystąpienia, które można automatycznie przywrócić do określonego momentu. (Chociaż go odradzam, użyłem tego do automatycznego testowania środowiska).
  • Jeśli w aplikacjach masz zakodowane odwołanie do schematu, możesz potrzebować różnych instancji do radzenia sobie z kolizjami przestrzeni nazw.
  • Wymagania bezpieczeństwa mogą być łatwiejsze do spełnienia przy użyciu oddzielnych instancji. W takim przypadku może być właściwe użycie różnych serwerów.
  • Uruchamianie różnych wersji tej samej bazy danych (programowanie, testowanie, akceptacja użytkownika, szkolenie i produkcja) na tym samym serwerze jest bezpieczniejsze dzięki osobnym instancjom. Nie uruchamiałbym wszystkich tych środowisk na tym samym serwerze, ale często uruchamiam dwa lub więcej na tym samym serwerze.
BillThor
źródło
Czy możesz podać przykłady, w których konieczne jest uruchomienie wielu instancji?
ScottCher,
1
@ ScottCher Zredagowałem moją odpowiedź, aby podać niektóre przypadki.
BillThor
1

Najważniejszym zasobem jest pamięć RAM.

Każda działająca instancja Oracle przydziela część pamięci RAM dla własnego, gdy jest właśnie uruchomiona i nie jest obciążona.

Używamy 10g z 10 i 11g z 8 instancjami, ale są to serwery programistyczne. Po ponownym uruchomieniu systemu niektóre usługi Oracle nie uruchamiają się automatycznie i muszą zostać uruchomione ręcznie: Oradim -startup -sid xxx.

Właśnie zaczynamy korzystać z automatycznego zarządzania pamięcią, ale sytuacja różni się od SQL Servera, w którym można dodawać bazy danych, ile daje miejsce na dysku.

W twoim przypadku, gdy więcej instancji na jednej maszynie, SGA dla każdej instancji staje się mniejsza, mniej wstępnie skompilowanej sql można buforować, a maszyna musi wykonać więcej kompilacji sql, co zmniejsza wydajność.

Dodanie pamięci RAM może pomóc w twojej sytuacji.

bernd_k
źródło
2
Powodem, dla którego mówisz, że serwer SQL jest inny, jest bardziej nomenklatura. Grupa procesów i dedykowana pamięć to instancja. Jeśli dodasz bazę danych SQL Server i nie dodasz nowego procesu, to nie będzie to instancja. W takim przypadku jest znacznie bliżej dodania schematu.
Stephanie Page