Etersoft WIKI: SELTA/usermanual

SELTA@Etersoft

Общее описание

SELTA@Etersoft – это программный продукт, выполняющий трансляцию SQL-запросов из диалекта T-SQL (базы данных MS SQL Server) в pl/pgSQL (база данных Postgre SQL). Он позволяет программам, предназначенным для работы только с MS SQL Server, работать со свободной СУБД Postgre SQL.
Создать универсальный транслятор запросов практически невозможно, поэтому данный продукт предназначен только для некоторых приложений, в частности 1С:Предприятие 7.7.

SELTA@Etersoft работает как под ОС Windows, так и Linux (при помощи WINE@Etersoft SQL).

Общее

Обновления и новости


Планы по версии 1.1
Планы по версии 2.0


Исправления, намеченные к версии 1.0.9


11.05.2010: SELTA@Etersoft 1.0.8

Исправления и дополнения

Полный список исправлений к версии 1.0.8

23.06.2009: SELTA@Etersoft 1.0.7

Исправления и дополнения


! ВНИМАНИЕ ! Версия 1.0.7. работает только с версиями Postgre SQL не ранее 8.3.5 . Для перехода с версий 8.2.* внимательно ознакомьтесь с инструкцией по переходу.
Полный список исправлений к версии 1.0.7


После обновления требуется запустить 1с в монопольном режиме.

01.04.2009: SELTA@Etersoft 1.0.6

Исправления и дополнения

Полный список исправлений к версии 1.0.6


26.12.2008: SELTA@Etersoft 1.0.5

Исправления и дополнения

Полный список исправлений к версии 1.0.5


17.11.2008: SELTA@Etersoft 1.0.4

Исправления и дополнения

Полный список исправлений к версии 1.0.4


Архив изменений для старых версий...



Часто задаваемые вопросы





В файле /var/lib/pgsql/data/postgresql.conf
выставить параметр
client_min_messages = error
Не забудьте убрать знак комментария







Поддерживаемые программы


* конфигурация Бухгалтерия
* конфигурация Зарплата
* конфигурация Торговля и Склад
* конфигурация Производство и Услуги
* расширение 1С++

Планируется поддерживать

* WinСмета SQL
* MonitorCRM
* КМ-Школа
* MarkSQL


Требования к продукту

Конечный продукт должен удовлетворять следующим требованиям:

Что сделано

В качестве альтернативной базы была выбрана PostgreSQL, на данный момент это одна из лучших бесплатных баз данных, которая способна составить конкуренцию продукту MS SQL Server. Так же учитывалось, что в сторону этой базы свой выбор уже сделала компания 1С, поддержав PostgreSQL в версии 1С 8.1. Это позволяет надеяться, что качество работы PostgreSQL будет на высоте.


Было принято решение, что сам транслятор будет подключаться к ODBC драйверу на клиентских машинах:
Мы модифицировали стандартный ODBC драйвер для PostgreSQL так, чтобы на запросы 1С он выдавал себя за драйвер MS SQL Server (в частности, возвращается другая версия продукта), согласно лицензии PostgreSQL все исходные коды модифицированного драйвера будут выложены в открытый доступ. В код драйвера ODBC добавлена загрузка дополнительной dll (закрытая часть) при помощи которой преобразуются SQL-запросы из диалекта T-SQL (используемого в MS SQL Server) в pl/pgSQL (PostgreSQL).




О SQL и 1С

Недоступность SQL по сети

О unixODBC



Настройка SQL сервера под 1С


1. Установить под Windows MS SQL. на вопрос про идентификацию выбрать смешанный режим
2. Запустить SQL менеджер, там создать новую базу, сохранить ее на диск.
3. Запустить 1С, добавить новую базу и указать путь созданной sql базы.
4. запустить для нее Конфигуратор. Выбрать Администрирование, Настройка SQL. Указать там сервер, пароль (который указан для базы при установке ms sql ). таким образом 1С подключена к sql базе
5. Если необходимо загрузить данные из существующей dbf базы, то зайти в ее Конфигуратор, Выгрузить данные. Затем зайти в Конфигуратор sql базы Загрузить данные.


Некоторая информация которая может быть полезна при работе с MS SQL:
Консоль MS SQL Server



Установка и настройка

Получение дистрибутива SELTA@Etersoft


Для установки SELTA@Etersoft на клиентских машинах Вам потребуется дистрибутив (файл selta.msi) требующийся версии из

О текущих вышедших версиях, а так же о релиз кадидатах вы можете узнать в разделе Обновления и новости


Также Вам потребуется файл лицензии, подробнее о его получении смотрите в разделе Получение лицензии


После загрузки воспользуйтесь инструкцией по установке.



Установка SELTA@Etersoft


Оглавление


Установка SELTA@Etersoft

SELTA@Etersoft может быть установлена на Windows 2000 и выше, либо на WINE@Etersoft SQL 1.0 и выше.
Установка продукта очень проста: на каждой клиентской машине достаточно запустить установочный файл selta.msi и следовать дальнейшим инструкциям.
В WINE@Etersoft установка выполняется командой

$ wine start selta.msi

Особенности установки на Vista



Перед установкой рекомендуется закрыть все приложения, которые используют ODBC-драйверы.
Внимательно ознакомьтесь с Лицензионным соглашением:



Укажите путь установки SELTA@Etersoft:



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



На этом установка завершена.


Обратите внимание
Для одновременного использования SELTA@Etersoft и MS SQL для разных приложений имеется специальный скрипт-обертка(подробнее читайте Запуск/остановка SELTA при запуске программ).
Также возможно временное отключение SELTA@Etersoft – для переключения используйте Центр управления SELTA@Etersoft.

При проблемах установки selta.msi

Если при установке происходит ошибка, запустите установку командой

winexp start selta.msi

Если и в этом случае происходит ошибка, то запустите установку командой
msiexec /i selta.msi /l*v C:\selta.log

и пришлите в службу поддержки файл selta.log



Файл лицензии SELTA@Etersoft


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


Файл лицензии можно получить на вашей персональной странице продукта после приобретения.


Доступ к странице Вы можете получить двумя способами:

  1. При заказе SELTA@Etersoft на сайте http://sales.etersoft.ru страница создаётся после оплаты продукта, информация о доступе к ней высылается на Вашу электронную почту;
  2. При покупке коробочной версии через наших партнеров потребуется зарегистрироваться на нашем сайте, указав серийный номер продукта, который можно найти в лицензионном соглашении, поставляемом в коробке вместе с продуктом.

Для того, чтобы добавить файл лицензии в SELTA@Etersoft, запустите Центр управления SELTA@Etersoft (продукт должен быть предварительно установлен на клиентской машине). Если ни один файл лицензии не был добавлен в систему ранее, программа при запуске попросит это сделать:



Если у Вас уже есть файл с лицензией, укажите к нему путь:



Если указанный файл пройдет проверку подлинности, он будет скопирован в рабочий каталог SELTA@Etersoft



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



Postgre@Etersoft

На настоящий момент для работы SELTA@Etersoft рекомендуется использовать Postgre@Etersoft версии 8.3.8. Если Вы переходите с другой версии Postgre@Etersoft, ознакомьтесь с действиями при обновлении PostgreSQL.
Postgre@Etersoft – это специальные сборки свободной реляционной СУБД PostgreSQL, в которые включены все изменения, необходимые для работы SELTA@Etersoft и серверов 1С:Предприятие 8.1 и 1С:Предприятие 8.2.
Об изменениях по отношению к оригинальной версии Postgre SQL смотрите в разделе Изменения, внесённые в PostgreSQL.


