prezentacja
Transkrypt
prezentacja
Maciej Zakrzewicz PLOUG Oracle 10g Real Application Clusters: konfiguracja i administrowanie • • • • • Oracle 10g RAC: Wprowadzenie do architektury Mechanizm Cache Fusion Narzędzia administracyjne Niezawodność Zagrożenia dla wydajności Plan prezentacji RAC: Wprowadzenie – uzyskanie wysokiej odporności na awarie – skalowalność wydajności względem liczby współbieżnych użytkowników – uzyskanie wysokiej mocy przetwarzania dla pojedynczego użytkownika • Zespół komputerów (węzłów) połączonych ze sobą szybką siecią komunikacyjną, współdzielących urządzenia pamięci masowej • Użytkownikowi aplikacyjnemu prezentuje się jako jeden silny i niezawodny komputer logiczny • Główne zastosowania: Klaster sprzętowy DIAG LCK LMS plik kontrolny sieć komunikacyjna (interconnect) Cluster Ready Services LMD LMON instancja Oracle LMS pliki przestrzeni pliki wycofania przestrzeni instancji 1 wycofania instancji 1 Cluster Ready Services DIAG LMD dziennik powtórzeń dziennik instancji 1 powtórzeń instancji 1 LCK LMON współdzielona pamięć masowa plik parametrów pliki danych GSD LSNR instancja Oracle GSD LSNR ... • Dystrybucja serwera bazy danych Oracle 10g przeznaczona do instalacji w środowiskach klastrów sprzętowych Oracle 10g Real Application Clusters (RAC) • LMON (Global Enqueue Service Monitor): monitorowanie blokad w obrębie całego systemu i za nadzorowanie pracy procesu LMD • LMD (Global Enqueue Service Daemon): obsługa żądań pobierania i zwalniania blokad • LMS (Global Cache Service): koordynacja rozproszonego dostępu do bufora danych oraz transfer bloków pomiędzy instancjami w ramach mechanizmu Cache Fusion • LCK: koordynacja rozproszonego dostępu do bufora słownika danych • DIAG (Diagnosability Daemon): rejestrowanie w pliku śladu informacji diagnostycznych dotyczących awarii procesów instancji Dodatkowe procesy drugoplanowe PQ PQ koordyunator instancja Oracle SQL PQ PQ instancja Oracle PQ Zapytania równoległe w RAC – – – – – – – – – – – – – – ACTIVE_INSTANCE_COUNT ARCHIVE_LAG_TARGET CLUSTER_DATABASE CONTROL_FILES DB_BLOCK_SIZE DB_DOMAIN DB_FILES DB_NAME DB_RECOVERY_FILE_DEST DB_RECOVERY_FILE_DEST_SIZE DB_UNIQUE_NAME MAX_COMMIT_PROPAGATION_DELAY TRACE_ENABLED UNDO_MANAGEMENT • Wymagane są identyczne ustawienia parametrów: Parametry inicjalizacyjne instancji RAC CLUSTER_DATABASE np. TRUE THREAD np. 1 INSTANCE_NUMBER np. 1 UNDO_TABLESPACE np. UNDO01 ALTER SYSTEM SET SHARED_POOL_SIZE=100M SCOPE=SPFILE SID='*' ALTER SYSTEM SET SHARED_POOL_SIZE=100M SCOPE=SPFILE SID='INST2' • Zmiana wartości parametrów: – – – – • Wymagane są niepowtarzalne ustawienia parametrów: Parametry inicjalizacyjne instancji RAC SPFILE SPFILE=... initINST2.ora initINST1.ora SPFILE=... instancja Oracle INST2 instancja Oracle INST1 Plik SPFILE 512 MB RAM 1GB przestrzeni wymiany (swap space) 400 MB przestrzeni tymczasowej /tmp 4 GB przestrzeni dyskowej dwa adaptery sieciowe: publiczny (TCP/IP), prywatny (UDP) – – – instalowanie CRS instalowanie instancji RAC utworzenie bazy danych • klastrowy system plików (np. OCFS) • partycje surowe • ASM – przygotowanie współdzielonego systemu pamięci masowej • Kroki instalacji: – – – – – • Wymagania (Linux): Instalowanie Oracle 10g RAC RAC: Cache Fusion Instance C czyta blok z dysku Cache Fusion – Przykład 1 Cache Fusion – Przykład 1 Cache Fusion – Przykład 1 Cache Fusion – Przykład 1 Cache Fusion – Przykład 1 Instance C przekazuje blok Instance B Cache Fusion – Przykład 2 Cache Fusion – Przykład 2 Cache Fusion – Przykład 2 Cache Fusion – Przykład 2 RAC: Narzędzia administracyjne • • • Perspektywy GV$ Enterprise Manager Cluster Database SRVCTL Narzędzia administracyjne V$SESSION instancja Oracle + GV$SESSION V$SESSION instancja Oracle Perspektywy GV$ INST_ID 1 1 2 SCOTT SYSTEM SYSTEM ------------------- ---------- USERNAME SELECT USERNAME, INST_ID FROM GV$SESSION; SYSTEM SCOTT ------------------ USERNAME SELECT USERNAME FROM V$SESSION; Perspektywy GV$ - przykład Enterprise Manager Cluster Database srvctl stop database –d BAZA1 –o transactional • Zatrzymanie kompletnego systemu RAC w trybie Transactional: srvctl start database –d BAZA1 • Uruchomienie kompletnego systemu RAC: srvctl stop instance –d BAZA1 –i INST1, INST2 • Zatrzymywanie pojedynczych instancji RAC: srvctl start instance –d BAZA1 –i INST1, INST2 • Uruchamianie pojedynczych instancji RAC: SRVCTL RAC: Niezawodność losowy wybór 1521 LSNR NODE1 1521 (CONNECT_DATA=(SERVICE_NAME=BAZA1))) (ADDRESS=(PROTOCOL=TCP)(HOST=NODE2)(PORT=1521))) (ADDRESS=(PROTOCOL=TCP)(HOST=NODE1)(PORT=1521)) (ADDRESS_LIST = (LOAD_BALANCE=ON) (DESCRIPTION = KADRY = SQL*Net Aplikacja klienta LSNR NODE1 Instancja RAC BAZA1 Instancja RAC SQL*Net: Równoważenie obciążenia w chwili podłączania nawiązanie nowego połączenia 1521 LSNR NODE1 1521 (CONNECT_DATA=(SERVICE_NAME=BAZA1))) (ADDRESS=(PROTOCOL=TCP)(HOST=NODE2)(PORT=1521))) (ADDRESS=(PROTOCOL=TCP)(HOST=NODE1)(PORT=1521)) (ADDRESS_LIST = (LOAD_BALANCE=ON)(FAILOVER=ON) (DESCRIPTION = KADRY = SQL*Net Aplikacja klienta LSNR NODE1 Instancja RAC BAZA1 Instancja RAC SQL*Net: Automatyczne ponowienie operacji nawiązywania połączenia KADRY = (DESCRIPTION = (LOAD_BALANCE=ON) (FAILOVER=ON) (ADDRESS_LIST = (ADDRESS=(PROTOCOL=TCP) (HOST=NODE1) (PORT=1521)) (ADDRESS=(PROTOCOL=TCP) (HOST=NODE2) (PORT=1521)) ) SQL*Net Aplikacja klienta Instancja RAC Instancja RAC REMOTE_LISTENER=MY_LISTENERS LSNR NODE2 NODE1 LSNR REMOTE_LISTENER=MY_LISTENERS TNSNAMES.ORA MY_LISTENERS = (DESCRIPTION = (ADDRESS=(PROTOCOL=TCP)(HOST=NODE1) (PORT=1521)) (ADDRESS=(PROTOCOL=TCP)(HOST=NODE2) (PORT=1521))) BAZA1 MY_LISTENERS = (DESCRIPTION = (ADDRESS=(PROTOCOL=TCP)(HOST=NODE1) (PORT=1521)) (ADDRESS=(PROTOCOL=TCP)(HOST=NODE2) (PORT=1521))) TNSNAMES.ORA Listener: Równoważenie obciążenia w chwili podłączania 1521 NODE1 (DELAY=10)))) nawiązanie nowego połączenia, przywrócenie stanu sesji 1521 LSNR SQL*Net Aplikacja klienta LSNR NODE1 (RETRIES=100) (METHOD=BASIC) (TYPE=SESSION) (FAILOVER_MODE = (SERVICE_NAME = BAZA1) (CONNECT_DATA = ) (ADDRESS=(PROTOCOL=TCP)(HOST=NODE2)(PORT=1521)) (ADDRESS=(PROTOCOL=TCP)(HOST=NODE1)(PORT=1521)) (ADDRESS_LIST = (FAILOVER=ON) (LOAD_BALANCE=ON) (DESCRIPTION = KADRY = Instancja RAC BAZA1 Instancja RAC OCI: Transparent Application Failover (TAF) • RETRIES - maksymalna liczba nieudanych prób przełączenia podejmowanych po wystąpieniu awarii • DELAY - odstęp czasowy (w sekundach) pomiędzy kolejnymi próbami nawiązania połączenia – BASIC - nowe połączenie będzie nawiązane dopiero gdy nastąpi awaria – PRECONNECT - połączenie zapasowe będzie zawsze otwierane równocześnie z połączeniem głównym • METHOD - czy w celu skrócenia czasu awaryjnego przełączenia, każda sesja użytkownika będzie prewencyjnie dublowana, tzn. już przed wystąpieniem awarii zostanie nawiązane połączenie z zapasową instancją? – SESSION - kursory nie będą rekonstruowane – SELECT - automatyczna rekonstrukcja kursorów • TYPE - czy po przełączeniu nastąpi rekonstrukcja otwartych kursorów, umożliwiająca kontynuowanie przerwanych poleceń SELECT? Konfiguracja TAF RAC: Zagrożenia dla wydajności instancja Oracle SEQ1 SELECT SEQ1.NEXTVAL FROM DUAL CREATE SEQUENCE SEQ1 NOCACHE ORDER SEQ1 SEQ1 instancja Oracle SELECT SEQ1.NEXTVAL FROM DUAL Sekwencje NOCACHE ORDER instancja Oracle instancja Oracle 100 101 102 103 Rywalizacja o bloki indeksu 101 201 103 403 104 KEY = SEQ1.NEXTVAL + INSTANCE_NUMBER * 1000000000 Rozproszenie wartości kluczy generowanych przez instancje REVERSE ON TAB(COL) CREATE INDEX IND1 Indeks z odwróconym kluczem Rywalizacja o bloki indeksu - rozwiązania CREATE TABLESPACE tbsp1 DATAFILE ’tbsp1.dbf’ SIZE 500M EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO • Zaleca się stosowanie przestrzeni tabel zarządzanych lokalnie (EXTENT MANAGEMENT LOCAL), wykorzystujących automatyczne zarządzanie przestrzenią w segmentach (SEGMENT SPACE MANAGEMENT AUTO) Typy przestrzeni tabel • Oracle 10g RAC to serwer bazy danych przeznaczony do instalacji w środowiskach klastrów sprzętowych • Administrowanie całym środowiskiem Oracle 10g RAC może odbywać się z poziomu pojedynczego węzła • Oracle 10g RAC oferuje rozwiązania podnoszące niezawodność pracy użytkowników • Oracle 10g RAC samodzielnie nie rozwiązuje problemu zawodności pamięci masowej • Architektura Oracle 10g może stwarzać nowe problemy wydajnościowe Podsumowanie