The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Каталог документации / Раздел "Базы данных, SQL" (Архив | Для печати)
=======================================================
Наиболее часто задаваемые вопросы (FAQ) по PostgreSQL >= V6.1
Применительно к Linux
ЧИТАТЬ В СОЧЕТАНИИ С ОБЫЧНЫМ FAQ
=======================================================
последнее обновление:           Fri Jun 19 13:35:00 BST 1998

текущий сопроводитель:  Andrew C.R. Martin ([email protected])
первоначальный автор:   Andrew C.R. Martin ([email protected])

Перевод выполнил Юрий Козлов, очень рад замечаниям по адресу [email protected].
Чтв Ноя 18 19:09:53 MSK 1999
Сергиев-Посадская LUG spslug.sposad.ru

Изменения в версиях (* = изменен, + = новый, - = удален):

+1.23)  Почему компиляция прерывается с сообщением о необъявленных F_BOOLIN,
        F_BOOLOUT и F_BYTEAIN?

Этот файл приблизительно делится так:
1.*)    Установка PostgreSQL
2.*)    Компиляция принадлежащих программ
3.*)    Проблемы при работе


Ответы на вопросы:
1.1)    Какие изменения мне нужно сделать в src/Makefile.global или
        src/Makefile.custom и что нужно еще изменить?
1.2)    Что за проблема с отсутствующей libreadline?
1.3)    [REDHAT] Что за проблема с отсутствующей libdl и dlfcn.h?
1.4)    [SLACKWARE 3.1] Что за проблема с отсутствующей libdl and dlfcn.h?
1.5)    Компиляция сервера умерла с жалобой на отсутствие include файла dlfcn.h
1.6)    GCC жалуется об игнорировании опции -fpic
1.7)    Я получил предупреждение типа
        warning: cast from pointer to integer of different size
