Eu tenho uma máquina poderosa com 70 GB de RAM. Quantas instâncias do Oracle com 20 GB podem ser criadas?

9

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 > 10Gmesmo quando eu mantenho o primeiro banco de dados inativo. Se eu definir sga_target >=10Gisso dá erro abaixo na inicialização:

ORA-27104: os limites definidos pelo sistema para a memória compartilhada foram configurados incorretamente

Embora free -mmostre 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=20Ge 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
user419534
fonte

Respostas:

13

Os parâmetros do seu kernel precisam ser modificados.

Edite /etc/sysctl.confe verifique se as seguintes linhas estão presentes:

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

Em seguida, reinicie a máquina.

Philᵀᴹ
fonte
Graças isso funciona. Poderia me informar como você pode decidir esses valores para shmall, shmax e shmni etc. Existe alguma maneira de calcular esses valores?
User419534
3
shmmax é o tamanho máximo em bytes de um único segmento de memória compartilhada, você tem 70Gb de RAM, então usei 70 * 1024 * 1024 * 1024. shmall é a soma máxima de todos os segmentos de memória compartilhada que podem existir ao mesmo tempo e é medido em páginas. O tamanho da página no Linux geralmente é de 4k, então eu dividi o número shmmax por 4096. #
315 de Phil
0

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

Nagendra Chillale
fonte