Вы можете приобрести поддержку сборок Postgre SQL от Etersoft в разделе Услуги на сайте продаж.

Поддерживаемые платформы


Платформы, для которых собран PostgreSQL@Etersoft, можно увидеть на странице продукта при заказе сборки SELTA@Etersoft или Postgre SQL@Etersoft. Обратите внимание, что в зависимости от выбора платформы, Вам будет предоставлена полная, либо базовая поддержка на вашей системе.


Приоритетными при тестировании и сборке новых версий являются платформы ALT Linux 5.0 Server и Ubuntu Server. Мы рекомендуем ставить Postgre SQL на них.
Пакеты доступны как в 32-битных, так и в 64-битных версиях.

Установка СУБД


Инструкция приводится на примере Alt Linux 5.0. Для других систем могут быть свои особенности.


#su -
Password:

# cd ~
# md pg
# cd md

Стабильные пакеты для различных систем можно получить здесь:
ftp://updates.etersoft.ru/pub/Etersoft/Postgres@Etersoft/stable/
http://updates.etersoft.ru/pub/Etersoft/Postgres@Etersoft/stable/

#wget ftp://updates.etersoft.ru/pub/Etersoft/Postgres@Etersoft/stable/ALTLinux/5.0/*.rpm
.....
#ls 
postgresql-8.3eter-8.3.8-alt1.M50.2.1.i586.rpm
postgresql-8.3eter-contrib-8.3.8-alt1.M50.2.1.i586.rpm
postgresql-8.3eter-server-8.3.8-alt1.M50.2.1.i586.rpm

Для работы требуется установить следующие пакеты Postgre SQL:
postgresql-8.3eter
postgresql-8.3eter-contrib
postgresql-8.3-eter-server

#rpm -ihv *.rpm
Preparing... ##################################################
postgresql-8.3eter ##################################################
postgresql-8.3eter-contrib ##################################################
postgresql-8.3eter-server ##################################################
Running /usr/lib/rpm/posttrans-filetriggers

