>>Здравствуйте.
>>
>>Возникла такая проблема. От старой установки 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).
Странное дело...