Mam potężną maszynę z 70 GB pamięci RAM. Ile instancji Oracle o pojemności 20 GB można utworzyć?

9

Mam potężną maszynę z 70 GB pamięci RAM. Utworzyłem jedną instancję Oracle z 20 GB jako sga_target. Nie jestem w stanie utworzyć innej instancji Oracle, sga_target > 10Gnawet jeśli utrzymuję pierwszą bazę danych zamkniętą. Jeśli sga_target >=10Gustawię, podczas uruchamiania wyświetla się następujący błąd:

ORA-27104: Definiowane przez system limity pamięci współdzielonej zostały źle skonfigurowane

Chociaż free -mpokazuje, że jest wystarczająco dużo pamięci:

             total       used       free     shared    buffers     cached
Mem:         72419      34490      37928          0        618      28159
-/+ buffers/cache:       5711      66707
Swap:         2047          0       2047

Czy muszę zwiększyć przestrzeń wymiany? Każdy wskaźnik w tym względzie jest bardzo ceniony.

Także w przypadku 70 GB pamięci, do tworzenia wielu instancji, jaka byłaby najlepsza wartość dla przestrzeni wymiany - czy jest jakiś sposób, aby to obliczyć? Moim celem jest posiadanie co najmniej dwóch instancji sga_target=20Gi utrzymanie tylko jednej instancji na raz. Jeśli brakuje mi tutaj jakiejś koncepcji?

Wyjście ipcs -imjest jak poniżej

------ Shared Memory Limits --------
max number of segments = 4096
max seg size (kbytes) = 4194303
max total shared memory (kbytes) = 8388608
min seg size (bytes) = 1
użytkownik419534
źródło

Odpowiedzi:

13

Parametry jądra wymagają modyfikacji.

Edytuj /etc/sysctl.confi upewnij się, że obecne są następujące wiersze:

kernel.shmall = 18350080
kernel.shmmax = 75161927680
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128

Następnie uruchom ponownie komputer.

Philᵀᴹ
źródło
Dzięki, to działa. Czy możesz dać mi znać, jak możesz zdecydować o tych wartościach dla shmall, shmax i shmni itp. Czy istnieje jakiś sposób na ich obliczenie?
user419534
3
shmmax to maksymalny rozmiar w bajtach pojedynczego segmentu pamięci wspólnej, masz 70 GB pamięci RAM, więc użyłem 70 * 1024 * 1024 * 1024. shmall to maksymalna suma wszystkich segmentów pamięci dzielonej, które mogą istnieć jednocześnie i jest mierzona na stronach. Rozmiar strony w Linuksie wynosi zwykle 4k, więc podzieliłem liczbę
shmmax
0

Ustawienie wartości shmmax zależy od tego, czy system operacyjny jest 32-bitowy czy 64-bitowy. Istnieje metalinkowa notatka, która szczegółowo to wyjaśnia.

Maksymalne wartości SHMMAX dla systemu Linux x86 i x86-64 [ID 567506.1]

Proszę spojrzeć.

Jest też notka o Shared Memory / Semaphores for Oracle, która powinna być interesującą lekturą.

TECH: Wyjaśniono semafory uniksowe i pamięć współdzieloną [ID 15566.1]

Pozdrawiam, Nagendra Chillale

Nagendra Chillale
źródło