PostgreSQL

Инструкция от СОФТ-ВЕСТа, ориентируемся на нее и если надо, то исправляем и корректируем

Под Windows x64

1. Скачиваете PostgreSQL 13 с оф. сайта https://www.postgresql.org/download/ и устанавливаете его. Текущая актуальная версия 13.6 x64. По умолчанию все ставится в каталог "C:\Program Files\PostgreSQL\13\". Системная БД находится в каталоге "C:\Program Files\PostgreSQL\13\data\"

2. Проверяете, чтобы установились виндовые переменные окружения, перечисленные в
C:\Program Files\PostgreSQL\13\pg_env.bat

3. Для того, чтобы был доступ к серверу не только с локальной машины, нужно в файле
C:\Program Files\PostgreSQL\13\data\postgresql.conf
установить параметр
listen_addresses = '*'
и в файле
C:\Program Files\PostgreSQL\13\data\pg_hba.conf
настроить диапазоны адресов IPv4 и IPv6, которые имеют право соединяться с этим сервером.
Кроме того, нужно добавить правила в настройки Firewall, по умолчанию PostgreSql использует порт 5432.
После установки параметров нужно перезапустить службу сервера.

4. Документация на PostgreSQL на русском
https://postgrespro.ru/docs/postgresql/13/index

5. Установите на сервер Python3 обязательно (3.7) - для использования словарей программирования
5.1. Через language pack
https://www.enterprisedb.com/docs/epas/latest/language_pack/
Ставит три языка, включая Python 3.7 в каталог C:\edb\languagepack\v1.
5.2. Можно поставить Python3 из дистрибутива.
После установки нужно добавить путь к python.exe в PATH, и прописать его же в переменную среды PYTHONHOME
После установки Python3 и настройки параметров среды перезапустить сервер postgres.

6. PostgreSQL устанавливается как сервис windows, работает от имени пользователя NETWORK SERVICE
7. Каждая база данных Домино размещается в отдельном табличном пространстве (tablespace), соответственно все ее файлы будут в отдельном каталоге на диске.
Создайте отдельный каталог для данных, например C:\Postgres\Database. Дайте полные права на этот каталог пользователю NETWORK SERVICE. Перезапустите службу Postgres.
8. Выберите имя схемы (БД Домино), латиницей, в верхнем регистре. Создайте в файловом каталоге БД подкаталог с именем, равным имени схемы.
9. Скрипты развертывания БД Домино последовательно создают (с именами, равными имени БД Домино) следующие сущности Postgres:
- роль (ROLE), она же пользователь postgres
- табличное пространство (TABLESPACE) с размещением файлов в указанном каталоге
- база данных (DATABASE) в указанном табличном пространстве
- схема (SCHEMA) в указанной базе данных
Детали можно посмотреть в файле bin\PostgreSQL\InitUser.sql

10. Скрипты создания БД Домино находятся в каталоге bin\PostgreSQL.
Для создания БД запустите CreateDB.bat с параметрами
CreateDB.bat
ИмяСхемы
СегментНумерации
ХостСервера
СистемныйПароль
ПутьКФайламБД - туда где будет лежать табличное пространство
Пример для создания схемы TEST с сегментом 0, на локальной машине, системный пароль равен 'postgres':
CreateDB.bat TEST 0 localhost postgres c:\Posgres\Database\TEST

После того, как работа скрипта закончится, нужно проанализировать логи (*.log) на предмет ошибок:
- соединения с БД, по логу InitUser_*.log
- доступа к файловому каталогу для создания табличного пространства (там же)
- прочих ошибок, не должно быть строк с текстом 'ОШИБКА:' в log- файлах

11. Запустите Домино, опишите БД в проекте. Выберите драйвер PostgreSQL, в параметре "Путь, Наименование соединения, ServiceName" укажите сетевое имя сервера или его ip- адрес. Остальные параметры идентично Oracle. Сохраните изменения и выполните вход в БД с пользователем 'Администратор'. Добавьте пользователю роль "Системный администратор Домино", сохраните изменения, выйдите из системы и снова войдите. В появившемся меню "Системный администратор" выполните
Системный администратор Домино/
Обслуживание БД/
Учетные регистры/
Создать структуры хранения учетных регистров - Не забыть попробовать
Завершите сеанс работы с Домино

12. Настройте планировщик задач. Так как в PostgreSQL отсутствует собственный планировщик, используется планировщик ОС.
Создайте в каталоге БД подкаталог Jobs, и скопируйте в него файлы bin\PostgreSQL\JobScheduler.bat и JobScheduler.sql.
Настройте в ОС периодическое задание, которое запускает файл <КаталогБД>\Jobs\JobScheduler.bat раз в минуту.
Параметры запуска: ИмяСхемы ХостСервера. Рабочий каталог: <КаталогБД>\Jobs. В качестве ХостСервера обычно указываем localhost.
Обязательно установите в настройках задания правило, запрещающее запуск задания в параллель.
Активируйте задание, и убедитесь, что оно выполняется без ошибок.
Протокол работы планировщика записывается в файл <КаталогБД>\Jobs\JobScheduler_<ИмяСхемы>.log

Если база тормозить нужно проверять этот лог.

13. Для создания архива БД используется утилита pg_dump
Для создания архива БД в виде одного сжатого файла (локальный сервер, localhost)
pg_dump.exe -Fc postgresql://<Схема>:<Схема>@localhost:5432/<Схема> > <Имя файла дампа>
или
pg_dump.exe -Fc postgresql://postgres:<сист.пароль>@localhost:5432/<Схема> > <Имя файла дампа>

https://postgrespro.ru/docs/postgresql/13/app-pgdump