Удаляем rpm, больше они не понадобяся
# rm *.rpm
rm: remove regular file `postgresql-8.3eter-8.3.8-alt1.M50.2.1.i586.rpm'? y
rm: remove regular file `postgresql-8.3eter-contrib-8.3.8-alt1.M50.2.1.i586.rpm'? y
rm: remove regular file `postgresql-8.3eter-server-8.3.8-alt1.M50.2.1.i586.rpm'? y

#/etc/init.d/postgresql start
Initializing database: [ DONE ]

Starting postgresql service: [ DONE ]

если этого не произошла смотрите ошибки в логе запуска /var/lib/pgsql/pgstartup.log.


В каталоге log/ содержатся логи сборки пакетов. Пакеты из каталогов extra/ потребуются только в особых случаях.


#/etc/init.d/postgresql start
The current value of SHMMAX is too low for postgresql to run.
Please edit /etc/sysctl.conf and set this value to at least 134217728:
kernel.shmmax = 134217728

Значение SHMMAX (максимальный размер сегмента разделяемой памяти в байтах) слишком мало для запуска Postgre SQL.
Решение: Уcтановите значение shmmax на указанное Postgre SQL.
# sysctl -w kernel.shmmax=134217728

Возможно придется сделать еще
# sysctl -w kernel.shmall=134217728

Тоже самое сделать в /etc/sysctl.conf.

Одна из проблем, из-за которой вы не можете запустить Postgre SQL, может быть вызвана невозможностью использования выбранного порта.
Postgre SQL не смог запуститься:

#/etc/init.d/postgresql start
Starting postgresql service: [ FAILED ]

И в /var/lib/pgsql/pgstartup.log
#cat /var/lib/pgsql/pgstartup.log
ПОДСКАЗКА: Is another postmaster already running on port 80? If not, wait a few seconds and 
retry.
LOG: не получилось создать сокет IPv6: Семейство адресов не поддерживается протоколом
WARNING: could not create listen socket for "*"
FATAL: could not create any TCP/IP sockets

Это означает, что скорее всего порт, используемый Postgre SQL занят. По умолчанию это 5432
Проверяем это, смотрим, кто использует порт
#netstat -plan | grep 5432


Пути решения:

  1. Решить проблему с программой, которая использует порт. Изменить ее порт.
  2. Изменить порт Postgres.

Для этого нужно изменить номер порта в файле /etc/init.d/postgresql

#cat /etc/init.d/postgresql | grep PGPORT=
PGPORT=5432

Измените это значение, на любой другой свободный номер порта.


Подробности по установке смотрите здесь:


Настройка Postgre SQL


В наших сборках Postgre SQL уже заложены необходимые минимальные настройки для работы СУБД с SELTA@Etersoft.
Инициализация базы производится автоматически при первом запуске Postgre SQL, файлы баз данных будут храниться в каталоге /var/lib/pgsql/data, владелец каталога и процессов Postgre SQL устанавливается пользователь postgres, который создается автоматически, при установке пакетов.


Сначала в файле конфигурации /var/lib/pgsql/data/pg_hba.conf изменяем строчку:

local           all          all                ident sameuser

на строчку:
local           all          all                trust



# /etc/init.d/postgresql restart
Stopping postgresql service: [ DONE ]

Starting postgresql service: [ DONE ]


Для этого требуется выполнить запрос.

# psql -U postgres -d template1 -c "ALTER USER postgres PASSWORD 'новый пароль'"

Проверяем:
#psql -U postgres -W 
Password for user postgres: 
Welcome to psql 8.3.8-eter1, the PostgreSQL interactive terminal.



Консоль SQL запросов Postgre SQL

В состав Postgre SQL входит утилита командной строки psql. Для ее запуска на сервере, на котором работает Postgre SQL нужно выполнить следующую команду:

psql -U postgres

C помощью утилиты psql можно выполнять SQL запросы и просматривать результаты их выполнения, например:


psql -U postgres
 # select upper('q');
 # \quit

Проверка работоспособности

#/etc/init.d/postgresql status
pg_ctl: выполняется сервер (PID: 31805)
/usr/bin/postgres "-p" "5432" "-D" "/var/lib/pgsql/data"

Сервер запущен. Если, это не так, запустите сервер, так, как было описано выше.


# netstat -plan | grep 5432
tcp        0      0 0.0.0.0:5432                0.0.0.0:*                   LISTEN      31805/postmaster
unix  2      [ ACC ]     STREAM     LISTENING     311449 31805/postmaster    /tmp/.s.PGSQL.5432

Требующейся нам порт используется postmaster, как и должно быть.


# psql -U postgres -c "SELECT version()"
                                                           version 
----------------------------------------------------------------------------------------------
--------------------------------
 PostgreSQL 8.3.8-eter1 on i586-alt-linux-gnu, compiled by GCC i586-alt-linux-gcc (GCC) 4.3.2 
20081105 (ALT Linux 4.3.2-alt9)
(1 row)

После проверки работоспособности желательно провести оптимизацию настроек Postgre SQL в соответствии с возможностями вашего сервера: Оптимизация настроек PostgreSQL.

Ссылки



Оптимизация работы Postgre SQL

Диски и файловые системы

Если в вашем сервере есть несколько физических дисков, то вы можете разнести файлы базы данных и журнал транзакций по разным дискам:
– Остановите сервер.
– Перенесите каталоги pg_clog и pg_xlog, находящийся в каталоге с базами данных, на другой диск.
– Создайте на старом месте символическую ссылку.
– Запустите сервер.

Настройка конфигурации

параметр – значение – рекомендации

Настройка ресурсов

shared_buffers

Размер разделяемой между процессами Postgre SQL памяти, которая нужна для выполнения активных операций. Не следует указывать слишком большой объём, так как Postgre SQL использует также дисковый кэш 


Значения:
Средний объём данных и 256-512 МБ доступной памяти: 16-32 МБ
Большой объём данных и 1-4 ГБ доступной памяти: 64-256 МБ

temp_buffers

Буфер под временные объекты, в основном для временных таблиц.
Можно установить порядка 16 МБ

max_prepared_transactions

Количество одновременно подготавливаемых транзакций.
Для работы 1С этот параметр значения не имеет, PREPARE TRANSACTION там не используются.
Можно оставить по дефолту – 5

work_mem

Специальная память, используется для сортировки и кэширования таблиц, для одного запроса.
При задании этого параметра следует учитывать количество конкурентых запросов, выполняемых в один момент времени.
При памяти 1-4Gb рекомендуется устанавливать 32-128MB

maintenance_work_mem

Память использующаяся для операций VACUUM, CREATE INDEX, ALTER TABLE и FOREGIN KEY.
Следует устанавливать большее значение, чем для work_mem. Слишком большие значения приведут к использованию свопа.
При памяти 1-4Gb рекомендуется устанавливать 128-512MB

max_stack_depth

Специальный стек для сервера, в идеале он должен совпадать с размером стека, выставленном в ядре ОС. Установка большего значения, чем в ядре, может привести к ошибкам.
Рекомендуется устанавливать 2-4MB

max_fsm_relations

Максимальное количество таблиц, для которых будет отслеживаться свободное место в общей карте свободного пространства. Эти данные собираются VACUUM.
Выставьте параметр в соответствии с количеством таблиц в вашей базе с запасом. (Применимо для версий до 8.4)

max_fsm_pages

Количество блоков, для которых будет хранится информация о свободном месте. Информация хранится в разделяемой памяти, для каждой записи требуется по 6 байт.
Использование этого параметра позволяет избежать использования VACUUM FULL для базы, достаточно будет VACUUM. (Применимо для версий до 8.4)
Этот параметр должен быть не меньше чем 16*max_fsm_relations
Данный параметр задается автоматически при создании базы утилитой initdb
Можно задать его и вручную: в качестве начального приближения можно взять половину от среднего количества записей, изменяемых (UPDATE или DELETE) между запусками команды VACUUM.
Оценить это значение (база должна проработать уже какое-то время) можно выполнив:

vacuum full analyze;
NOTICE: number of page slots needed (196272) exceeds max_fsm_pages (153600)
HINT: Consider increasing the configuration parameter "max_fsm_pages" to a value over 196272.

max_files_per_process

Максимальное количество файлов, открываемых процессом и его подпроцессами в один момент времени.
Уменьшите данный параметр, если в процессе работы наблюдается сообщение "Too many open files".

Запись транзакционных логов на диск

commit_delay и commit_siblings

Значение commit_delay выражается в микросекундах (0 по умолчанию). Значение commit_siblings выражается в штуках (5 по умолчанию).
commit_delay определяют задержку между попаданием записи в буфер журнала транзакций и сбросом её на диск. Если при успешном завершении транзакции активно не менее commit_siblings транзакций, то запись будет задержана на время commit_delay. Если за это время завершится другая транзакция, то их изменения будут сброшены на диск вместе, при помощи одного системного вызова. Эти параметры позволят ускорить работу, если параллельно выполняется много «мелких» транзакций.

fsync

Данный параметр отвечает за сброс данных из кэша на диск при завершении транзакций.
Если установить его значение
fsync=off
то данные не будут записываться на дисковые накопители сразу после завершения операций. Это может существенно повысить скорость операций insert и update, но есть риск повредить базу, если произойдет сбой (неожиданное отключение питания, сбой ОС, сбой дисковой подсистемы).
Используйте эту возможность только если у вас имеются надежные ИБП и программное обеспечение, завершающее работу системы при низком заряде батарей.
Не следует отключать fsync при работе Postgre SQL на Windows платформе, из-за нестабильности системы

wal_sync_method

Метод, который используется для принудительной записи данных на диск.
Если fsync=off, то этот параметр не используется.
Возможные значения:
open_datasync – запись данных методом open() с параметром O_DSYNC
fdatasync – вызов метода fdatasync() после каждого commit
fsync_writethrough – вызывать fsync() после каждого commit игнорирую паралельные процессы
fsync – вызов fsync() после каждого commit
open_sync – запись данных методом open() с параметром O_SYNC
Не все методы доступны на определенных платформах. По умолчанию устанавливается первый, который доступен в системе.

full_page_writes

Установите данный параметр в off, если fsync=off. Иначе
Когда этот параметр on, Postgre SQL записывает содержимое каждой страницы в журнал транзакций во время первой модификации таблицы после контрольной точки. Это необходимо потому что страницы могут записаться лишь частично если в ходе процесса ОС "упала". Это приволит к тому, что на диске оказаываются новые данные смешанные со старыми. Строкового уровня записи в журнал транзакций может быть не достаточно, что бы полность восстановить данные после "падения". full_page_writes гарантирует корректное восстановление, ценой увелечения записываемых данных в журнал транзакций.(Потому что журнал транзакций все время начинается с контрольной точки. Единственный способ снижения объема записи заключается в увеличении checkpoint interval).

wal_buffers

Количество памяти используемое в SHARED MEMORY для ведения транзакционных логов.
При доступной памяти 1-4GB рекомендуется устанавливать 256-1024kb

Оптимизация запросов

enable_nestloop

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

random_page_cost

Устанавливает у планировщика оценку "стоимоти" не последовательного перебора данных. По умолчанию 4.0. Уменьшение этого значения по отношению к seq_page_cost вызовет у планировщика предпочтение сканирования индекса, увеличение — наобород сделает сканирование индекса "дороже". Вы можете изменить оба значения чтобы изменить отношение "стоимости" дисковых операций ввода/выдода, по отношениб с "стоимости" использования процессора, которая бадет описана следующими параметрами.
На серверах с быстрыми дисковыми массивами имеет смысл уменьшать изначальную настройку до 3.0, 2.5 или даже до 2.0. Если же активная часть вашей базы данных много больше размеров оперативной памяти, попробуйте поднять значение параметра. Можно подойти к выбору оптимального значения и со стороны производительности запросов. Если планировщик запросов чаще, чем необходимо, предпочитает последовательные просмотры (sequential scans) просмотрам с использованием индекса (index scans), понижайте значение. И наоборот, если планировщик выбирает просмотр по медленному индексу, когда не должен этого делать, настройку имеет смысл увеличить. После изменения тщательно тестируйте результаты на максимально широком наборе запросов. Никогда не опускайте значение random_page_cost ниже 2.0; если вам кажется, что random_page_cost нужно еще понижать, разумнее в этом случае менять настройки статистики планировщика.

cpu_tuple_cost

Устанавливает у планировщика оценку "стоимоти" затрат на обработку каждой строки во время выполнения запроса. По умолчанию 0,01.

cpu_index_tuple_cost

Устанавливает у планировщика оценку "стоимоти" затрат на обработку каждого индекса во время операции сканирования индекса. По умолчанию 0,005

cpu_operator_cost

Устанавливает у планировщика оценку "стоимоти" затрат на выполнение каждого оператора или функции во время выполнения запроса. По умолчанию 0.0025.

effective_cache_size

Передает данные планировщику запросов об объёме памяти, которая используется ОС для кэширования файлов, для одного запроса.
Этот параметр в ОС можно посмотреть в настройках:
Для Windows: в Диспетчере задач, Закладка Быстродействие, Физическая память-Системный кэш.
Для Linux: наберите команду free, необходимое значение в столбце cached (в kB)
Данное значение необходимо разделить на количество конкурентных запросов в один момент времени (среднее количество подключений к базе + запас).

default_statistics_target

Устанавливает глубину статистики по таблицам. БОльшие значения могут повысить время выполнения команды ANALYZE, но улучшат построение плана запроса.
Рекомендуется устанавливать порядка 100.

constraint_exclusion

Включает или отключает использование планером ограничений CONSTRAINT в таблицах при построении запросов.
Рекомендуется установить значение on, при этом, если Вы изменяете CONSTRAINT у таблиц, необходимо обновить их статистику выполнив ANALYZE, в противном случае будут построены неверные планы запросов.

Сбор статистики

stats_command_string

Передавать ли сборщику статистики информацию о текущей выполняемой команде и времени начала её выполнения.
Устанавливать on

stats_start_collector

Включать ли сбор статистики.
Устанавливать on

stats_row_level, stats_block_level

Собирать ли информацию об активности на уровне записей и блоков соответственно.
Устанавливать
stats_row_level=on
stats_block_level=off

stats_reset_on_server_start

Обнулять ли статистику при перезапуске сервера
Устанавливать off

Автовакуум

VACUUM – сборка "мусора". VACUUM восстанавливает место занятые "мертвыми" данными. При выполнении обычных операций с данными, Postgre SQL не удаляет данные физически из таблиц, это происходит с операцией VACUUM.

autovacuum

Включать ли автовакуум (автоматического запуска VACUUM), устанавливать on

autovacuum_naptime

Пауза между запусками Автовакуума.
Зависит от того, как часто обновляются данные в ваших таблицах. Может соствлять порядка 5min, по умолчанию 1min

autovacuum_analyze_threshold

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

autovacuum_vacuum_threshold

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


Блокировки

max_locks_per_transaction

Количество блокировок за одну транзакцию: установить порядка 250

deadlock_timeout

Время жизни взаимных блокировок. Установить порядка 2 секунд.


Возможная ошибка
После исправления файла конфигурации Postgre SQL может не запуститься, выдав ошибку:

FATAL:  could not create shared memory segment:...
Failed system call was shmget(key=5432001, size=140075008, 03600).
This error usually means that PostgreSQL's request for a shared memory segment exceeded your kernel's SHMMAX parameter.  You can either reduce the request size or reconfigure the kernel with larger SHMMAX.  To reduce the request size (currently 140075008 bytes), reduce PostgreSQL's shared_buffers parameter (currently 16384) and/or its max_connections parameter (currently 10).
        If the request size is already small, it's possible that it is less than your kernel's SHMMIN parameter, in which case raising the request size or reconfiguring SHMMIN is called for.
        The PostgreSQL documentation contains more information about shared memory configuration.

Для исправления необходимо увеличить параметр SHMMAX в системе. Сделать это можно следующим образом (для ОС Linux):
Выполните команду:
echo 150829120 > /proc/sys/kernel/shmmax

указав свое новое значение для параметра (какое именно – можно посмотреть в логе ошибки Postgre SQL). Данная операция устанавливает параметр на лету, но после перезагрузки системы изменения будут потеряны. Чтобы этого не происходило, внесите в файл /etc/sysctl.conf следующую строку:
kernel.shmmax = 150829120

указав своё значение.

Пример конфигурации для сервера с 2G оперативной памяти

/var/lib/pgsql/data/postgresql.conf:

to be done


/etc/sysctl.conf:

to be done

Средняя настройка

Среднестатическая настройка для максимальной производительности. Возможно для конкретного случаю лучше подойдут другие настройки. Внимательно изучите данное руководство и настройте Postgre SQL операясь на эту информацию.


RAM — размер памяти

* shared_buffers = 1/8 RAM или больше (но не более 1/4);
* work_mem в 1/20 RAM;
* maintenance_work_mem в 1/4;
* max_fsm_relations в планируемое кол-во таблиц в базах * 1.5;
* max_fsm_pages в max_fsm_relations * 2000;
* fsync = true;
* wal_sync_method = fdatasync;
* commit_delay = от 10 до 100 ;
* commit_siblings = от 5 до 10;
* effective_cache_size = 0.9 от значения cached, которое показывает free;
* random_page_cost = 2 для быстрых cpu, 4 для медленных;
* cpu_tuple_cost = 0.001 для быстрых cpu, 0.01 для медленных;
* cpu_index_tuple_cost = 0.0005 для быстрых cpu, 0.005 для медленных;

* autovacuum = on
* autovacuum_vacuum_threshold = 1800
* autovacuum_analyze_threshold = 900

Обслуживание базы

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

Источники:

http://www.postgresql.org/docs/8.4/interactive/runtime-config-resource.html
http://phpclub.ru/detail/store/pdf/postgresql-performance.pdf
http://postgresmen.ru/articles/view/38
http://arahorn01.blogspot.com/2009/03/postgresql-1-77.html
http://chandrasec-lay.livejournal.com/1680.html
http://wm-help.net/books-online/print-page/69331/69331-2.html
http://www.postgresql.org/docs/8.2/static/runtime-config.html
http://sql.ru/forum/actualthread.aspx?tid=463866
http://sql.ru/forum/actualthread.aspx?tid=526496



Действия при обновлении Postgre SQL

В этом разделе описываются действия, которые необходимо выполнить при изменении версии PostgreSQL, независимо от того, изменили ли вы при этом версию Selta. Обратите внимание, что часть из них проделывается с Selta, а часть с PostgreSQL. Если действия не указаны, значит они не требуются.


Release 8.4.2 – 8.4.3

Операция dump/restore не требуется для тех, кто переходит с версий 8.4.x, но если вы переходите с версии до 8.4, следуйте инструкциям к 8.4.1
обновление баз не требуется, для всех, кто переходит с версий после 8.3.8, Если вы обновились с версии до 8.3.8, следуйте инструкциям Selta 8.3.8

Release 8.4.1

Требуется выполнить операцию dump/restore, при переходе с более ранних версий.
обновление баз не требуется, для всех, кто переходит с версий после 8.3.8, Если вы обновились с версии до 8.3.8, следуйте инструкциям Selta 8.3.8

Release 8.3.8

Операция dump/restore не требуется для всех, кто переходит с версий 8.3.x. Требуется выполнить операцию REINDEX.
Требуется обновление баз, при переходе с более ранних версий.

Release 8.3.2 – 8.3.7

(поддерживается начиная с Selta 1.0.5)

Операция dump/restore не требуется для тех, кто переходит с версий 8.3.x, но если вы переходите с версии до 8.3.1, следуйте инструкциям к 8.3.1
обновление баз не требуется, для всех, кто переходит с версий 8.3.x. Если вы обновились с версии до 8.3, следуйте инструкциям Selta 8.3

Release 8.3.1

(поддерживается начиная с Selta 1.0.5)

Операция dump/restore не требуется для всех, кто переходит с версий 8.3.x. Однако вам может понадобится переиндексировать текстовые поля после обновления.
обновление баз не требуется, для всех, кто переходит с версий 8.3.x. Если вы обновились с версии до 8.3, следуйте инструкциям Selta 8.3

Release 8.3

(поддерживается начиная с Selta 1.0.5)

Для корректной работы требуются выполнить операции независимо от того, обновляли ли вы версию Selta, обязательно сделайте обновление ваших баз:
На клиентской машине запустите графическую утилиту SELTA ( Общее описание ), в главном меню выберите пункт Инициализация БД, и обновите ранее созданные базы до новой версии SELTA (подробнее в разделе Инициализация баз данных), или создайте новые.

Release 8.2.11-8.2.8

Операция dump/restore не требуется для всех, кто переходит с весий 8.2.x.
Однако, если вы переходите с версии до 8.2.7, следуйте инструкциям 8.2.7

Release 8.2.7 – ...

Операция dump/restore не требуется для всех, кто переходит с версий 8.2.x, но вам может понадобится переиндексировать текстовые поля после обновления.


Создание баз данных


После установки клиентской части и сервера Postgre SQL необходимо создать базы данных на сервере, с которыми будут работать Ваши программы.
Вся настройка и диагностика SELTA@Etersoft производится в Центре управления SELTA@Etersoft. Для его запуска на клиентской машине создаются ярлыки на Рабочем столе и группа в меню Пуск.



В главном меню этого окна выберите Утилиты – Инициализация БД.
В открывшемся окне укажите параметры подключения к серверу Postgre SQL:



Если вы правильно указали имя сервера с СУБД, имя пользователя (владельца баз) и пароль, то откроется окно утилиты Инициализации Баз данных:



В левой части окна располагается список уже созданных баз данных. Если Вы только что установили Postgre SQL, то этот список скорее всего будет пуст.
Для создания базы данных нажмите кнопку Создать БД, в открывшемся диалоге укажите латинскими буквами имя новой базы:



Если возникли ошибки при создании базы, то появится диалогове окно с текстом этой ошибки, в противном случае созданная вами база появится в конце списка баз данных. Справа от имени базы данных будет указано, для работы с какой версией SELTA@Etersoft она предназначена.
Если у Вас уже есть ранее созданные (пустые) базы данных, то в списске они будут помечены как Не инициализировано. Если Вы хотите использовать их, то выделите их в списске и нажмите кнопку Инициализировать. Подробнее о функциональности утилиты Инициализация баз данных читайте в Документации

                             



Сторонние инструкции


На этой странице представлены ссылки на сторонние инструкции по установке Selta@Etersoft и Postgre SQL


Статья про установку Selta@Etersoft на Ubuntu 7.10 и работу с 1С 7.7
http://ebooki.moy.su/publ/6-1-0-3


Использование

Подключение 1С:Предприятия

Запуск системы

После того, как SELTA@Etersoft установлена, и настроен соответствующим образом PostgreSQL, можно запускать 1С.
Первый запуск 1С производится в режиме конфигуратора и в параметрах подключения укажите (вкладка Администрирование -> Параметры базы данных SQL):


FAQ по SQL-версии программы 1С: Предприятие 7.7



Перенос данных из MS SQL Server в Postgre SQL для 1С 7.7


Самый простой способ загрузки данных в базу – штатными средствами загрузки-выгрузки самой 1С. Эта операция выполняется точно так же, как при работе с MS SQL Server или DBF базой.


Если у Вас база данных на MS SQL Server очень большого объема и ее невозможно выгрузить в zip-архив, вы можете перенести данными при помощи специальной утилиты – Конвертор. Для этого необходимо выполнить несколько операций, которые подразделяются на 2 этапа: создание структуры базы в Postgre SQL и перенос самих данных.
Выполните пошагово следующие инструкции:

Создание структуры базы данных

Для создания структуры базы данных запустите 1С 7.7, создайте новую информационную базу и загрузитесь в режиме конфигуратора.
В пункте Администрирование – Параметры базы данных SQL укажите параметры для подключения к Postgre SQL, в качестве имени базы укажите ту базу, которую создали ранее.
Далее необходимо загрузить .md файл конфигурации, для которой вы переносите данные и выполнить ее сохранение. При этом будут созданы все необходимые таблицы, индексы и хранимые процедуры – создание структуры базы данных завершено. Запускать полученную конфигурацию в режиме Бухгалтерия не требуется.

Перенос самих данных

Для переноса самих данных воспользуйтесь графической утилитой Конвертор. Запустите Графическую утилиту Selta, в главном меню выберите Утилиты – Конвертор:



Выберите кнопку "MS SQL Server -> CSV", в открывшемся окне укажите укажите параметры подключения к MS SQL Server, на котором лежит база данных, из которой Вы переносите данные, а в качестве пути для Дампа укажите папку на машине клиента, в которую будут скопированы данные:



Нажмите Выполнить и дождитесь выполнения операции, копирование всех таблиц может занять продолжительное время.
Далее, полученный CSV-Дамп необходимо загрузить в Postgre SQL
Запустите Конвертор, выберите кнопку CSV -> Postgre SQL. В открывшемся диалоге необходимо указать параметры подключения к базе, в которой до этого была сохранена Ваша конфигурация:



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


Если в дампе таблиц больше, чем в базе данных (так бывает, если Дамп делался с работающей БД 1С, а восстанавливается в "чистую" конфигурацию) будет возвращена ошибка



Для избежание подобной ошибки, установите флажок "Пропускать таблицы отсутствующие в базе".


Загрузка CSV дампа в MS SQL Server выполняется аналогично.


Перенос данных из MS SQL Server в PostgreSQL для 1С 7.7. Пошаговая инструкция


Если у Вас база данных на MS SQL Server не очень большого объема и её возможно выгрузить в zip-архив, вы можете воспользоваться вариантом 1 (перенос структуры и данных БД средствами 1С)


Если у Вас база данных на MS SQL Server очень большого объема и ее невозможно выгрузить в zip-архив, вы можете воспользоваться вариантом 2. (перенос структуры БД средствами 1c, и данных БД средствами SELTA(ковертор))


Вариант 1: Загрузка структуры и данных с помощью 1С (не работает с большими БД.)


1. Средствами 1с произвести выгрузку базы из 1с. (SELTA выключена. 1с подключен к базе MSSQL)

(1с конфигуратор->меню Администрирование->Выгрузить данные... (ввести путь))

2. Включить Selta.

(SELTA Запустить)

3. Создать (!)новую(!) БД с помощью графической оболочки SELTA. (Если уже есть, удалить и заново создать)

(SELTA меню Утилиты -> Инициализация БД (ввести параметры сервера Postgre)-> Создание БД (ввести имя новой БД)

4. Добавить информационную базу в 1с. (не забудьте создать пустой каталог с базой.)

(1c окно запуск -> добавить (ввести назание и путь))

5. Настройте в конфигураторе 1с базу из пункта 4 на сервер Postgre (созданную в пункте 3) (имя пользователя должно быть такое, как при создании в пункте 3)

(1с конфигуратор->меню Администрирование->Параметры базы данных SQL (ввести параметры БД))

6. В БД(4) средствами 1с произвести загрузку данных (из места куда была произведена выгрузка в пункте 1).

(1с конфигуратор->меню Администрирование->Загрузить данные... (ввести путь))

7. Скопировать каталоги пользователей из каталога информационой базы 1с (пункт 1) в каталог информационой базы 1с (пункт 4)

Просмотр/изменение пути пользователей:
(1с конфигуратор->меню Администрирование->Пользователи->Выбрать пользователя->вкладка атрибуты->рабочий каталог)

Вариант 2: Pагрузка структуры с помощью 1с и данных с помощью SELTA


1. Средствами 1С произвести выгрузку (!)пустой(!) базы из 1с, той же конфигурации, что
собираетесь использовать. (Selta выключена. 1с подключен к базе MSSQL или dbf)

(1с конфигуратор->меню Администрирование->Выгрузить данные... (ввести путь))

-> 2! С помощью графической оболочки SELTA произвести конвертацию данных MSSQL -> CSV (из Вашей БД 1с на MS SQL сервере(уже не пустой))

(SELTA меню Утилиты -> Конвертор -> MS SQL SERVER --> CSV ->(ввести параметры БД и путь)

3. Включить Selta.

(SELTA Запустить)

4. Создать (!)новую(!) БД с помощью графической оболочки SELTA. (Если уже есть, удалить и заново создать)

(SELTA меню Утилиты -> Инициализация БД (ввести параметры сервера Postgre)-> Создание БД (ввести имя новой БД))

5. Добавить информационную базу в 1с. (не забудьте создать пустой каталог с базой.)

(1c окно запуск -> добавить (ввести назание и путь))

6. Настройте в конфигураторе 1с базу из пункта 5 на сервер Postgre (созданную в пункте 4) (имя пользователя должно быть такое, как при создании в пункте 4)

(1с конфигуратор->меню Администрирование->Параметры базы данных SQL (ввести параметры БД))

7. В БД(пункт 4) средствами 1с произвести загрузку данных (из места куда была
произведенна выгрузка в пункте 1).

(1с конфигуратор->меню Администрирование->Загрузить данные... (ввести путь))

-> 8! С помощью графической оболочки SELTA произвести конвертацию данных CSV -> Postgre
(путь из пункта 2, БД из пункта 4) (Данные, которые уже есть в БД Postgre сотруться, из
CSV добавятся.)

(SELTA меню Утилиты -> Конвертор -> CSV --> Postgre SQL ->(ввести параметры БД и путь)

9. Скопировать каталоги пользователей из каталога информационой базы 1с (пункт 1) в каталог информационой базы 1с (пункт 5)

Просмотр/изменение пути пользователей:
(1с конфигуратор->меню Администрирование->Пользователи->Выбрать пользователя->вкладка атрибуты->рабочий каталог)


Инструкция по запуску и применению Selta@Etersoft через командную строку


Эта возможность появилась в версии начиная с 1.0.4.


Основной запускаемый файл seltacmd.exe


1. Запуск без параметров.

seltacmd.exe
При запуске без параметров не происходит никаких действий. Только выводит сообщение с подсказкой о том, как получить полный help.
Сообщение:
-? This help

2. Запуск с параметром '-?'. Запуск help.

seltacmd.exe -?
При запуске с параметром '-?' не происходит никаких действий
Выводит полный help.
Сообщение:

seltacmd.exe [options]
	-io Input or Output. y - Output (SQL -> csv),n - output (csv -> SQL)
	-s MSSQL or PgSql. y - MSSQL, n  - pSql
	-h ip Address or name (SSID).
	-n Name DB.
	-u username DB.
	-p Password.
	-pt Backup patch on '  ' .
	-? This help
	-st Start or stop Selta. y - start, n-stop.
	
	Example:
	convert
	seltacmd.exe -io y -s n -h 192.168.0.1 -u admin -p mypassw 'C:\BACKUP\'
	or
	start
	seltacmd.exe -st y
	ok

3. Запуск конвертации БД 

Для запуска конвертации необходимо ввести параметры

'-io' - Что надо конвертировать. 'y' - SQL -> csv, 'n' csv -> SQL
   '-s'  - Какую СУБД использовать. 'y' - MSSQL, 'n'  - pSql
   '-h'  - ip адрес или имя SQL сервера, который будет учавствовать в конвертации
   '-n'  - имя используемой БД 
   '-u'  - имя пользователя, обладающего необходимыми правами использования БД.
   '-p'  - пароль пользователь  
   '-pt' - Путь к бэкапу БД (обязательно в ' ')


Например:

seltacmd.exe -io y -s n -h 192.168.0.1 -u admin -p mypassw 'C:\BACKUP\'


Порядок указания параметров не важен.
Если не введены все необходимые для конвертации данные, они будут спрошены. Их можно ввести.
Например:
enter Input or Output. y – Output (SQL -> csv),n – output (csv -> SQL):
Но хотя бы один из параметров конвертации должен быть введен.

4. Запуск с параметром '-pt'. Запуск/остановка selta

Для запуска/остановки selta необходимо ввести параметры
'-st' Что требуется сделать 'y'- запустить, 'n' остановить
Например:
seltacmd.exe -st y

Примечание:

Действия 2,3,4 можно производить как по отдельности, так и вместе.
Например:
seltacmd.exe -? -io y -s n -h 192.168.0.1 -u admin -p mypassw 'C:\BACKUP\' -st y


Запуск/остановка SELTA при запуске программ


Для того что бы иметь возможность одновременно работать с Postgre SQL через SELTA и с MS SQL вы можете воспользоваться batch файлом ftp://updates.etersoft.ru/pub/Etersoft/SELTA@Etersoft/accessoryfiles/ExecWSS.bat.


Описание ExecWSS.bat

Пример использования ExecWSS.bat

В примере показано, как создать ярлык для запуска программы 1с с остановленной SELTA

  1. Скопируйте файл ExecWSS.bat из ftp://updates.etersoft.ru/pub/Etersoft/SELTA@Etersoft/accessoryfiles/ExecWSS.bat в папку с SELTA (C:\Program Files\Selta\)
  2. Создайте ярлык на рабочем столе. (нажмите правой кнопкой мыши на рабочем столе, выберите New->Shortcut(Создать->Ярлык))
  3. Сделайте ярлык для программы 1с (В появившемся окне в поле "Type the location of the item"(Укажите размещение объекта) введите ["C:\Program Files\Selta\ExecWSS.bat" STOP "C:\Program Files\1Cv77\BIN\1cv7s.exe"] ), затем нажмите кнопку Далее.
  4. Введите имя ярлыка (В поле Type a name for this shortcut:(Введите имя ярлыка) введите [1c ms sql]). Нажмите кнопку Finish(Готово)
  5. Меняем иконку у ярлыка (нажмите правой кнопкой мыши на созданном ярлыке, Properties(Свойства) -> Change Icon ...(Сменить значок...) -> Look for icons in this file(Искать значки в следующем файле), введите [%Program Files%\1Cv77\BIN\1cv7s.exe], выбирете иконку, OK ).

После этих действий при нажатии на созданный ярлык будет останавливаться SELTA и запускаться 1с, где вы можете использовать ваши базы для MS SQL. Вы можете создать такой же ярлык, заменив в нем ["C:\Program Files\Selta\ExecWSS.bat" STOP "C:\Program Files\1Cv77\BIN\1cv7s.exe"] на ["C:\Program Files\Selta\ExecWSS.bat" START "C:\Program Files\1Cv77\BIN\1cv7s.exe"] для запуска 1с с использованием Postgre SQL

Замечания

Вы можете с помощью ExecWSS.bat запустить одновременно и программу использующую ms sql и Postgre SQL с SELTA, но будьте внимательны, со SELTA должна быть в нужном Вам состоянии в момент подключения к базе SQL, а не в момент запуска программы.


Для корректого запуска/остановки SELTA требуется обладать необходимыми правами. Подробнее об этом в Права требующиеся для запуска/остановки SELTA


Принцип работы динамических курсоров SELTA.


ВНИМАНИЕ: описывается принцип работы SELTA начиная с версии 1.0.6
Данный материал поможет Вам в тонкой настройки ваших БД, работающих через SELTA, тем самым улучшив скорость их работы.

Принцип работы

В настоящий момент в связи с отсутствием динамических курсоров в Postgre SQL в SELTA имитируется их работа в odbc драйвере.


При каждом вызове метода SQLFetch для динамического курсора в ODBC драйвере проверяется наличие изменений в таблице(или нескольких) на основе которой был создан курсор. Обновления курсора происходит, только если в таблице произошли изменения.


За фиксирование изменений в таблицах, отвечает таблица pg_table_changes*, содержащая в себе имя таблиц и количество изменений.


Изменения в таблицу pg_table_changes добавляют триггеры, имеющиеся у таблиц, созданных SELTA.


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

Почему надо настраивать

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


Создастся или не создастся триггер на таблицу и соответствующая запись в pg_table_changes, зависит от того, соответствует ли имя таблицы маскам, хранящимся в таблице pg_trigger_table_mask**.

Настройка1

1. Сделайте список таблиц, для которых нужно делать триггеры. Нужно делать триггеры для таблиц, для которых часто создаются и обновляются динамические курсоры, и редко меняется информация ( например справочники). И не нужно делать триггеры, если динамические курсоры не создаются и не обновляются(или это происходит редко).
2. Заполните на основе этого списка таблицу pg_trigger_table_mask.
3. Запустите функцию pg_create_delete_trigger_from_mask() ("SELECT pg_create_delete_trigger_from_mask()"), будут созданы нужные триггеры на таблицы, ненужные удалены, записи в таблице pg_table_changes обновятся, в соответствии с таблицей pg_trigger_table_mask,


Эти действия можно проделывать неограниченное число раз.

Для таблиц 1с имеются стандартные маски они создадутся при создании, инициализации, или обновлении бд.

maskincludeequal
sc%tf
cj%tf
_1sjourntt
1stopertt
_1sopertt
_1scorenttt
_1sentrytt
_1saccstt
pg_%ff

Приложение:

* Таблица pg_table_changes

tabname Имя таблицы
numberchanges Количество изменений

Таблица создается и модифицируется с помощью триггеров и функций, правка вручную не требуется.


** Таблица pg_trigger_table_mask

mask маска
include Входит в выборку (true делать для таблицы с такой маской триггер и запись в pg_table_changes, false — не деклать)
equal Соответствие (true – точное('='), false не точное ('LIKE'))

Заполните поле mask, include, equal в соответствии с тем, какие триггеры нужны для БД, а какие нет.
Для создания триггера для таблицы с именем table1, требуется написать имя таблицы в поле mask, указать, что ее следует включать в выборку — в поле include = true, и точное соответствие equal = true

maskincludeequal
table1true true

Для НЕ создания триггера для таблицы с именем table2, требуется написать имя таблицы в поле mask, указать, что ее НЕ следут включать в выборку — в поле include = false, и точное соответствие equal = true

maskincludeequal
table2falsetrue

Для создания триггера для всех таблиц с именами начинающимеся с tb, дожны написать имя маску в поле mask ('tb%'), указать, что ее следут включать в выборку — в поле include = true, и неточное соответствие equal = false

maskincludeequal
tb%truefalse

Аналогично этому можно создать маску для исключения группы таблиц из выборки.


Ссылки на сторонние дополнения:
1http://infostart.ru/projects/3801/ Дополнение для удобной настройки триггеров от Djelf.


Необходимые действия при обновлении конфигурации 1с.

После обновления конфигурации, необходимо пересоздать триггеры. Это можно сделать в GUI Selta (кнопка пересоздать триггеры).
Так же вы можете сделать это другим способом. выполнив в бд такую функцию, pg_create_delete_trigger_from_mask() ("SELECT pg_create_delete_trigger_from_mask()") (вы можете прочитать подробнее об этом) любым удобным вам способом (через консоль бд pgsql, в pgadmin, интерфейс SELTA.)


Центр управления SELTA@Etersoft

Центр управления SELTA@Etersoft

Назначение

Данная утилита предназначена для облегчения настройки и обслуживания SELTA@Etersoft. Она позволяет просмотреть информацию о владельце копии SELTA@Etersoft, серийный номер, версию ПО (как самого транслятора, так и информацию о базах данных), так же доступны средства Инициализации баз данных, конвертирования данных из MS SQL Server в Postgre SQL и обратно, и средства диагностики продукта.

Главное окно


При установке продукта, на рабочем столе и в меню Пуск создаются необходимые ярлыки для запуска центра управления.
Главное окно программы представлено на следующем рисунке:



Главное окно содержит общую информацию о продукте: название и версию, имя владельца и серийный номер.
В нижней части окна показан текущий статус транслятора и кнопка его Включения / Отключения.
Когда SELTA@Etersoft Запущена, программы работают с Postgre SQL посредством транслятора.
Если SELTA@Etersoft Приостановлена, то возобновляется работа с MS SQL Server


Главное меню

Главное меню окна дает доступ к различным утилитам:


Конвертор и Инициализация баз данных при выключенной SELTA недоступны.



Инициализация баз данных


Данная утилита предназначена для работы с базами данных. При выборе в меню главного окна Центра управления SELTA@Etersoft пункта: Утилиты – Инициализация БД, откроется диалоговое окно с приглашением ввести параметры подключения к СУБД:



Начиная с версии 1.0.7 можно указывать порт подключения. Для этого в поле Адрес сервера Postgre SQL после адреса через запятую введите порт(допускается через двоеточие).


После нажатия кнопки Соединение будет выведено либо сообщение об ошибке (например "неверный пароль") или, в случае успеха, откроется окно Инициализации Баз Данных:



В верхней части окна расположен список баз данных, которые доступны на данный момент. В данный список не включаются системные базы данных Postgre SQL – template0 и template1
Список будет пуст, если ни одной базы не было создано ранее.
Рядом с именами баз указаны их статусы:
– Не инициализировано – база не содержит элементов SELTA@Etersoft
– Ошибка – база содержит некоторые элементы SELTA@Etersoft, но они повреждены
– SELTA@Etersof <версия> – база данных содержит элементы SELTA@Etersoft указанной версии. Эта версия может не совпадать с текущей, установленной на клиенте.

Функциональность

Утилита Инициализации баз данных выполняет следующие функции:

Создание новых баз данных

Все созданные базы данных автоматически инициализируются элементами SELTA@Etersoft текущей версии. Если инициализация не удается – то созданная база будет удалена. Нельзя создать базы с именами template0, template1, master. Все имена баз сводятся к нижнему регистру. База данных должна состоять из латинских символов и цифр (кроме первого символа) и без пробелов.

Инициализация баз данных

Доступно только для баз, помеченных как Не инициализировано. Для выбранной в списске базы данных будет произведена инициализация – в базе будут созданы типы данных, таблицы и функции, необходимые для работы SELTA@Etersoft. Если на каком-то шаге инициализации возникнет ошибка – все изменения будут откачены до исходного состояния базы. Если Вы по ошибке инициализировали не ту базу данных – можно сразу вызвать функцию Деинициализации, это не приведет к потере Ваших данных.
Внимание: не надо инициализировать БД postgres.

Удаление баз данных

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

Переименование баз данных

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

Деинициализация

Удаление элементов SELTA@Etersoft из базы: будут удалены все функции, таблицы и типы данных, созданные ранее.
Внимание! При выполнении этой процедуры Вы можете потерять свои данные! При удалении типов данных удаляются так же все таблицы и функции, в которых они используются!!! Данную функцию безопасно использовать сразу после Инициализации базы, т.к. гарантированно не были созданы таблицы с использованием новых типов. Инициализация не изменяет уже существующие таблицы. Деинициализация доступна только для баз данных, проинициализированных текущей версией SELTA@Etersoft. Если вы хотите удалить элементы старых версий SELTA@Etersoft – сначало произведите процедуру Обновления до текущей версии.

Обновить SELTA

Обновление компонентов SELTA@Etersoft в базе с предыдущей версии до новой. Данная функция добавляет новые элементы SELTA@Etersoft в базу и удаляет устаревшие. Данная функция не приводит к потере Ваших данных. Обновить можно только старую версию до текущей.

Пересоздать курсоры

Пересоздание курсоров SELTA подробнее об этом. Это действие требуется, например после обновления конфигурации 1с.

Диагностика

Доступна для любой базы данных. Данная процедура производит полную проверку базы на наличие компонентов SELTA@Etersoft и формирует отчет, который можно сохранить в файл и отправить в нашу службу технической поддержки, при возникновении проблем.

Тест запросов к базе данных

Тестирование запросов к базе данных SELTA подробнее об этом.


Конвертор


Данная утилита позволяет переносить данные из MS SQL Server в Postgre SQL и обратно.
Производится перенос только данных, структуру базы (таблицы, индексы, хранимые процедуры) требуется создавать отдельно (Для 1С 7.7 это делается при помощи конфигуратора, подробнее смотрите в разделе Перенос данных из MS SQL Server в PostgreSQL для 1С 7.7).
Перенос данных производится через промежуточный дамп в формате CSV. Фактически, необходимо сначало выгрузить данные (таблицы) в CSV-дамп (текстовые файлы) из базы, а затем загрузить их в другую.
На следующем рисунке представлено главное окно утилиты:



"Postgre SQL > CSV" – выгрузка данных из Postgre SQL в CSV-дамп
"MS SQL Server > CSV" – выгрузка данных из MS SQL Server в CSV-дамп
"CSV > Postgre SQL" – загрузка данных из CSV-дампа в Postgre SQL
"CSV > MS SQL Server" – загрузка данных из CSV-дампа в MS SQL Server


CSV-дамп имеет следующий формат:
– все таблицы выгружаются в текстовые файлы (на каждую таблицу по одному файлу, имена файлов соответствуют именам таблиц)
– дополнительно создается файл _list_tables.inf который содержит список всех таблиц
– все записи экранированы кавычками
– все кавычки внутри записей дублируются
– столбцы разделяются знаком ";" (точка с запятой)
– строки разделяются знаком переноса на новую строку
– кодировка файлов – ASCII


При нажатии кнопки копирования данных из Базы в CSV-дамп открывается следующее окно:



Здесь необходимо ввести параметры подключения к базе и указать путь, по котрому будет сохранен дамп: по указанному вами пути будет создан каталог с именем базы, и уже в него будут помещены файлы CSV-Дампа.
При нажатии кнопки Выполнить начнется копирование данных, это может занять очень продолжительное время, до нескольких часов для очень больших баз. Во время копирования будет отображаться диалоговое окно, показывающее статус операции: какая таблица копируется в данный момент, сколько таблиц уже скопировано из скольки.


При нажатии кнопки копирования данных из CSV-Дампа в базу открывается окно:



Здесь так же указываются параметры подключения к базе данных и путь к CSV-Дампу – путь к файлу _list_tables.inf, который содержит вспомогательную информацию.
При нажатии кнопки Выполнить начнется копирование данных в базу, данная операция занимает больше времени, чем Создание CSV-Дампа.


Если в дампе таблиц больше, чем в базе данных (так бывает, если Дамп делался с работающей БД 1С, а восстанавливается в "чистую" конфигурацию) будет возвращена ошибка



Для избежание подобной ошибки, установите флажок "Пропускать таблицы отсутствующие в базе".


Загрузка CSV дампа в MS SQL Server выполняется аналогично.


Диагностика


Утилита диагностики SELTA@Etersoft производит проверку элементов транслятора в системе: проверяется наличие и версии необходимых dll, а так же ключи реестра.



Для проведения диагностики нажмите кнопку Запуск, в текстовом поле Результат диагностики появится лог операции, который можно скопировать или сохранить в файл. При возникновении проблем с SELTA@Etersoft вы можете отправить этот лог диагностики в нашу службу технической поддержки, что может значительно упростить решение проблем.


В нижней части окна расположены элементы управления для "Журнала сообщений SELTA@Etersoft". Он представляет собой файл логов транслятора, который включает в себя все SQL запросы, которые поступили в транслятор, и его ответы – SQL запросы на языке pl/pgSQL. Данные логи могут быть очень полезны при выявлении ошибок работы транслятора.


Тест запросов


Данная утилита позволяет проверить, как работает сам транслятор запросов, какие SQL запросы поддерживаются, а какие нет, и, возможно, выявить ошибки трансляции.



В верхнее текстовое поле вводится SQL запрос для MS SQL Server, и после нажатия кнопки Тест в нижнем поле появляется запрос для Postgre SQL.
Если результат трансляции начинается со строк:
"ERROR: can not translate query: "
то это означает, что либо данных запрос транслятором не поддерживается, либо он содержит синтаксические ошибки.

Тест запросов к БД

Также можно протестировать запросы непосредственно к БД, с выводом результатов с помощью теста запросов к БД как запустить тест запросов к БД.



Запросы вводятся в верхнее поле (Введите текст SQL запроса...). SQL запрос вводится в формате MS SQL Server. Результат трансляции можно посмотреть, установив флажок Показывать результаты трансляции.
В нижнем поле (Результат выполнения запроса). Вы можете видеть статус выполнения запроса, и возвращенные результаты.
Для запросов в формате PGSQL, без трансляции, введите "!!" перед запросом.



Лицензия и документация


В разделе Справка в меню главного окна имеются пункты О программе, Лицензия и Помощь. Они позволяют просмотреть информацию о продукте, его версии и владельце: