понедельник, 15 октября 2007 г.

Размеры блокировок

Оказывается каждая блокировка занимает в таблице блокировок в 10 информиксе не 44 байта как писалось в документации раньше, а 120 байт:
(выдержка из ids_adref_docnotes_10.0.txt)

1.5.6 Lock Size Correction

The LOCKS topic incorrectly states "Although each additional lock takes
up just 44 bytes of resident shared memory, locks can become a resource
drain if you have a limited amount of shared memory." The correct
information is "Although each additional lock takes up just 120 bytes of
resident shared memory, locks can become a resource drain if you have a
limited amount of shared memory."

среда, 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

четверг, 19 июля 2007 г.

Informix 11.10.UC1

Скачали Informix 11.10.UC1 с сайта IBM, это уже не бета-версия. Поставил на AIX. Изменился консольный инсталлер - теперь предлагает после установки помимо прочего сконфигурить и установить тестовый инстанс информикса. Изучаем.

А вот здесь можно почитать (официальное письмо ibm) о возможностях новой версии Информикса. Немного рекламы, куда же без нее :)

понедельник, 16 июля 2007 г.

Конфигурируем тестовый сервер - Часть 2

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

Конфигурационные параметры информикса находятся в файлах onconfig.$INFORMIXSERVER и sqlhosts. Например конфигурация экземпляра информикса tst_on находится в файле onconfig.tst_on. Можно конечно назвать конфигурационный файл как угодно, лишь бы это название было установлено в переменной окружения ONCONFIG, но приведенный выше пример удобен тем что позволяет понять к какому информиксу относится конфигурационный файл. Каждый экземпляр информикса должен иметь свой конфигурационный файл.
Чтобы экземпляр мог принимать подключения к базам данных, необходимо занести некоторую информацию о подключении в файл sqlhosts.
Оба этих файла должны находится в каталоге $INFORMIXDIR/etc

Примечание
Для Windows файл sqlhosts заменен веткой реестра, доступ к которой можно получить либо напрямую с помощью regedit либо через программу SetNet32.
В Linux (или в другом Unix) sqlhosts это обычный текстовый файл.

Изменения параметров в этих конфигурационных файлах в большинстве случаев вступают в силу только после перезапуска экземпляра информикса. Но некоторые конфигурационные параметры можно менять в online, т.е. без перезапуска сервера.

Начнем с файла ONCONFIG

указываем параметры системного дбспейса ROOTDBS

ROOTNAME rootdbs # Root dbspace name
ROOTPATH /informix/data/raw_root # Path for device containing root dbspace
ROOTOFFSET 0 # Делаем смещение 0 потому что чанки на файлах
ROOTSIZE 100000 # Size of root dbspace (Kbytes)

/informix/data/rootdbs_tst - это путевое имя для Linux, для Windows оно может быть например таким C:\InformixData\rootdbs_tst
В тестовом сервере будем использовать чанки в файлах, поэтому смещение внутри чанка можно указывать 0. В промышленных серверах Informix выгоднее с т.з. производительности и надежности использовать сырые устройства (raw device) или устройства с прямым доступом минуя кэш операционной системы, и в некоторых случаях смещение для таких устройств должно быть ненулевым, например при использовании Logical Volume Manager.

Параметры физического журнала

Физический журнал это то место куда информикс записывает before image (исходных образов) страниц с данными перед их модификацией для обеспечения отказоустойчивости при возможных сбоях оборудования или программного обеспечения. Для тестового сервера расположение физ. журнала делаем в ROOTDBS, в дальнейшем его можно будет перенести в отдельный dbspace. Размер делаем 50 Mb что вполне достаточно для тестирования.

PHYSDBS rootdbs_tst_on # Location (dbspace) of physical log
PHYSFILE 51200 # Physical log file size (Kbytes)

Параметры логического журнала

В логический журнал (журнал транзакций) записываются сведения о всех изменениях данных, о чекпоинтах, а также другая служебная информация. Логический журнал используется информиксом для управления транзакциями с целью восстановления логической целостности данных в случае сбоев, для обеспечения отката транзакций, и для поддержки восстановления данных из бэкапов. Все базы данных на экземпляре информикса имеют общий логический журнал.

LOGFILES 10 # Number of logical log files
LOGSIZE 51200 # Logical log size (Kbytes)

Первоначально при инициализации экземпляра логический журнал располагается в ROOTDBS, но затем его можно будет перенести в другой dbspace.

Журнал сообщений

