В Solaris есть Dynamic Intimate Shared Memory (DISM), в противовес ISM.
Чтобы понять, какая технология у вас используется, можете выполнить команду
Код:
ps -ef | grep dism
которая должна выявить процесс ora_dism, управляющий динамическим распределением памяти. Либо можно натравить pmap на smon
Код:
ps -aef | grep ora | grep smon
pmap -xs $PID | grep ism
вот с этого начинается самое веселое. Дело в том, что параметр sga_max_size выставляется мастером создания базы по умолчанию. Это хорошо и правильно для всех ОС... Кроме Solaris, которая при виде этого параметра сразу включает DISM. Проблемой это является потому, что DISM достаточно корявая штука и, как выясняется, отдает иногда совершенно в неожиданных местах.
Выходом в данном случае будет удаление sga_max_size. В этом случае будет использоваться ISM.
Отключать DISM рекомендуют и , причем, на x86 - в обязательном порядке. У меня же проблема вылезла на м4000. Если пытаетесь выделить в DISM объем памяти больший, чем своп - получаете проблемы. На других операционках такого бреда нет.