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 > 10G
nawet jeśli utrzymuję pierwszą bazę danych zamkniętą. Jeśli sga_target >=10G
ustawię, 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 -m
pokazuje, ż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=20G
i utrzymanie tylko jednej instancji na raz. Jeśli brakuje mi tutaj jakiejś koncepcji?
Wyjście ipcs -im
jest 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
źródło
Parametr jądra powinien być poprawnie skonfigurowany:
Podręcznik instalacji bazy danych Oracle, 11g wydanie 2 (11.2) dla systemu Linux, numer części E24321-04, 2.10 Konfigurowanie parametrów jądra dla systemu Linux ,
źródło
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
źródło