Обязательно проверить. !!!!!

 

14. Для восстановления БД из архива используется утилита pg_restore
14.1. Выполнить очистку/создание схемы
Для этого в каталоге bin\PostgreSQL запустите InitUser.bat с параметрами
InitUser.bat
ИмяСхемы
СегментНумерации
ХостСервера
СистемныйПароль
ПутьКФайламБД
Пример для схемы TEST с сегментом 0, на локальной машине, системный пароль равен 'postgres':
InitUser.bat TEST 0 localhost postgres c:\Posgres\Database\TEST
14.2. Выполнить восстановление, обязательно от имени postgres, иначе не создаются написанные на python функции.
pg_restore.exe -d postgresql://postgres:<сист.пароль>@localhost:5432/<Схема> <Имя файла дампа> 2>Restore_<Схема>.log

https://postgrespro.ru/docs/postgresql/13/app-pgrestore

15. Перенос данных из Oracle в PostgreSQL.

Утилита миграции bin\MigrateDataToPgSQL. Переносит данные непосредственно из схемы Оracle в PostgreSQL,
без промежуточных файлов. Нуждается в скоростном соединении к обоим СУБД.

База данных (схема) PostgreSQL должна быть предварительно создана стандартными скриптами.
Обработчик заданий для БД PostgreSQL должен быть выключен.

Утилита переносит описания таблиц и их данные, а так же sequences. Индексы, constraints,
процедуры и триггера не переносятся. Предполагается, что они будут созданы при последующем запуске Домино.
После переноса данных нужно обязательно запустить Домино, и выполнить "Создать структуры хранения учетных регистров"

При запуске можно явно указать множество таблиц для переноса через regexp- маски INCLUDE и EXCLUDE. Это позволяет
запустить несколько экземпляров утилиты для параллельной обработки данных. Нужно учитывать, что перед переносом данных
для существующих таблиц PostgreSQL выполняется truncate ... cascade, поэтому связанные таблицы должны переноситься
одним экземпляром утилиты (отключается параметром TRUNCATE=N).

Параметры запуска
ORA_CONN=<Имя соединения с Oracle, из файла tnsnames.ora>
ORA_USERNAME=<Имя пользователя (схемы) Oracle, (БД Домино - источник)>
ORA_USERPWD=<Пароль пользователя Oracle, если не указан, то равен имени пользователя>
PG_CONN=<Имя соединения с PostgreSQL, в формате host[:port]>"
PG_USERNAME=<Имя роли (схемы) PostgreSQL, (БД Домино - приемник)>"
PG_USERPWD=<Пароль роли PostgreSQL, если не указан, то равен имени роли>"
PG_SYSPWD=<Системный пароль PostgreSQL>
INCLUDE=<Множество таблиц для переноса (в виде regexp- маски), не обязательный, по умолчанию "все таблицы">
EXCLUDE=<Множество таблиц, которые нужно исключить (в виде regexp- маски), не обязательный, по умолчанию "никакие" (*)>
TRUNCATE=<Признак "выполнять truncate ... cascade для существующих таблиц PostgreSQL", не обязательный, по умолчанию "Y">
ORA_TRACE=<Уровень трассировки обращений к Oracle, от 0 до 4, по умолчанию 0>
PG_TRACE=<Уровень трассировки обращений к PostgreSQL, от 0 до 4, по умолчанию 0>

(*) В любом случае не переносятся таблицы DOMINO_JOBS и DOMINO_JOBS_LOG, так как механизм "заданий" реализован в PostgreSQL по-другому.
Так же не переносятся таблицы DB1_ACCOUNT_PLAN, DB1_TRANS_NNNN и DB1_SALDO_NNNN, так как механизи раздельного хранения проводок
по планам счетов в PostgreSQL не используется. Вместо этого выполняется перенос
DB1_FULL_TRANSACTION (Oracle view) -> DB1_TRANSACTION (PostgreSQL table)
Regexp-маска, реализующая перечисленные исключения
^DOMINO_(JOBS|JOBS_LOG)$|^DB1_(ACCOUNT_PLAN|TRANS_\\d{1,10}|SALDO_\\d{1,10})$

 

Все необходимые файлы доступны в \USERS\jupiter\Domino\BIN

 

ограничивался настройкой размера буферного кэша в postgresql.conf
shared_buffers =

 

 

В оракле работали со схемами, в постграсе работаем с базами данных.

В постграсе тоже есть схемы но работаем с базой данных в целом.

Если мы хотим описать строку без ограничений - в программе строку больше 4000 символов. 

Поле текст нужно выяснить точно размер.

NAME можно выбирать text, но без гарантии работы, нужно проверять.

Домены пришлось описывать самостоятельно. Объявление типов. Пользовательские типы. Не используем. 

Можно создавать свои функции и протащить их в проект.

Системных оптимизаторов нет. Нужно настраивать свои через виндовый планировщик.

Триггеры настраиваются для таблицы. Один триггер может работать больше чем на одну таблицу.

Индексы тоже можно смотреть в таблицах

С вопросом загрузки базы текущим процессом нужно разбираться самостоятельно.

data/pg_hba.conf - настройка для доступа к базе, внутри или из вне сети. Разбираться самостоятельно.

Ограничений на размер файлов табличного нет (предположительно)

 

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

 

Куда устанавливать постграс, винда/линкс

Jupiter.bat запускается только после создания всех таблиц.

Postgres длл должны быть в бинах, длл должны быть для 32 битной системы.

 

файлы

0:/UPLOAD/1_Support/KnowHow/PostgeSQL/

 


Система JUPITER                                 www.jupiter.systems                                 (с) 2024г.