1.8)    [SuSE-Linux 4.2-4.4] Где curses и termcap?
1.9)    Что за проблема с ld.so?
1.10)   Почему я получаю ошибки `yy_flush_buffer undefined'?
1.11)   Как мне компилировать PostgreSQL на системах с a.out?
1.12)   Почему make останавливается с:
        yacc -d /disk2/PostgreSQL/src/backend/parser/gram.y
        make: /usr/bin/make: cannot execute binary file
1.13)   Какие ссылки из X11_LIB в libsocket и libnsl в src/Makefile.global?
1.14)   [DEBIAN] Где libtermcap?
1.15)   [REDHAT] Могу я получить PostgreSQL в RPM?
1.16)   При компиляции разрабатываемой версии под Linux, компиляция
	останавливается с сообщением типа:
        In file included from /usr/include/sys/sem.h:8,
                 from ipc.c:37:
        /usr/include/asm/bitops.h:32: warning: no previous prototype for Set_bit'
        ....
        make: *** [ipc.o] Error 1
1.17)   При компиляции postgres, gcc сообщает о сигнале 11 и прерывается.
1.18)   Могу я установить 6.1.1 под MkLinux?
1.19)   Почему make вываливается или дохнет?
1.20)   Как можно сделать оптимизацию под 486 или pentium процессор
1.21)   Почему я получаю странные результаты во время печати (например
        в регрессивном тесте 'timespan')?
1.22)   Почему я не могу получить любую разделяемую библиотеку для libpq при
        компиляции 6.3.2?
1.23)   Почему компиляция прерывается с сообщением о необъявленных F_BOOLIN,
        F_BOOLOUT и F_BYTEAIN?
2.1)    Линковщик не может найти libX11 при компиляции pgtclsh
3.1)    Я получаю сообщение об ошибке _fUnKy_POSTPORT_sTuFf_ undefined, при
	запуске сценариев типа createuser
3.2)    Я запускаю postmaster и после этого система говорит 
	'Bad system call(Core dumped)'
3.3)    Почему при запуске Postmaster, я получаю ошибку в форме
        Failed Assertion("!(file != 0):(null)", File:
        "/usr/local/PostgreSQL/src/backend/storage/file/fd.c", Line: 257)
        !(file != 0) (0)
        initdb: could not create template database
        initdb: cleaning up.
3.4)    Почему createuser не работает?
3.5)    Почему я получаю ошибку типа:
        IpcMemoryCreate: memKey=155356396 , size=760632 ,
        permission=384IpcMemoryCreate: shmget(..., create, ...)
        failed: Invalid argument
3.6)    Почему psql прерывается с:
        psql: can't load library 'libpq.so.1'
3.7)    Другая странная работа
3.8)    При  выключении системы и запущенном PostgreSQL, Linux всегда
        выполняет диску fsck при загрузке.
3.9)    Почему Query 32 в регрессивном тесте выполняется так долго?
3.10)   Почему я получаю забавные округленные результаты в некоторых
	операциях с датой/временем, типа
           select '4 hours'::timespan;
        returning '3 hours 59 minutes 60 seconds'?

----------------------------------------------------------------------
Раздел 1:      Компиляция PostgreSQL
----------------------------------------------------------------------

1.1)    Какие изменения мне нужно сделать в src/Makefile.global или
        src/Makefile.custom и что нужно еще изменить?

	Изменения в makefileах легче всего сделать запустив сценарий shell
        customize из каталога src который запишет Makefile.custom для тебя.

        Еще только одно изменение может придется сделать - это заменить
        Flex, если он имеет версию 2.5.3, которая имеет баг, который
	сам себя обнаруживает при отказе createuser failing (смотри вопрос 3.4)

        Если ты модифицируешь makefileы вручную, то ты *должен* установить
	следующую переменную:
                PORTNAME=       linux

        Тебе также нужно изменить в установке:
                POSTGRESDIR

        Если ты включил опцию USE_TCL, то тебе нужно установить эти:
                TCL_INCDIR=
                TCL_LIBDIR=
                TCL_LIB=
                TK_INCDIR=
                TK_LIBDIR=
                TK_LIB=
                X11_INCDIR=
                X11_LIBDIR=
                X11_LIB=

        На моей системе Slackware3.0, они такие:
                TCL_INCDIR=     /usr/include/tcl
                TCL_LIBDIR=     /usr/lib
                TCL_LIB=        -ltcl
                TK_INCDIR=      /usr/include/tcl
                TK_LIBDIR=      /usr/lib
                TK_LIB=         -ltk
                X11_INCDIR=     /usr/include/X11
                X11_LIBDIR=     /usr/X386/lib
                X11_LIB=        -lX11

        Ты также можешь сделать любые другие нужные изменения, как описано в
	файле INSTALL и в Makefile.global


1.2)    Что за проблема с отсутствующей libreadline?

        Системы Linux обычно не поставляются с установленной библиотекой
	GNU readline. Или проверь, что ты не включил опции readline в
        src/Makefile.global или src/Makefile.custom или установи библиотеку
	GNU readline.

        Заметим, что Debian Linux (как FreeBSD) поставляют с установленной
	readline.

	
1.3)    [REDHAT] Что за проблема с отсутствующей libdl и dlfcn.h?

        Она сама проявляется в неспособности установить связь с функциями
        типа dlopen(), dlclose(), и т.д. во время последней фазы компиляции.

        Библиотека libdl используется для динамической линковки созданных
	пользователем функций во время выполнения. По некоторым причинам
	эту библиотеку пропустили в дистрибутиве Redhat.
	Кажется, в последнем Redhat 4.0 (Colgate) это исправлено.

        RedHat теперь имеет ld.so RPM пакет на своем FTP сайте.
        Просто стяни:

                ftp://ftp.redhat.com/pub/redhat/devel/i386/RedHat/RPMS/ld.so-1.7.14-4.i386.rpm

        Установи RPM файл как обычно и отвали!

        ЗАМЕЧАНИЕ! Тебе надо перезапустить configure и сделать make clean
        после установки библиотеки и перед компиляцией.

        Было одно сообщение о повреждении системы в результате доступа программ
        к этим библиотекам во время их обновления (что не удивительно).
	Следовательно, хорошей идеей будет перегрузить систему перед установкой
	новых библиотек и запускать как можно меньше во время апргейда. Переход
	в однопользовательский режим, вероятно хорошая идея!

        Если ты хочешь пойти трудным путем, то можешь получить библиотеку и
	файл заголовка:

                ftp://tsx-11.mit.edu/pub/linux/packages/GCC/ld.so-1.7.14.tar.gz

        Еще, ты можешь найти скомпилированные двоичные файлы в
        distributions/debian/buzz/binary-i386/base/ld.so-1.7.14-4.deb
        на этом сайте, или следуй инструкциям из вопроса 1.2 для исправления
	той же ошибки, с более ранним релизом Slackware 3.1.
        Не используй этот метод если не знаешь что делаешь!



1.4)    [SLACKWARE 3.1] Что за проблема с отсутствующей libdl and dlfcn.h?

        Она сама проявляется в неспособности установить связь с функциями
        типа dlopen(), dlclose(), и т.д. во время последней фазы компиляции.

        Смотри ответ на вопрос 1.3. Slackware больше версии 3.0 поставлялись
	с этой библиотекой и заголовочным файлом и они кажется вернулись к
	этому опять в последней версии 3.1, но раньше релиза 3.1
        (перед 9ым сентября September 1996) она была пропущена и много
        версий CD-ROM было отпечатано из первой версии релиза 3.1.

        Было одно сообщение о повреждении системы в результате доступа программ
        к этим библиотекам во время их обновления (что не удивительно).
	Следовательно, хорошей идеей будет перегрузить систему перед установкой
	новых библиотек и запускать как можно меньше во время апргейда. Переход
	в однопользовательский режим, вероятно хорошая идея!

        Это легче всего исправить - это получить файл ldso.tgz с диска a4
	наиболее нового дистрибутива Slackware и распаковать этот файл
        из корневого (/) каталога, затем выполнить

                sh install/doinst.sh

        для полной установки. Затем

                ldconfig

	ЗАМЕЧАНИЕ! Тебе надо перезапустить configure и сделать make clean
        после установки библиотеки и перед компиляцией.

        Если ты хочешь устанавливать вручную, то во-первых ты должен установить
	файл dlfcn.h в /usr/include.

        Во-вторых, установи файл libdl.so.1.7.14 (или любой последний релиз)
	в /lib, затем выполни:

                cd /lib
                ln -sf libdl.so.1.7.14 libdl.so.1
                ln -sf libdl.so.1 libdl.so

        На некоторых системах (в зависимости от конфигурации GCC) может
	понадобиться выполнить:

                cd /usr/lib
                ln -sf /lib/libdl.so .

        Наконец

                ldconfig

	ЗАМЕЧАНИЕ! Тебе надо перезапустить configure и сделать make clean
        после установки библиотеки и перед компиляцией.


1.5)    Компиляция сервера умерла с жалобой на отсутствие заголовочного
	файла dlfcn.h

        Смотри ответ на вопрос 1.3/1.4. Не забудь, что если ты используешь
	a.out в системе, то ты должен вначале установить пакет dld
        (которые не поставляется с большинством a.out систем) чтобы
	иметь dlfcn.h. Смотри вопрос 1.11.


1.6)    GCC жалуется об игнорировании опции -fpic

        Ранние версии GCC принимают или -fpic или -fPIC.
        Это привело к тому, что более новым версиям (V2.7.2?) необходим -fPIC.
        Если ты используешь ELF версию Linux, это можно безопасно
	проигнорировать, так как -fPIC таким по умолчанию.

        Ты можешь исправить это, отредактировав src/Makefile.global и изменив
        CFLAGS_SL


1.7)    1.7)    Я получил предупреждение типа
        warning: cast from pointer to integer of different size

        Это можно было видеть в ранних версиях Postgres95 и можно
	безопасно игнорировать. PostgreSQL V6.0 компилируется без
	предупреждений, кроме относительно заголовочных файлов
        (которые могут быть также безопасно проигнорированы).


1.8)    [SuSE-Linux 4.2-4.4] Где curses и termcap?
        SuSE-Linux 4.2 имеет ncurses, но не curses. В 4.4 появились обе.
        SuSE-Linux также имеет библиотеку termcap в /usr/lib/termcap
        вместо /usr/lib.

        PostgreSQL (вплоть до V6.0)
        -----------------------
        Установи значение CURSES_LIB в src/Makefile.custom в -lncurses
        (или сделай это с помощью сценария customize).
        Добавь следующую строку в src/Makefile.custom:

                LDADD_BE+= -L/usr/lib/termcap

        Тебе может потребоваться отредактировать src/bin/psql/Makefile и изменить:
                ifeq ($(PORTNAME), linux)
                   LD_ADD+=
        на:
                ifeq ($(PORTNAME), linux)
                   LD_ADD+= -ltermcap

        PostgreSQL (V6.1)
        -----------------
        Сценарий configure не знает что в /usr/lib/termcap надо искать
	библиотеку termcap, поэтому нужно ее указать как одну из каталогов
	библиотек, когда спрашивается про дополнительные каталоги поиска.

        Если это не сработает (у меня нет SuSE чтобы проверить это), то
	после запуска configure, тебе нужно отредактировать в
        src/Makefile.global и добавить -ltermcap строку LDFLAGS
        (после -lreadline). (Иначе, ты можешь изменить
        src/Makefile.custom перед запуском configure.)

        Некоторые версии SuSE обеспечены только ncurses, так что тебе
	придется использовать ncurses вместо curses изменив
        -lcurses на -lncurses. (Работает на SuSE 5.1)


1.9)    Что за проблема с ld.so?

        Если у тебя проблема с ld.so, другой библиотекой необходимой для
        динамической загрузки ELF, то у тебя испорченная установка или
        (наиболее предпочтительней) обнови Linux.

        Смотри ответы на вопрос 1.3/1.4. Тебе может потребоваться установить
        ld.so.x.y.z в /lib запустить ldconfig.

        Наиболее новый стабильный релиз ld пакета это 1.7.14
        На время написания, версии 1.8.x ld были экспериментальными.

1.10)   Почему я получаю ошибки `yy_flush_buffer undefined'?

        Это не совсем только в Linux, но обычна на старых установках Linux.
	Ты должен иметь новую версию flex (2.5.2 или позднее)
        для компиляции PostgreSQL. Заметим, что flex 2.5.3 имеет баг: смотри
        вопрос 3.4.

