Operation Orchestration CentralをPostgreSQLでインストールするメモ

【PR】
※IT系の記事は当方環境での実施内容となるため実施する場合は自己責任でお願いいたします。

OO2020.08とWindowsServer2019で検証

OO2020.08でサポートされているPostgreSQLのバージョン

9系

ネットで検索して出てきた、OO_10.60_Database_Guide_ja.pdf
によるとPostgreSQLについては、
9.5 x86 32ビット/x64 64ビット
がサポートVerということで9x系最新(2021/12/10時点)である
postgresql-9.6.24-1-windows-x64.exe
を使用してみたところ、インストールできました。

10系

また、↓の
postgres10_create_oo_db_windows.sql
の中には

* This script creates an "OO-certified" databse in PostgreSQL on Windows.
* Verified 10.8

とあり、10系も行けそうなので、
10X系最新の10-19.1で試したところ、こちらも問題なくインストールできました。

PostgreSQLインストール時のエラー

※PostgreSQLをインストールする時に

an error occured executing the microsoft vc++ runtime installer

と出る場合はインストーラーをダブルクリックではなく、
コマンドプロンプトから以下のコマンドで実行します。

cd exeをダウンロードしたフォルダ
postgresql-9.x.x.x-windows.exe --install_runtimes 0

PostgreSQLはポートを変えて複数のバージョンが同時稼働できるため
先に上位バージョンを入れていると起こるのかもです。

WindowsにPostgreSQL64ビット版をインストールするとpostgresql.confは
デフォルトで

C:\Program Files\PostgreSQL\14\data

に入ります。
※「14」はVersionですが、14はooの2020.08Verでは「Unsupported database version」となります。

デフォルトの各パラメーターの値は

#default_transaction_isolation = 'read committed'
#autovacuum = on
#track_counts = on
max_connections = 100

となっています。
postgresql.confの値でも確認できますし、psqlから

postgres=# show default_transaction_isolation;
default_transaction_isolation
-------------------------------
read committed
(1 行)

てな感じで確認できます。
psqlの値からすると、
postgresql.confに#で始まるパラメータの値は現在設定されているデフォルト値のようなので、
変えなくてもよいものはそのままにしておきます。
変更したらWindowsのサービスからPostgreSQLを再起動して
変更した設定を反映します。

PostgreSQL14ではやり方によってインストールに失敗する

最新の14でooのインストールを試してみたのですが、インストールの中で以下のようなメッセージが出てDBのCREATEに失敗してしまいます。

Create database - failed
unable to create database, reason:ERROR:UNENCRYPTED
PASSWORD は今後サポートされません
ヒント:UNENCRYPTEDを削除してください。そうすれば替わりにパスワードを暗号化形式で格納します。

PostgreSQLのセキュリティ要件が厳しくなったのですかね。
14でも事前にDBを作成してそのDBに接続するようにすれば、一応インストールできました。
事前にDBを作成する時のSQL文については、OOCentralのインストールフォルダにあるSQL文を参考に。Ver10用とそうでないのはENCRYPTEDの部分が違ってますな。

postgres_create_oo_db_windows.sql

/*
* Author: Harar Zafrir
* Maintainer: Vlad Moldovan, moldovan@microfocus.com
*
* Version: 1.2
*
* Last update: 2018-JUL-31
*
* This script creates an "OO-certified" databse in PostgreSQL on Windows.
* Verified on 9.1, 9.2, 9.3, 9.4 and 9.5.
*
* Usage:
* ------
* EDIT this script and replace-all:
* -------------------------------------------------
* OODatabaseName - this will be the database name
* OODbUser - this will be the user / login
* OODbPassword - this will be the password
*
* Connect as postgres (or another sufficiently-privileged user) and execute it.
*
* -----------------------------------------------------------------------------
* Change List
* -----------------------------------------------------------------------------
* 2016-MAR-03 [1.0] First version
* 2016-AUG-09 [1.1] OO 10.70 adaptations - no changes
* 2018-JUL-31 [1.2] Rebranding, no functionality changes
* -----------------------------------------------------------------------------
*/