Это текстовый файл, сюда информикс пишет сведения о событиях на сервере: информация о чекпоинтах, добавленных блокировках и сегментах памяти, ошибках, кол-во максимальных подключений и некоторая другая полезная для администратора Информикса информация.

MSGPATH /informix/online.tst_on.log # System message log file path

Номер и имя экземпляра Информикса

Номер экземпляра Информикса это уникальный идентификатор от 0 до 255 именно столько экземпляров информикса (не путать с базами данных!) может быть запущено одновременно в операционной системе. Номер экземпляра также указывает смещение для сегментов в разделяемой памяти ОС, именно поэтому не должно быть двух экземпляров с одинаковыми SERVERNUM которые запущены на одном хосте. Имя также служит для обращения к нужному экземпляру и как связь с записями в файле sqlhosts (об этом файле позже).

SERVERNUM 0 # Unique id corresponding to a OnLine instance
DBSERVERNAME tst_on # Name of default database server

Параметры архивации сервера и файлов логического журнала

Мы настраиваем тестовый сервер, но без архивации транзакций не обойтись, заодно настроим архивацию данных. Выберу самый простой способ: архивацию на файловую систему. Итак необходимые параметры для настройки:

# System Archive Tape Device

TAPEDEV /dev/null # Tape device path
TAPEBLK 32 # Tape block size (Kbytes)
TAPESIZE 102400 # Maximum amount of data to put on tape (Kbytes)


# Log Archive Tape Device

LTAPEDEV /dev/null # Log tape device path
LTAPEBLK 32 # Log tape block size (Kbytes)
LTAPESIZE 102400 # Max amount of data to put on log tape (Kbytes)

ALARMPROGRAM /informix/d03_on/etc/no_log.sh # Alarm program path

Как видим все данные в процессе архивации складываются в /dev/null, т.е. попросту в никуда. Для учебного тестового сервера это нормально, но такое нельзя делать для рабочего сервера, поскольку тогда в случае повреждения данных восстановить такой бэкап будет невозможно. Поэтому если требуется проводить нормальную архивацию данных и журналов с возможностью восстановления, эти параметры надо настроить например так:

# System Archive Tape Device

TAPEDEV /informix/backup/data # Tape device path
TAPEBLK 32 # Tape block size (Kbytes)
TAPESIZE 102400 # Maximum amount of data to put on tape (Kbytes)


# Log Archive Tape Device

LTAPEDEV /informix/backup/logs # Log tape device path
LTAPEBLK 32 # Log tape block size (Kbytes)
LTAPESIZE 102400 # Max amount of data to put on log tape (Kbytes)

ALARMPROGRAM /informix/d03_on/etc/log_full.sh # Alarm program path

Конечно же файлы указанные в TAPEDEV и LTAPEDEV должны сущестовать и иметь права доступа -rw-rw---- informix informix

В принципе настройки приведенных выше параметров достаточно для запуска тестового экземпляра информикса.

Теперь необходимо настроить файл подключений sqlhosts. В него прописывается запись для каждого экземпляра информикса, к которым необходимо иметь доступ. Вот запись для тестового сервера:

tst_on onsoctcp d03 1526

т.е. название экземпляра, название протокола, имя хоста где установлен экземпляр, и номер порта который будет слушать информикс.
Это вся базовая конфигурация, которой достаточно чтобы запустить учебный тестовый экземпляр информикса.

пятница, 15 июня 2007 г.

IBM Informix 11 Cheetah

Ура! Приятная новость от IBM. 12 июня официально представлена новая версия IBM Informix Dynamic Server 11 Cheetah. Для общего доступа ее предполагают выложить в июле, также будет выложена специальная educational версия. Новость взята из рассылки iiug.org
Основные преимущества новой версии:
- множество secondary серверов Remote Standalone Secondary (это улучшенная версия Informix HDR, которая позволяет подключать к одному primary серверу несколько secondary)
- возможность работы нескольких экземпляров с общим набором физических дисков Shared Disk Secondary
- sql интерфейс для администраторов
- Continuous Log Restore - алтернативный вариант HDR при котором журналы транзакций передаются и накатываются на вторичный сервер вручную
- другие улучшения

Informix Cheetah - производительность, которую чувствуешь

June 12, 2007, IBM Informix Dynamic Server has officially been announced with all its features. The actual product will be available in July 2007 for General Availability and the special IIUG Educational version for all IIUG members should be available no later than Aug 1, 2007.