1.11)   Как мне компилировать PostgreSQL на системах с a.out?

        Во-первых, ты должен установить библиотеку dld. Ее можно получить с
        Sunsite:
        Linux/libs/dld.3.2.7.tar.gz
        (ftp://sunsite.unc.edu/pub/Linux/libs/dld.3.2.7.tar.gz)

        Во-вторых, добавь следующую строку src/Makefile.custom:
                LINUX_ELF=
        (или используй сценарий customize)

1.12)   Почему make останавливается с:
        yacc -d /disk2/PostgreSQL/src/backend/parser/gram.y
        make: /usr/bin/make: cannot execute binary file

        Эта проблема была в ранних версиях Postgres95. По умолчанию
        в PostgreSQL используется bison -y, а не yacc.

        yacc обычно реализуется как сценарий, который вызывает bison -y
        По некоторым причинам (определенные версии make? определенные версии
        bash?) make не может выполнить этот файл сценария.

        Чтобы исправить это, просто отредактируй src/mk/port/postgres.mk.linux
        и в конце файла измени:
                # YACC = bison -y
        на
                YACC = bison -y

1.13)   Какие ссылки из X11_LIB в libsocket и libnsl в src/Makefile.global?

        Эта проблема была в 1.08 (они только для Sun Solaris).
        Она решена в 1.09 и 6.0

