среда, 19 сентября 2007 г.

Конфигурируем тестовый сервер: Часть 3 или Ключ на старт

Продолжение. Вторая часть здесь.

Итак, информикс установлен, произведена начальная конфигурация экземпляра, о чем я писал в двух предыдущих постах "Конфигурируем тестовый сервер". Теперь самое время запустить экземпляр. Для этого достаточно в консоли (предварительно залогинившись в систему как informix и установив необходимое окружение для информикса) запустить команду:

oninit -iv

Ключ -i означает что необходимо провести начальную инициализацию экземпляра, в ходе которой будут созданы необходимые служебные структуры на диске в rootdbspace. Этот флаг указывается один раз при первоначальном запуске экземпляра, в следующий раз информикс должен запускаться без флага -i, иначе все данные для этого экземпляра будут потеряны!
Ключ -v добавляет процессу запуска экземпляра информативности, и в случае каких либо неполадок в процессе запуска можно будет сразу увидеть, что именно пошло не так.
Пользователи Windows могут запустить экземпляр как сервис, для этого надо открыть консоль сервисов, найти в ней сервис информикса, в свойствах этого сервиса указать флаг -iy (только для первого запуска экземпляра!!!) и запустить сервис. Флаг -y нужен для того чтобы обеспечить неинтерактивную инициализацию экземпляра.

Совет: никогда не используйте флаг -y (который отключает подтверждение ввода) если не уверены на 100% что делаете.
Например команда onmode -k позволяет остановить информикс, предварительно выводя запрос об останове, на который надо ответить утвердительно или отрицательно. После этого она выводит кол-во подключенных к инфомиксу сессий и еще раз спрашивает об отключении. Если же использовать с ней дополнительно флаг -y то никаких запросов выведено не будет. Так что этот флаг предназначен для неинтерактивного запуска команд, например в скриптах.

О том что информикс запущен и работает нормально, можно узнать запустив команду "onstat -" которая выведет информацию о версии, статусе и времени работы информикса, а также суммарный объем занимаемой экземпляром памяти:

IBM Informix Dynamic Server Version 10.00.UC7 -- On-Line -- Up 27 days 23:40:57 -- 93056 Kbytes

Статус On-Line говорит о том что экземпляр работает и может принимать подключения.
Информикс также пишет некоторую информацию о своей работе в текстовый файл журнала. Этот файл задается в $onconfig параметром MSGPATH. Содержимое последних строк файла можно посмотреть также командой "onstat -m"

Для того чтобы остановить экземпляр, необходимо запустить в текущем окружении команду "onmode -k" от имени пользователя informix.

Активность транзакций и статистика на уровне таблицы

Иногда требуется посмотреть статистику (чтения, записи, блокировки и т.д.) по конкретной таблице или индексу. Конечно можно воспользоваться выводом команды onstat -g ppf, но если известен partnum (в десятичном или шестнадцатиричном формате) можно использовать мой скрипт. Он принимает в качестве параметра partnum и выдает статистическую информацию по объекту:

onprtninfo --
Usage: onprtninfo [-h hex_partnum|-d dec_partnum]

а вот и сам скрипт:

if [ "$1" == "-h" ]; then
export decpartn=`echo $(($2))`
elif [ "$1" == "-d" ]; then
export decpartn="$2"
else
echo "Usage: onprtninfo [-h hex_partnum|-d dec_partnum]"
exit
fi

dbaccess sysmaster - </dev/null
output to pipe "sed -e '/^$/d' " without headings
set isolation to dirty read;
select * from sysptprof
where partnum=$decpartn;
!

скрипт написан на bash и без проблем работает в AIX и Linux.

четверг, 6 сентября 2007 г.

Ищем баги

Уфф, не писал в блог больше месяца, был в отпуске, а потом было много дел.

Текущая на данный момент версия в ветке 10 это IDS 10.00.xC6W5. Она имеет ряд существенных исправлений, поэтому рекомендуется использовать ее. Но она же имеет и баг, который не позволяет ее использовать нам в промышленной эксплуатации. Поэтому пришлось просить саппорт чтобы выпустили патч. В скором времени (обещают в конце сентября) выйдет xC7, возможно данное исправление будет включено туда.

Что еще нового. В версии начиная 10.00.xC5 изменена работа btscanner: теперь он всегда имеет приоритет high, это сделано для исключения конфликтов между разными процессами. Более подробно можно почитать в описании исправления IC52093: THE METHOD FOR SETTING THREAD PRIORITY IS FLAWED AND AFFECTS BTREE SCANNER PRIORITY