CREATE ROLE "OODbUser" LOGIN UNENCRYPTED PASSWORD 'OODbPassword' NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;

CREATE DATABASE "OODatabaseName" WITH ENCODING='UTF8' LC_COLLATE = 'English_United States.1252' LC_CTYPE = 'English_United States.1252' CONNECTION LIMIT=1000;

ALTER DATABASE "OODatabaseName" OWNER TO "OODbUser";

postgres10_create_oo_db_windows.sql

/*
* Author: Vlad Moldovan, moldovan@microfcus.com
*
* Version: 1.0
*
* Last update: 2019-Jun-10
*
* This script creates an "OO-certified" databse in PostgreSQL on Windows.
* Verified 10.8
*
* Usage:
* ------
* EDIT this script and replace-all:
* -------------------------------------------------
* OODatabaseName - this will be the database name
* OODbUser - this will be the user / login
* OODbPassword - this will be the password
*
* Connect as postgres (or another sufficiently-privileged user) and execute it.
*
* -----------------------------------------------------------------------------
* Change List
* -----------------------------------------------------------------------------
* 2019-JUN-10 [1.0] First version
* -----------------------------------------------------------------------------
*/

CREATE ROLE "OODbUser" LOGIN ENCRYPTED PASSWORD 'OODbPassword' NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;

CREATE DATABASE "OODatabaseName" WITH ENCODING='UTF8' LC_COLLATE = 'English_United States.1252' LC_CTYPE = 'English_United States.1252' CONNECTION LIMIT=1000;

ALTER DATABASE "OODatabaseName" OWNER TO "OODbUser";

ただ、

CREATE DATABASE "OODatabaseName" WITH ENCODING='UTF8' LC_COLLATE = 'English_United States.1252' LC_CTYPE = 'English_United States.1252' CONNECTION LIMIT=1000;

の部分は
普通に日本語環境でインストールしたPostgreSQLだとエラーになるようです。
LC_COLLATEとLC_TYPEが英語インストール仕様なのかな。
ooのインストーラーの途中で作成したoo用DBで以下のようなSQLを実行すると軒並み「Japanese_Japan.932」でした。

OODatabaseName => select name,setting,context from pg_settings where name like 'lc%';
name | setting | context
-------------+--------------------+-----------
lc_collate | Japanese_Japan.932 | internal
lc_ctype | Japanese_Japan.932 | internal
lc_messages | Japanese_Japan.932 | superuser
lc_monetary | Japanese_Japan.932 | user
lc_numeric | Japanese_Japan.932 | user
lc_time | Japanese_Japan.932 | user
(6 行)

何も付けないで単純にCREATE DATABASEで作成したDBでも以下のように同じなので

sample=# select name,setting,context from pg_settings where name like 'lc%';
name | setting | context
-------------+--------------------+-----------
lc_collate | Japanese_Japan.932 | internal
lc_ctype | Japanese_Japan.932 | internal
lc_messages | Japanese_Japan.932 | superuser
lc_monetary | Japanese_Japan.932 | user
lc_numeric | Japanese_Japan.932 | user
lc_time | Japanese_Japan.932 | user
(6 行)

oo用の空DBを事前に作るときには以下でいいのではないかと思います。

CREATE DATABASE "OODatabaseName" WITH ENCODING='UTF8' CONNECTION LIMIT=1000;

上記の理由とネットで調べると検索とかのパフォーマンスには影響するが違っているからといって致命的はではないように思うので、必要かどうか分かりませんが、一応、以下のようにTEMPLATEを指定すればその設定でDBを作成できます。

CREATE DATABASE "OODatabaseName1" WITH ENCODING='UTF8' TEMPLATE template0 LC_COLLATE = 'English_United States.1252' LC_CTYPE = 'English_United States.1252' CONNECTION LIMIT=1000;

