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