1.14)   [DEBIAN] Где libtermcap?

        Debian Linux поставляется без библиотеки termcap и использует ncurses
        (которая использует terminfo). Не нужно изменять переменную
        CURSES_LIB в src/bin/psql/Makefile т.к. в Debian ссылка
        из libncurses на libcurses (в отличие от SuSE-Linux --- смотри
        вопрос 1.8).

        Может понадобиться отредактировать src/bin/psql/Makefile изменив:
                ifeq ($(PORTNAME), linux)
                   LD_ADD+= -ltermcap
        на:
                ifeq ($(PORTNAME), linux)
                   LD_ADD+=


1.15)   [REDHAT] Могу я получить PostgreSQL в RPM?

        Да! Michal Mosiewicz
        (http://www.pdi.lodz.pl/~mimo) легко создал RPM для
        PostgreSQL V6.0 для архитектуры Intel, который можно скачать с
        ftp://ftp.redhat.org/pub/Incoming/Postgres-6.0-1.i386.rpm

        Эта собранная версия, исходный RPM у него как я писал (3rd Feb 1997).

1.16)   При компиляции разрабатываемой версии под Linux, компиляция
	останавливается с сообщением типа:
        In file included from /usr/include/sys/sem.h:8,
                 from ipc.c:37:
        /usr/include/asm/bitops.h:32: warning: no previous prototype for Set_bit'
        ....
        make: *** [ipc.o] Error 1
	
        Эта проблема из-за того, что в Linux прототипов для этих встроенных
	функций. Решение лежит в каталоге
        .../src/backend/storage/ipc и отредактируй Makefile.
        Измени строку
           CFLAGS+=$(INCLUDE_OPT)
        на
           CFLAGS+=$(INCLUDE_OPT) -Wno-error

        Сделай тоже самое в каталоге ../src/backend/storage/lmgr.


