逐次差分反映先システムでSymfoware/pgs、Enterprise PostgresまたはPostgreSQLのセットアップを行ってください。
データベースの定義を行ってください。
セットアップとデータベース定義の方法は、Symfoware Server、Enterprise PostgresまたはPostgreSQLのマニュアルを参照してください。
データベースにアクセスするユーザや必要な権限については、"7.3.4 lxrtmdbコマンド"を参照してください。
環境変数については"4.3.1 環境変数の設定"を参照してください。
入力データと表の対応について、"8.3.1 INTABLE定義文"および"A.1.2 ジャーナル定義の対応表"を参照してください。
設定について
識別子の大文字/小文字を区別する場合や、標準ではない識別子(標準識別子の形式に関する規則に従わない識別子)を使用する場合、DB動作環境定義のUSE_DELIMITED_IDENTIFIERSキーワードに"ON"を指定してください。
標準ではない識別子の詳細については、Symfoware Server、Enterprise PostgresまたはPostgreSQLのマニュアルを参照してください。
各国語文字列属性は、データベースの文字コードが"UTF8"の場合のみ、定義可能です。
データベースでエラーが検出された場合、エラーを回避し、逐次差分反映処理を継続することがあります。
例)存在するレコードに対する追加操作を実施し、一意制約違反が発生した場合は、更新操作に変更し、逐次差分反映処理を継続する。
データベース名について
データベース名については、DB動作環境定義のUSE_DELIMITED_IDENTIFIERSキーワードに関係なく、定義されている内容と大文字/小文字を含めて一致している必要があります。データベース作成時とDBサービス定義の対応例を以下に示します。DATABASEオペランドについては"8.3.4 STOREGROUP定義文"を参照してください。
データベース作成時 | DBサービス定義のDATABASEオペランド |
---|---|
CREATE DATABASE RDBDB; | rdbdb |
CREATE DATABASE "RDBDB"; | RDBDB |
CREATE DATABASE rdbdb; | rdbdb |
登録されているデータベース名の確認例を以下に示します。psqlコマンドで接続されている状態で確認します。
rdbdb=# \l データベース一覧 名前 | 所有者 | エンコーディング | 照合順序 | Ctype(変換演算子) | アクセス権 -----------+----------+------------------+--------------------+--------------------+----------------------- postgres | symfopgs | UTF8 | Japanese_Japan.932 | Japanese_Japan.932 | rdbdb | symfopgs | UTF8 | Japanese_Japan.932 | Japanese_Japan.932 | template0 | symfopgs | UTF8 | Japanese_Japan.932 | Japanese_Japan.932 | =c/symfopgs + | | | | | symfopgs=CTc/symfopgs template1 | symfopgs | UTF8 | Japanese_Japan.932 | Japanese_Japan.932 | =c/symfopgs + | | | | | symfopgs=CTc/symfopgs (4 行) |
データベースアクセスユーザ名について
データベースアクセスユーザ名については、DB動作環境定義のUSE_DELIMITED_IDENTIFIERSキーワードに関係なく、データベースに定義されている内容と大文字/小文字を含めて一致している必要があります。データベースアクセスユーザ作成時とlxrtmdbコマンド -uオプションの指定値の対応例を以下に示します。lxrtmdbコマンドについては"7.3.4 lxrtmdbコマンド"を参照してください。
データベースアクセスユーザ作成時 | lxrtmdbコマンド -uオプション指定値 |
---|---|
CREATE USER USER1 WITH PASSWORD 'user1'; | user1/user1 |
CREATE USER "USER1" WITH PASSWORD 'user1'; | USER1/user1 |
CREATE USER user1 WITH PASSWORD 'user1'; | user1/user1 |
データベースアクセスユーザ名の確認例を以下に示します。psqlコマンドで接続されている状態で確認します。
rdbdb=# \du ロール一覧 ロール名 | 属性 | メンバー ------------------+----------------------------------------------------------------------+---------- symfoadmin | スーパーユーザ, ロールを作成できる, DBを作成できる, レプリケーション | {} user | | {} (2 行) |
また、lxrtmdbコマンド -uオプションの省略時など、Trust認証を使用する場合は、データベース上でユーザを作成する際に、OS上のユーザ名と大文字/小文字を含めて一致している必要があります。対応例を以下に示します。
OS上のユーザ名 | データベースアクセスユーザ作成時 |
---|---|
ローカルシステムアカウント | CREATE USER "SYSTEM"; |
Administrator | CREATE USER "Administrator"; |
ポート番号
ポート番号はデータベースクラスタごとに使用します。ポート番号は、postgresql.confやpg_ctlコマンドで指定できます。すべてにおいて省略した場合は、デフォルト値が使用されます。ポート番号は他のデータベースクラスタと競合しないようにしてください。
指定方法 | 例 |
---|---|
postgresql.confに指定 | port = 26500 |
pg_ctl startコマンド | pg_ctl start -w -D /db/inst1 -o "-p 26500" |
| pg_ctl register -N "Symfoware Server inst1" -U usr1 -P passwd1 -D D:\db\inst1 -w -o "-p 26500" -S demand |
データベースクラスタで使用するポート番号と、DBサービス定義で指定するポート番号は合わせてください。
pg_ctlコマンドの詳細については、Symfoware Server、Enterprise PostgresまたはPostgreSQLのマニュアルを参照してください。
DBサーバのパラメータ(postgresql.conf)の設定
DBサーバのパラメータは、ファイルpostgresql.confに設定します。
以下のパラメータに"on"を設定しないでください。設定した場合、意図せず逐次差分反映が異常終了する可能性があります。
exit_on_error = on |
また、格納側の列の属性にbyteaを使用する場合、以下のパラメータに"off"を設定しないでください。設定した場合、不当なデータを格納する可能性があります。
standard_conforming_strings = off |
リモートデータベース環境
リモートデータベース環境については、"第7部 リモートデータベース環境における運用"を参照してください。
注意事項
格納側列として指定したすべての列が主キーの場合、逐次差分反映機能は使用できません。
データベース名には、マルチバイト文字、"/"、"@"、":"および"|"を使用しないでください。データベース名には、半角空白および"\"を使用しないでください。
スキーマ名および表名には、"'"、":"および"?"を使用しないでください。スキーマ名および表名には、半角空白を使用しないでください。
列名には、":"および"?"を使用しないでください。列名には、";"を使用しないでください。
ユーザ名にはマルチバイト文字を使用しないでください。
PostgreSQLの場合、nchar(n)とnchar varying(n)は使用できません。char(n)またはvarchar(n)を使用してください。