Jak sprawdzić rozmiar pamięci i pamięci Oracle Database
w niektórych przypadkach będę poproszony o szacunkowe zapotrzebowanie na zasoby dla bazy danych, która zostanie skonfigurowana dla środowiska programistycznego lub jako baza danych w trybie gotowości. Poniżej przedstawiam moje metody obliczania wielkości pamięci i pamięci w oparciu o istniejącą bazę produkcyjną. Obliczenia rozmiaru pamięci przeznaczone są dla systemów UNIX i LINUX.
1. Uzyskaj szacowany ślad pamięci istniejącej bazy danych.
—- Pobierz footprint SGA instancji bazy danych:
SQL> SELECT sum(value)/1024/1024 „TOTAL SGA (MB)” FROM v$SGA;
—- uzyskaj bieżące zużycie PGA instancji bazy danych:
select sum(pga_max_mem)/1024/1024 „TOTAL MAX PGA (MB)” from V$process;
bardziej szczegółowy podział wykorzystania pamięci PGA:
SELECT spid, program,
pga_max_mem max,
pga_alloc_mem alloc,
pga_used_mem used,
pga_freeable_mem free
FROM V$PROCESS;
uwaga: wynikowa nazwa programu nie ma powiązanej nazwy procesu (np. PMON, SMON, RECO,.) jest procesem sesyjnym.
w zależności od ustawień procesów parametrów init, może się zdarzyć, że powyższe zapytania przechwytują tylko aktywne połączenia.
—- uzyskaj szacunkowe zapotrzebowanie na pamięć dla niezwiązanych sesji:
poniższe zapytanie podaje maksymalną przydzieloną pamięć przez sesję użytkownika. Użyjemy tego do obliczenia pozostałych wymagań pamięci dla niezwiązanych procesów.
select max(P. pga_max_mem) / 1024 / 1024 „PGA MAX MEMORY of USER SESSION (MB)”
from V$process p, v$session s
where P. ADDR = S. paddr and s. username is not null;
uzyskaj maksymalną liczbę procesów obsługiwanych przez instancję Oracle.
select name, value from V$parameter
where name = 'processes’;
Policzmy liczbę połączonych sesji:
select count(1) from v$session
where username is not null;
uzyskaj całkowitą liczbę dostępnych połączeń, odejmując liczbę połączonych sesji od wartości parametru procesy.
wartość wynikowa jest mnożona przez maksymalną przydzieloną pamięć wynikową przez sesję wykonaną przez poprzednie zapytanie.
to daje szacunkową ilość pamięci rezerwowej potrzebnej do obsługi dodatkowych połączeń.
szacowane całkowite zapotrzebowanie na pamięć
Wymaganie pamięci SGA + PGA = EST dla połączeń prądowych
SGA + PGA + UNCONNECTED SESSIONS = EST Wymaganie pamięci przy maksymalnym wykorzystaniu procesu
gdzie:
Unconnected Sessions (MB) = (sesje połączone procesami) * PGA Maksymalna pamięć sesji użytkownika
2. Uzyskaj szacunkowe wymagania dotyczące rozmiaru pamięci masowej bazy danych.
poniższa procedura określania rozmiaru pamięci przeznaczona jest dla środowiska UNIX i LINUX. Jeśli chodzi o System windows, po prostu kliknij prawym przyciskiem myszy i wybierz Właściwości na każdej z liter dysku podanych przez wyniki zapytań.
@primary server,
— skopiuj i wklej każde wynikowe polecenia do skryptu powłoki i wykonaj je na serwerze primary, aby uzyskać rozmiar punktu montowania
wybierz unikalny 'df-k’ / / a.MTPOINT MOUNT_POINT
from ( select substr(nazwa_pliku,0,instr (nazwa_pliku,’/’,1,2)-1) MTPOINT
from dba_data_files
union
select substr(nazwa_pliku,0,instr (nazwa_pliku,’/’,1,2)-1) MTPOINT
from dba_temp_files
union
select substr(MEMBER, 0, instr (MEMBER,’/’,1,2)-1) MTPOINT
from v$logfile
union
select substr(NAME,0,instr (NAME,’/’,1,2)-1) MTPOINT
from v$controlfile
) a;
— odpytuje wszystkie pliki docelowe parametrów i określa, czy mają inną ścieżkę niż punkt montowania datafile lub katalog oracle_base.
Pobierz rozmiar punktu montowania plików docelowych
wybierz nazwę, wartość
z v$parametr
gdzie (regexp_like(nazwa, '^log_archive_(dest|dest\_())$’, 'i’) lub nazwa jak '%dump_dest’ lub nazwa jak '%file_dest’ lub nazwa jak 'diag%dest’ lub name =’utl_file_dir’) i wartość nie jest NULL;
— odpytywanie katalogów bazy danych o punkty montowania
select 'df-k’ / / substr (DIRECTORY_PATH,0,instr (DIRECTORY_PATH,’/’,1,2)-1) MTPOINT z dba_directories;
alternatywą dla polecenia df jest grep całego ważnego punktu montowania związanego z bazą danych w jednym łańcuchu, aby uzyskać znacznie bardziej zwięzły raport.
przykład:
$ DF-K / grep-E '/ U01 / / U02 / / utldir / / opt’