Eu tenho uma máquina poderosa com 70 GB de RAM. Criei uma instância do Oracle com 20 GB como sga_target. Não consigo criar outra instância do Oracle sga_target > 10G
mesmo quando eu mantenho o primeiro banco de dados inativo. Se eu definir sga_target >=10G
isso dá erro abaixo na inicialização:
ORA-27104: os limites definidos pelo sistema para a memória compartilhada foram configurados incorretamente
Embora free -m
mostre que há memórias suficientes disponíveis:
total used free shared buffers cached
Mem: 72419 34490 37928 0 618 28159
-/+ buffers/cache: 5711 66707
Swap: 2047 0 2047
Preciso aumentar o espaço de troca? Qualquer ponteiro a esse respeito é muito apreciado.
Também para 70 GB de memória, para criar muitas instâncias, qual seria o melhor valor para o espaço de troca - existe alguma maneira de calcular isso? Meu objetivo é ter pelo menos duas instâncias sga_target=20G
e manter apenas uma instância por vez. Se estou perdendo algum conceito aqui?
Saída de ipcs -im
é como abaixo
------ Shared Memory Limits --------
max number of segments = 4096
max seg size (kbytes) = 4194303
max total shared memory (kbytes) = 8388608
min seg size (bytes) = 1
fonte
O parâmetro do kernel deve ser configurado corretamente:
Guia de instalação do banco de dados Oracle, 11g Release 2 (11.2) para Linux, Número da peça E24321-04, 2.10 Configurando parâmetros do kernel para Linux ,
fonte
A definição do valor shmmax depende se o sistema operacional é 32 bits ou 64 bits. Há uma nota de metalink que explica isso em detalhes.
Valores máximos de SHMMAX para Linux x86 e x86-64 [ID 567506.1]
Por favor, dê uma olhada.
Há também uma observação sobre memória compartilhada / semáforos para Oracle, que deve ser uma leitura interessante.
TECNOLOGIA: Semáforos Unix e memória compartilhada explicados [ID 15566.1]
Atenciosamente, Nagendra Chillale
fonte