У меня мощная машина с 70 ГБ оперативной памяти. Сколько экземпляров Oracle с 20 ГБ можно создать?

9

У меня мощная машина с 70 ГБ оперативной памяти. Я создал один экземпляр Oracle с 20 ГБ как sga_target. Я не могу создать еще один экземпляр Oracle, sga_target > 10Gдаже если у меня отключена первая база данных. Если я установил, sga_target >=10Gэто дает ниже ошибку при запуске:

ORA-27104: системные ограничения для общей памяти были неправильно настроены

Хотя free -mпоказывает, что памяти достаточно:

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

Нужно ли увеличить пространство подкачки? Любой указатель в этом отношении высоко ценится.

Также для 70 ГБ памяти, для создания многих экземпляров, что было бы наилучшим значением для пространства подкачки - есть ли способ рассчитать это? Моя цель состоит в том, чтобы иметь по крайней мере два экземпляра в каждом sga_target=20Gи поддерживать только один экземпляр за раз. Если мне не хватает какой-либо концепции здесь?

Выход ipcs -imкак показано ниже

------ 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
источник

Ответы:

13

Ваши параметры ядра должны быть изменены.

Отредактируйте /etc/sysctl.confи убедитесь, что присутствуют следующие строки:

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

Затем перезагрузите машину.

Philᵀᴹ
источник
Спасибо, это работает. Не могли бы вы дать мне знать, как вы можете определить эти значения для shmall, shmax, shmni и т. Д. Есть ли какой-нибудь способ для их вычисления?
user419534
3
shmmax - максимальный размер в байтах одного сегмента разделяемой памяти, у вас 70 ГБ ОЗУ, поэтому я использовал 70 * 1024 * 1024 * 1024. shmall - это максимальная сумма всех сегментов разделяемой памяти, которые могут существовать одновременно и измеряется в страницах. Размер страницы в Linux обычно составляет 4 КБ, поэтому я разделил число shmmax на 4096.
Philᵀᴹ
0

Установка значения shmmax зависит от того, является ли ОС 32-битной или 64-битной. Есть металинк, который подробно объясняет это.

Максимальные значения SHMMAX для Linux x86 и x86-64 [ID 567506.1]

Пожалуйста, посмотрите.

Есть также заметка о Shared Memory / Semaphores для Oracle, которая должна быть интересной для чтения.

TECH: объяснение семафоров Unix и общей памяти [ID 15566.1]

С уважением, Нагендра Чилла

Нагендра Чилла
источник