Здравствуйте.Возникла такая проблема. От старой установки PostgreSQL 8.0.3 остались только её юинарный данные (содержимое $PGDATA). Дампов нет.
Теперь вот как вновьустановленному серверу их скормить? Ругается благим матом. 8.0.7.
Да, и было Linux теперь FreeBSD
# ./010.pgsql.sh start
FATAL: could not create semaphores: No space left on device
DETAIL: Failed system call was semget(5432004, 17, 03600).
HINT: This error does *not* mean that you have run out of disk space.
It occurs when either the system limit for the maximum number of semaphore sets (SEMMNI), or the system wide maximum number of semaphores (SEMMNS), would be exceeded. You need to raise the respective kernel parameter. Alternatively, reduce PostgreSQL's consumption of semaphores by reducing its max_connections parameter (currently 100).
The PostgreSQL documentation contains more information about configuring your system for PostgreSQL.на чистой базе, созданной initdb всё ok...
>Здравствуйте.
>
>Возникла такая проблема. От старой установки PostgreSQL 8.0.3 остались только её юинарный
>данные (содержимое $PGDATA). Дампов нет.
>
>Теперь вот как вновьустановленному серверу их скормить? Ругается благим матом. 8.0.7.
>
>Да, и было Linux теперь FreeBSD
>
># ./010.pgsql.sh start
>FATAL: could not create semaphores: No space left on device
>DETAIL: Failed system call was semget(5432004, 17, 03600).
>HINT: This error does *not* mean that you have run out
>of disk space.
> It occurs when either
>the system limit for the maximum number of semaphore sets (SEMMNI),
>or the system wide maximum number of semaphores (SEMMNS), would be
>exceeded. You need to raise the respective kernel parameter.
>Alternatively, reduce PostgreSQL's consumption of semaphores by reducing its max_connections parameter
>(currently 100).
> The PostgreSQL documentation contains
>more information about configuring your system for PostgreSQL.
>
>на чистой базе, созданной initdb всё ok...Самое надежное - это поставить PostgreSQL 8.0.3(без разницы под какой осью), сделать полный дамп и уже потом залить в новую версию.
А вообще на их сайте что-то по этому поводу было, только вот точную ссылку дать не могу....
>>Здравствуйте.
>>
>>Возникла такая проблема. От старой установки PostgreSQL 8.0.3 остались только её юинарный
>>данные (содержимое $PGDATA). Дампов нет.
>>
>>Теперь вот как вновьустановленному серверу их скормить? Ругается благим матом. 8.0.7.
>>
>>Да, и было Linux теперь FreeBSD
>>
>># ./010.pgsql.sh start
>>FATAL: could not create semaphores: No space left on device
>>DETAIL: Failed system call was semget(5432004, 17, 03600).
>>HINT: This error does *not* mean that you have run out
>>of disk space.
>> It occurs when either
>>the system limit for the maximum number of semaphore sets (SEMMNI),
>>or the system wide maximum number of semaphores (SEMMNS), would be
>>exceeded. You need to raise the respective kernel parameter.
>>Alternatively, reduce PostgreSQL's consumption of semaphores by reducing its max_connections parameter
>>(currently 100).
>> The PostgreSQL documentation contains
>>more information about configuring your system for PostgreSQL.
>>
>>на чистой базе, созданной initdb всё ok...
>
>Самое надежное - это поставить PostgreSQL 8.0.3(без разницы под какой осью), сделать
>полный дамп и уже потом залить в новую версию.
>А вообще на их сайте что-то по этому поводу было, только вот
>точную ссылку дать не могу....А разве есть большая разница 8.0.3/8.0.7? Багфиксы ж вроде только. Да и не на это ругается оно.
А вообще интересную вещь заметил: смотрю системные вызовы при помощи truss, в случае с базами из Linux - много системных вызовов на получение семафоров, причём на последнем обламывается, семафора не дают, и ругань идёт на No space left on device и всё вываливается.
Если запустить на вновь созданной базе - никаких вызовов на получение семафоров не происходит.
__semctl(0x2d0001,0xd,0x8,0xbfbfe1f0) = 0 (0x0)
__semctl(0x2d0001,0xe,0x8,0xbfbfe1f0) = 0 (0x0)
__semctl(0x2d0001,0xf,0x8,0xbfbfe1f0) = 0 (0x0)
semget(0x52e2c3,0x11,0x780) = 2949122 (0x2d0002)
__semctl(0x2d0002,0x10,0x8,0xbfbfe1f0) = 0 (0x0)
semop(0x2d0002,0xbfbfe220,0x1) = 0 (0x0)
__semctl(0x2d0002,0x0,0x8,0xbfbfe1f0) = 0 (0x0)
__semctl(0x2d0002,0x1,0x8,0xbfbfe1f0) = 0 (0x0)
__semctl(0x2d0002,0x2,0x8,0xbfbfe1f0) = 0 (0x0)
__semctl(0x2d0002,0x3,0x8,0xbfbfe1f0) = 0 (0x0)
__semctl(0x2d0002,0x4,0x8,0xbfbfe1f0) = 0 (0x0)
__semctl(0x2d0002,0x5,0x8,0xbfbfe1f0) = 0 (0x0)
__semctl(0x2d0002,0x6,0x8,0xbfbfe1f0) = 0 (0x0)
__semctl(0x2d0002,0x7,0x8,0xbfbfe1f0) = 0 (0x0)
__semctl(0x2d0002,0x8,0x8,0xbfbfe1f0) = 0 (0x0)
__semctl(0x2d0002,0x9,0x8,0xbfbfe1f0) = 0 (0x0)
__semctl(0x2d0002,0xa,0x8,0xbfbfe1f0) = 0 (0x0)
__semctl(0x2d0002,0xb,0x8,0xbfbfe1f0) = 0 (0x0)
__semctl(0x2d0002,0xc,0x8,0xbfbfe1f0) = 0 (0x0)
__semctl(0x2d0002,0xd,0x8,0xbfbfe1f0) = 0 (0x0)
__semctl(0x2d0002,0xe,0x8,0xbfbfe1f0) = 0 (0x0)
__semctl(0x2d0002,0xf,0x8,0xbfbfe1f0) = 0 (0x0)
semget(0x52e2c4,0x11,0x780) ERR#28 'No space left on device'
FATAL: could not create semaphores: No space left on device
DETAIL: Failed system call was semget(5432004, 17, 03600).
HINT: This error does *not* mean that you have run out of disk space.
It occurs when either the system limit for the maximum number of semaphore sets (SEMMNI), or the system wide maximum number of semaphores (SEMMNS), would be exceeded. You need to raise the respective kernel parameter. Alternatively, reduce PostgreSQL's consumption of semaphores by reducing its max_connections parameter (currently 100).Странное дело...
проскипано...
>= 0 (0x0)
>semget(0x52e2c4,0x11,0x780)
> ERR#28
>'No space left on device'
>FATAL: could not create semaphores: No space left on device
>DETAIL: Failed system call was semget(5432004, 17, 03600).
>HINT: This error does *not* mean that you have run out
>of disk space.
> It occurs when either
>the system limit for the maximum number of semaphore sets (SEMMNI),
>or the system wide maximum number of semaphores (SEMMNS), would be
>exceeded. You need to raise the respective kernel parameter.
>Alternatively, reduce PostgreSQL's consumption of semaphores by reducing its max_connections parameter
>(currently 100).
>
>Странное дело...
Я подобных экспериментов не проводил - всегда дампил-накатывал. Но если дело во FreeBSD и в семафорах, попробуй так:В postgresql.conf уменьшить число конектов до 5:
max_connections = 5
и запустить постгрес, если поднимется нормально, тогда надо перекомпилить ядро, добавив в конфиг:options SHMMAXPGS=65536
options SEMMNI=40
options SEMMNS=240
options SEMUME=40
options SEMMNU=120
Тогда можно увеличить количество коннектов.
>проскипано...
>>= 0 (0x0)
>>semget(0x52e2c4,0x11,0x780)
>> ERR#28
>>'No space left on device'
>>FATAL: could not create semaphores: No space left on device
>>DETAIL: Failed system call was semget(5432004, 17, 03600).
>>HINT: This error does *not* mean that you have run out
>>of disk space.
>> It occurs when either
>>the system limit for the maximum number of semaphore sets (SEMMNI),
>>or the system wide maximum number of semaphores (SEMMNS), would be
>>exceeded. You need to raise the respective kernel parameter.
>>Alternatively, reduce PostgreSQL's consumption of semaphores by reducing its max_connections parameter
>>(currently 100).
>>
>>Странное дело...
>Я подобных экспериментов не проводил - всегда дампил-накатывал. Но если дело во
>FreeBSD и в семафорах, попробуй так:
>
>В postgresql.conf уменьшить число конектов до 5:
>max_connections = 5
>и запустить постгрес, если поднимется нормально, тогда надо перекомпилить ядро, добавив в
>конфиг:
>
>options SHMMAXPGS=65536
>options SEMMNI=40
>options SEMMNS=240
>options SEMUME=40
>options SEMMNU=120
>
>Тогда можно увеличить количество коннектов.
Действительно помогло. Спасибо огромное!