1.17)   При компиляции postgres, gcc сообщает о сигнале 11 и прерывается.
        Более точно:
           gcc: Internal compiler error: program cc1 got fatal
                signal 11

        Это может быть проблема железа/памяти. PortgreSQL - это большая
	программа, и большие компиляции gcc (такие как сборка
        PostgreSQL или перестройка ядра) напрягают память как несколько
	программ, в результате ошибки, которые не выявляются при нормальной
	работе. Меньшим операционным системам также не нравится напрягать
	железо до такого состояния, так что ты никогда можешь не увидеть
	таких проблем под DOS/Windows.

        Больше информации об этой проблеме на:
           http://www.bitwizard.nl/sig11

        В этом Sig11 FAQ говорится что такая проблема появляется
	на Redhat 5.0 gcc работающем на процессорах Cyrix. Подробней смотри
        на URL выше!

1.18)   Могу я установить 6.1.1 под MkLinux?

        Tatsuo Ishii сделал это под
        MkLinux DR2.1 update2 после маленького патча доступного на:
        ftp://ftp.sra.co.jp/pub/cmd/postgres/6.1.1/mklinux.patch.gz

1.19)   Почему make вываливается или дохнет?

        Было несколько сообщений о gmake, который или просто вываливается
	и выдает об ошибках сегментации. В последней проблеме сообщалось
	о gmake 3.74 - обновление до 3.76.1 решило проблему.
        Однако, 3.74 замечательно работал при настройке другими людьми.
        Короче, попытайся обновить gmake на последнюю версию какую сможешь
	найти, перед тем как сообщать о проблеме

1.20)   Как можно сделать оптимизацию под 486 или pentium процессор

        Флаги компилятора по умолчанию не выполняют оптимизации для 486
        или Pentium процессоры. Чтобы добавить такую оптимизацию, отредактируй
        Makefile.custom и добавь:

           CFLAGS+= -m486

        или (для новых компиляторов, которые большинство людей пока не запускало)

           CFLAGS+= -mpentium
        или
           CFLAGS+= -mpentiumpro

1.21)   Почему я получаю странные результаты во время печати (например
        в регрессивном тесте 'timespan')?	   
        Время показывается как: '4 hours 59 mins 60.00 secs'
        вместо '5 hours'

        Эта проблема с библиотекой glibc2, которая есть Redhat 5.0.
	Обнови glibc до последней версии RedHat для v5.0/hurricane.
	Все предыдущие glibc-2.0.7 похоже имеют проблему.

1.22)   Почему я не могу получить любую разделяемую библиотеку для libpq при
        компиляции 6.3.2?

        Это сломалось в последнюю минуту в настройке Linux для
        v6.3.2. Ищи в ftp://postgresql.org/pub/patches/ исправления,
        включающие linux_elf патч.

