Oracle 10g Real Application Clusters: konfiguracja i administrowanie Maciej Zakrzewicz PLOUG
Plan prezentacji Plan prezentacji Oracle 10g RAC: Wprowadzenie do architektury Mechanizm Cache Fusion Narzędzia administracyjne Niezawodność Zagrożenia dla wydajności
RAC: Wprowadzenie RAC: Wprowadzenie
Klaster sprzętowy Klaster sprzętowy 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: 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
Oracle 10g Real Application Clusters (RAC) Dystrybucja serwera bazy danych Oracle 10g przeznaczona do instalacji w środowiskach klastrów sprzętowych instancja Oracle instancja Oracle LSNR LSNR LMON LMD LMS LMON LMD LMS LCK DIAG GSD LCK DIAG GSD... Cluster Ready Services Cluster Ready Services sieć komunikacyjna (interconnect) plik kontrolny pliki danych plik parametrów dziennik dziennik powtórzeń powtórzeń instancji 1 instancji 1 pliki przestrzeni pliki przestrzeni wycofania wycofania instancji 1 instancji 1 współdzielona pamięć masowa
Dodatkowe procesy drugoplanowe Dodatkowe procesy drugoplanowe 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
Zapytania równoległe w RAC Zapytania równoległe w RAC SQL instancja Oracle instancja Oracle koordyunator PQ PQ PQ PQ PQ
Parametry inicjalizacyjne instancji RAC Wymagane są identyczne ustawienia parametrów: 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
Parametry inicjalizacyjne instancji RAC Wymagane są niepowtarzalne ustawienia parametrów: CLUSTER_DATABASE np. TRUE THREAD np. 1 INSTANCE_NUMBER np. 1 UNDO_TABLESPACE np. UNDO01 Zmiana wartości parametrów: ALTER SYSTEM SET SHARED_POOL_SIZE=100M SCOPE=SPFILE SID='INST2 INST2' ALTER SYSTEM SET SHARED_POOL_SIZE=100M SCOPE=SPFILE SID='*'
Plik SPFILE Plik SPFILE instancja Oracle INST1 instancja Oracle INST2 initinst1.ora initinst2.ora SPFILE=... SPFILE=... SPFILE
Instalowanie Oracle 10g RAC Wymagania (Linux ( Linux): 512 MB RAM 1GB przestrzeni wymiany (swap space) 400 MB przestrzeni tymczasowej /tmp 4 GB przestrzeni dyskowej dwa adaptery sieciowe: publiczny (TCP/IP TCP/IP),, prywatny (UDP) Kroki instalacji: przygotowanie współdzielonego systemu pamięci masowej klastrowy system plików (np. OCFS) partycje surowe ASM instalowanie CRS instalowanie instancji RAC utworzenie bazy danych
RAC: Cache Fusion
Cache Fusion Przykład 1 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 2 Instance C przekazuje blok Instance B
Cache Fusion Przykład 2
Cache Fusion Przykład 2
Cache Fusion Przykład 2
RAC: Narzędzia administracyjne RAC: Narzędzia administracyjne
Narzędzia administracyjne Narzędzia administracyjne Perspektywy GV$ Enterprise Manager Cluster Database SRVCTL
Perspektywy GV$ Perspektywy GV$ GV$SESSION + instancja Oracle instancja Oracle V$SESSION V$SESSION
Perspektywy GV$ - przykład SELECT USERNAME FROM V$SESSION; USERNAME ------------------ SCOTT SYSTEM SELECT USERNAME, INST_ID FROM GV$SESSION; USERNAME INST_ID ------------------- ---------- SCOTT 1 SYSTEM 1 SYSTEM 2
Enterprise Manager Cluster Database
SRVCTL Uruchamianie pojedynczych instancji RAC: srvctl start instance d d BAZA1 i i INST1, INST2 Zatrzymywanie pojedynczych instancji RAC: srvctl stop instance d d BAZA1 i i INST1, INST2 Uruchomienie kompletnego systemu RAC: srvctl start database d d BAZA1 Zatrzymanie kompletnego systemu RAC w trybie Transactional: srvctl stop database d d BAZA1 o o transactional
RAC: Niezawodność RAC: Niezawodność
SQL*Net: Równoważenie obciążenia w chwili podłączania NODE1 Aplikacja klienta LSNR Instancja RAC 1521 SQL*Net BAZA1 losowy wybór KADRY = (DESCRIPTION = (LOAD_BALANCE=ON) (ADDRESS_LIST = NODE1 LSNR Instancja RAC 1521 (ADDRESS=(PROTOCOL=TCP)(HOST=NODE1)(PORT=1521)) (ADDRESS=(PROTOCOL=TCP)(HOST=NODE2)(PORT=1521))) (CONNECT_DATA=(SERVICE_NAME=BAZA1)))
SQL*Net: Automatyczne ponowienie operacji nawiązywania połączenia NODE1 Aplikacja klienta LSNR Instancja RAC 1521 SQL*Net BAZA1 KADRY = (DESCRIPTION = (LOAD_BALANCE=ON)(FAILOVER=ON) (FAILOVER=ON) (ADDRESS_LIST = nawiązanie nowego połączenia NODE1 LSNR Instancja RAC 1521 (ADDRESS=(PROTOCOL=TCP)(HOST=NODE1)(PORT=1521)) (ADDRESS=(PROTOCOL=TCP)(HOST=NODE2)(PORT=1521))) (CONNECT_DATA=(SERVICE_NAME=BAZA1)))
Listener: : Równoważenie obciążenia w chwili podłączania Aplikacja klienta REMOTE_LISTENER=MY_LISTENERS NODE1 LSNR Instancja RAC TNSNAMES.ORA MY_LISTENERS = (DESCRIPTION = (ADDRESS=(PROTOCOL=TCP)(HOST=NODE1) (PORT=1521)) (ADDRESS=(PROTOCOL=TCP)(HOST=NODE2) (PORT=1521))) SQL*Net BAZA1 KADRY = (DESCRIPTION = (LOAD_BALANCE=ON) (FAILOVER=ON) (ADDRESS_LIST = (ADDRESS=(PROTOCOL=TCP) (HOST=NODE1) (PORT=1521)) (ADDRESS=(PROTOCOL=TCP) (HOST=NODE2) (PORT=1521)) ) NODE2 LSNR Instancja RAC REMOTE_LISTENER=MY_LISTENERS TNSNAMES.ORA MY_LISTENERS = (DESCRIPTION = (ADDRESS=(PROTOCOL=TCP)(HOST=NODE1) (PORT=1521)) (ADDRESS=(PROTOCOL=TCP)(HOST=NODE2) (PORT=1521)))
OCI: Transparent Application Failover (TAF) KADRY = (DESCRIPTION = (LOAD_BALANCE=ON) (FAILOVER=ON) (ADDRESS_LIST = (ADDRESS=(PROTOCOL=TCP)(HOST=NODE1)(PORT=1521)) ) (ADDRESS=(PROTOCOL=TCP)(HOST=NODE2)(PORT=1521)) (CONNECT_DATA = Aplikacja klienta NODE1 LSNR Instancja RAC 1521 (SERVICE_NAME = BAZA1) (FAILOVER_MODE = (TYPE=SESSION) (METHOD=BASIC) (RETRIES=100) (DELAY=10)))) SQL*Net nawiązanie nowego połączenia, przywrócenie stanu sesji NODE1 BAZA1 LSNR Instancja RAC 1521
Konfiguracja TAF Konfiguracja TAF TYPE - czy po przełączeniu nastąpi rekonstrukcja otwartych kursorów, umożliwiająca kontynuowanie przerwanych poleceń SELECT? SESSION - kursory nie będą rekonstruowane SELECT - automatyczna rekonstrukcja kursorów 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ą? 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 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
RAC: Zagrożenia dla wydajności RAC: Zagrożenia dla wydajności
Sekwencje NOCACHE ORDER Sekwencje NOCACHE ORDER CREATE SEQUENCE SEQ1 NOCACHE ORDER SELECT SEQ1.NEXTVAL FROM DUAL SELECT SEQ1.NEXTVAL FROM DUAL instancja Oracle instancja Oracle SEQ1 SEQ1 SEQ1
Rywalizacja o bloki indeksu Rywalizacja o bloki indeksu instancja Oracle instancja Oracle 100 101 102 103
Rywalizacja o bloki indeksu - rozwiązania Indeks z odwróconym kluczem CREATE INDEX IND1 ON TAB(COL) REVERSE 101 201 103 403 104 Rozproszenie wartości kluczy generowanych przez instancje KEY = SEQ1.NEXTVAL + INSTANCE_NUMBER * 1000000000
Typy przestrzeni tabel Typy przestrzeni tabel Zaleca się stosowanie przestrzeni tabel zarządzanych lokalnie (EXTENT MANAGEMENT LOCAL), wykorzystujących automatyczne zarządzanie przestrzenią w segmentach (SEGMENT SPACE MANAGEMENT AUTO) CREATE TABLESPACE tbsp1 DATAFILE tbsp1. tbsp1.dbf dbf SIZE 500M EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO
Podsumowanie Oracle instalacji w środowiskach klastrów Administrowanie całym środowiskiem Oracle 10g RAC to serwer bazy danych przeznaczony do 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