Operation Orchestration CentralをPostgreSQLでインストールするメモ
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形式が安心?