1.23)   Почему компиляция прерывается с сообщением о необъявленных F_BOOLIN,
        F_BOOLOUT и F_BYTEAIN?

        Фактически, выдаются такие сообщения:

        -I/usr/include/readline -O2 -Wall -Wmissing-prototypes -I..
        -Wno-error -c bootstrap.c -o bootstrap.o
        bootstrap.c:160: `F_BOOLIN' undeclared here (not in a function)
        bootstrap.c:160: initializer element for `Procid[0].inproc' is not
        constant
        bootstrap.c:160: `F_BOOLOUT' undeclared here (not in a function)
        bootstrap.c:160: initializer element for `Procid[0].outproc' is not
        constant
        bootstrap.c:161: `F_BYTEAIN' undeclared here (not in a function)
        bootstrap.c:161: initializer element for `Procid[1].inproc' is not
        constant

        Это мудрено и неизвестно почему это случается, т.к. эти константы
        кажется неопределены где-то еще.

        Решением является проверить что cpp включен в путь перед запуском make.

        На Redhat 5.1, cpp в /usr/lib/gcc-lib/i386-redhat-linux/2.7.2.3



----------------------------------------------------------------------
Раздел 2:      Компиляция принадлежащих программ
----------------------------------------------------------------------

2.1)    Линковщик не может найти libX11 при компиляции pgtclsh

        Добавь в src/Makefile.custom
                X11_LIBDIR = /usr/X11R6/lib


----------------------------------------------------------------------
Раздел 3:      Проблемы при работе
----------------------------------------------------------------------

3.1)    Я получаю сообщение об ошибке _fUnKy_POSTPORT_sTuFf_ undefined, при
	запуске сценариев типа createuser

        Это баг в V1.06-V1.07 Postgres и исправлен в V1.08 и выше.

3.2)    Я запускаю postmaster и после этого система говорит 
	'Bad system call(Core dumped)'

        Это указывает, что ты не включил в ядро поддержку разделяемой
	памяти. Тебе нужно перекомпилировать ядро Linux, добавив это
	свойство.

3.3)    Почему при запуске Postmaster, я получаю ошибку в форме
        Failed Assertion("!(file != 0):(null)", File:
        "/usr/local/PostgreSQL/src/backend/storage/file/fd.c", Line: 257)
        !(file != 0) (0)
        initdb: could not create template database
        initdb: cleaning up.
	
        Права на файл /dev/null неправильные.

        ls -l /dev/null должен дать что-то такое:

                crw-rw-rw-  1 root  wheel    2,   2 Oct  8 18:41 /dev/null

        Поправь права, используя:

                chmod a+rw /dev/null

3.4)    Почему createuser не работает?

        Это проблема с версией 2.5.3 GNU flex и createuser.
        Ты можешь или даунгрейднуть flex до V2.5.2, апргейднуть до V2.5.4
        или наложить патч на V2.5.3, который лежит в doc/README.flex
        Ты можешь получить V2.5.4 на
        ftp://prep.ai.mit.edu/pub/gnu/flex-2.5.4.tar.gz

3.5)    Почему я получаю ошибку типа:
        IpcMemoryCreate: memKey=155356396 , size=760632 ,
        permission=384IpcMemoryCreate: shmget(..., create, ...)
        failed: Invalid argument

        Ты не включил поддержку IPC в ядро Linux. Тебе нужно пересобрать
	ядро, включив эту опцию.

3.6)    Почему psql прерывается с:
        psql: can't load library 'libpq.so.1'

        Psql компилируется динамически линкуясь с библиотекой libpq.

        Для решения этого, тебе нужно войти как root и отредактировать
                /etc/ld.so.conf
        Добавить отдельную строчку в конец, содержащую имя каталога
        библиотеки PostgreSQL (подкаталог lib установки
        PostgreSQL) и запустить
                /sbin/ldconfig -v

        Еще, (and if you don't have root access), можно использовать
        переменную среды LD_LIBRARY_PATH.

        Переменная LD_LIBRARY_PATH содержит разделяемый двоеточиями
	список путей поиска разделяемых библиотек. В этом списке они
	ищутся перед библиотеками, указанными в ldconfig.

        Поэтому под Bash, сделай что-то вроде этого:
                export LD_LIBRARY_PATH='PathToPGSQL'/lib
        или, при использовании tcsh
                setenv LD_LIBRARY_PATH 'PathToPGSQL'/lib
        заменив 'PathToPGSQL' соответствующим путем к каталогу верхнего
	уровня PostgreSQL

        Заметим, что команда ldd может быть использована для динамической линковки
        исполняемых файлов со всеми разделяемыми библиотеками, от которых они
	зависят, из списка путей.

3.7)    Другая странная работа	

        Я не знаю, какие признаки это могут быть за исключением того что 
	ничего не работает правильно, но это может указывать на то что надо
	проверить, что динамический загрузчик загружает правильную версию
	библиотеки libpq. Если в пути есть старые версии библиотеки
        (например, в /usr/lib), то они могут загружаться вместо новой
	версии, какую ты хотел загрузить. Проверь, нет ли их в пути
        и смотри Q3.6 подробности загрузки библиотек.