template0が「Japanese_Japan.932」なのになんでこういう風に変更できるのかね。よくわからん。

postgres=# \l
データベース一覧
名前 | 所有者 | エンコーディング | 照合順序 | Ctype(変換演算子) | アクセス 権限
-----------------+----------+------------------+----------------------------+----------------------------+-----------------------
OODatabaseName | postgres | UTF8 | Japanese_Japan.932 | Japanese_Japan.932 |
OODatabaseName1 | postgres | UTF8 | English_United States.1252 | English_United States.1252 |
postgres | postgres | UTF8 | Japanese_Japan.932 | Japanese_Japan.932 |
sample | postgres | UTF8 | Japanese_Japan.932 | Japanese_Japan.932 |
template0 | postgres | UTF8 | Japanese_Japan.932 | Japanese_Japan.932 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | Japanese_Japan.932 | Japanese_Japan.932 | postgres=CTc/postgres+
| | | | | =c/postgres

OODatabaseName1=# select name,setting,context from pg_settings where name like 'lc%';
name | setting | context
-------------+----------------------------+-----------
lc_collate | English_United States.1252 | internal
lc_ctype | English_United States.1252 | internal
lc_messages | Japanese_Japan.932 | superuser
lc_monetary | Japanese_Japan.932 | user
lc_numeric | Japanese_Japan.932 | user
lc_time | Japanese_Japan.932 | user
(6 行)

通常のインストールではインストールの時にDBや新規ユーザーを作るので
インストールのDBのところでは「Create the database/schema」を選択して
以下のようなパラメータを入れますが

Hostname or IP address →localhostとか
Port→デフォルトなら5432
Database→oo用新規DBの名前
Username→↑のDBにアクセスするoo用の新規ユーザー
Password→↑のユーザーのパスワード

Admin Username:すでにある管理者権限のユーザーpostgresかな?
Admin Password:↑のパスワード

事前にDBを作成した場合やリカバリ等で既にあるDBに接続する場合はooCentralインストール時のDBのところで、DBをすでに作成しているので、
「Connect to existing database/schema」で各種項目を入れます。
Hostname or IP address →localhostとか
Port→デフォルトなら5432
Database→oo用に前もって作っておいたDBの名前
Username→↑のDBにアクセスするoo用の既存ユーザー
Password→↑のユーザーのパスワード

PostgreSQLではDBのコネクタを別途用意する必要はなし

MySQLの場合は別途入手するコネクターが必要でしたが、
PostreSQLの場合は特になくてもよいようです。助かる。

PostgreSQLでのDBバックアップ

DBバックアップとリカバリですが・・・
MySQLの時は保存時の文字コードが想定していないものになってリカバリできないなど、かなりやっかいだったので、、、

試しにpg_dumpしてみる

※注 コンテンツパックもDBに入っているので!たいして使ってなくてもギガレベルのバックアップになります。

「-c」オプションで設定しているので、DBの中身をDROPしてからリストアしているっぽい。

・SQL形式(出力ファイルでかい、サイズが軽ければテキストで見れないこともない)

■OOのDBのみバックアップ

バックアップ

pg_dump.exe -h localhost -p 5432 -U oouser -c oodb > C:\temp\oo.sql

リストア

psql -d oodb -p 5432 -U oouser -f C:\temp\oo.sql

■oo以外にも色々DBあるならPostgreSQL全体をバックアップ

バックアップ

pg_dumpall.exe -U postgres -p 5432 > C:\temp\pg_dump_all.dmp

リストア

psql -p 5432 -U postgres -f C:\temp\pg_dump_all.dmp

→SQL形式は上記のコマンドでリストアしたのを確認。SQLファイルでのバックアップはいい感じ。

・DUMP形式(出力ファイルサイズはSQLに比べればだいぶ少なくなる)

pg_dump.exe -h localhost -p 5432 -U oouser -Fc oodb > C:\temp\oo.dmp

※DUMP形式はリストア未確認
中身見れるSQL形式が安心?

Setup_Memo

Posted by admin