3.8)    При  выключении системы и запущенном PostgreSQL, Linux всегда
        выполняет диску fsck при загрузке.

        Было несколько сообщений что это происходило и кажется из-за
        запуска PostgreSQL из /etc/inittab как советуется
        в документе INSTALL.

        Поэтому рекомендуется запускать postmaster из сценария
        rc. В релизах Slackware-типа, ты должен изменить
        /etc/rc.d/rc.local для запуска postmaster. В релизах RedHat-типа
        нужно создать сценарий в стиле SysV в /etc/rc.d/rc3.d, основанный
	на файле скелете /etc/rc.d/init.d.

        Есть пример файла в contrib/linux/postgres.init

        Вот другой пример файла предложенный John Robinson,
	который нужно изменить как потребуется:

#!/bin/sh
#
# postgreSQL.init Этот сценарий shell выполняет запуск и остановку
#               PostgreSQL postmaster.
#

# Библиотека исходных функций.
. /etc/rc.d/init.d/functions

# Начальная сетевая конфигурация.
. /etc/sysconfig/network

# Проверка, запущена ли сеть.
[ ${NETWORKING} = "no" ] && exit 0

# Смотри как вызывать.
case "$1" in
  start)
        # Start daemons.
        echo -n "Starting postgres Postmaster daemon:"
        if [ -z "`pidofproc postmaster`" ]
        then
                su postgres -c "/usr/local/pgsql/bin/postmaster -D /home/postgreSQL/data -p 5432 &"
                echo -n " postmaster"
        else
                echo -n " (already running)"
        fi
        echo
        touch /var/lock/subsys/postgres
        ;;
  stop)
        # Stop daemons.
        echo -n "Shutting down postgres Postmaster daemon: "
        killall -TERM postmaster 2>/dev/null
        killall -TERM postgres 2>/dev/null
        echo
        rm -f /var/lock/subsys/postgres
        ;;
  *)
        echo "Usage: postgres {start|stop}"
        exit 1
esac

exit 0



3.9)    Почему Query 32 в регрессивном тесте выполняется так долго?

        Из-за бага в сценариях регрессивного теста, который появляется только 
        в linux машинах. Есть два пути обойти проблему, насколько мне известно
        (информация от Tatsuo Ishii ):

        1. измени в regress.sh:
                time postgres -texecutor -tplanner -Q bench < bench.sql
        на:
                postgres -texecutor -tplanner -Q bench < bench.sql

        2. после запуска теста, удали строку от самого конца bench.out типа
	такой:
                85.86user 114.47system 4:49.20elapsed 69%CPU (0avgtext+0avgdata
 0maxresident)k
        затем введи:
                sh ./perquery < bench.out > & bench.out.perquery


3.10)   Почему я получаю забавные округленные результаты в некоторых
	операциях с датой/временем, типа
           select '4 hours'::timespan;
        returning '3 hours 59 minutes 60 seconds'?
	
	Тебе нужен новая библиотека glibc2 или иметь версию раньше чем
        2.0.7. Это математическая проблема округления в библиотеки.
	Обнови библиотеку.
----------------------------------------------------------------------------
Dr. Andrew C.R. Martin                             University College London
EMAIL: (Work) [email protected]    (Home) [email protected]
URL:   http://www.biochem.ucl.ac.uk/~martin
Tel:   (Work) +44(0)171 419 3890                    (Home) +44(0)1372 275775



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру