データベースの設定と移行
データベースの作成、構造変更処理は、jma-receiptパッケージインストール時に自動で実行されないようになりました。パッケージをインストールしたら、まず最初にデータベースのセットアップをおこなう必要があります。
メニュー
- 日医標準レセプトソフトの停止、データベースの削除
- 文字エンコーディングの選択(EUC-JP or UTF-8)
- 初期データベースのセットアップ(EUC-JP)
- 初期データベースのセットアップ(UTF-8)
- データベースのリストア(以前のバージョンからの移行)
- データベースの文字コード変更
- 2台運用の設定
- 日医標準レセプトソフトの起動
- 更新履歴
日医標準レセプトソフトの停止、データベースの削除
ここでは日医標準レセプトソフトのインストール直後の環境を想定しています。インストール直後にjma-receiptを起動しようとすると以下のように表示され起動されません。この状態で初期データベースのセットアップに進んでください。
$ sudo service jma-receipt start
**************************************************** * * * Don't execute database schema change processing. * * * * Execute jma-setup manually. * * $ sudo jma-setup * * * * Cancel {start} jma-receipt daemon. * * * ****************************************************
データベースのセットアップをやり直す場合は以下のように日医標準レセプトソフトを停止しデータベースを削除してください。
$ sudo service jma-receipt stop
$ sudo -u orca dropdb orca
dropdbを実行して以下のように「存在しない」というエラーが出る状態になったら次に進みます。
dropdb: database removal failed: ERROR: database "orca" does not exist
文字エンコーディングの選択(EUC-JP or UTF-8)
日医標準レセプトソフトVer.4.5.0(Ubuntu 10.04)からは、これまでのEUC-JPエンコーディングに加えてUTF-8が使用出来るようになりました。UTF-8を選択することで(氏名について)使用出来る文字が増えます。しかしながら対応していない連携ソフト等で文字化けを起こす場合がありますので、確認してから決定してください。
※ EUC-JPからUTF-8への変更はセットアップ後でも可能です。UTF-8からEUC-JPへの変更はJISX0208の範囲外の文字を登録してしまった後では困難になります。
詳細については拡張漢字(JISX0213:2004)の使用を参照してください。
初期データベースのセットアップ(EUC-JP)
デフォルトではデータベースが「EUC-JP」でセットアップされます。前バージョンのデータが無く新しく作成する場合は、そのまま jma-setupを実行します。
$ sudo jma-setup
処理が正常に終了したのを確認して日医標準レセプトソフトの起動をしてください。
初期データベースのセットアップ(UTF-8)
「UTF-8」でセットアップする場合は、jma-setupを実行する前に 「 /etc/jma-receipt/db.conf 」 というファイルを以下の内容で作成します。
DBENCODING="UTF-8"
db.confファイルを作成したら jma-setupを実行します。
$ sudo jma-setup
psql -l でorcaデータベースのEncodingが「UTF8」であることを確認してください。
$ sudo -u orca psql -l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+----------+----------+-------------+-------------+----------------------- orca | orca | UTF8 | C | C | postgres | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | (略)
問題なければ日医標準レセプトソフトの起動をしてください。
データベースのリストア
Debian Etch/Ubuntu Hardy/Ubuntu Lucid等の以前のバージョンのバックアップデータからのリストアも同様の手順です。
日レセが起動している場合や既にデータベースが作成されている場合は、以下のコマンドにて停止および削除をおこなってください。
$ sudo service jma-receipt stop
$ sudo -u orca dropdb orca
バックアップデータのエンコーディングがUTF-8の場合(Ubuntu 10.04で拡張漢字対応によりUTF-8への変更を行ったバックアップデータを使用する場合)は、 「/etc/jma-receipt/db.conf」というファイル(デフォルトでは存在しません)を作成し、DBENCODING="UTF-8"と記述を入れてから先に進みます(EUC-JPの場合はファイルが無いままで問題ありません)。
$ sudo gedit /etc/jma-receipt/db.conf
DBENCODING="UTF-8"
初期のセットアップをおこなわず、ユーザーの作成、データベースの作成のみを行います。以下のようにjma-setupをオプション「--noinstall」をつけて実行します。
$ sudo jma-setup --noinstall
空のデータベース「orca」が作成されるので、データベースをリストアしてください。
リストアするバックアップデータは以下のようにして取得します(旧環境にて実行)。pg_dumpには 「-Fc」を付けてカスタムアーカイブ形式で取得します。
$ sudo service jma-receipt stop
$ sudo -u orca pg_dump -Fc orca > orca.dump
orca.dumpを新環境に移動しpg_restoreを実行します。orcaユーザーで実行するため一部ワーニングが出るので「 -x(小文字のエックス)(アクセス権限をリストアしない) -O(大文字オー)(オーナーの変更をしない)」オプションを入れて実行します。 「-d orca」はデータベースを指定しています。
$ sudo -u orca pg_restore -x -O -d orca orca.dump
このときバックアップデータにより以下のようなエラーが出る場合があります。以下のエラーの場合は正常として、そのまま進んでください。
pg_restore: [archiver (db)] Error while PROCESSING TOC: pg_restore: [archiver (db)] Error from TOC entry 4935; 0 0 COMMENT EXTENSION plpgsql pg_restore: [archiver (db)] could not execute query: ERROR: must be owner of extension plpgsql Command was: COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; WARNING: errors ignored on restore: 1
エラーの内容は「COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language';」という一文がエラーになったということを表しています。これは、plpgsqlという外部拡張モジュールのコメント作成が失敗したために起こっています。plpgsql本体は「IF NOT EXISTS」という構文により拡張外部モジュールが「入っていなければ、作成する」命令が実行されていますが、その外部拡張モジュールについてのコメント(説明)はIF NOT EXISTSという構文がないために強制的に作成する命令になっています。しかしながらorcaというユーザーでは権限不足によりエラーとなります。本来plpgsqlは最初からコメント付きで入っているため、リストアしなくても問題ありませんが、EXTENSIONのコメントのリストアを抑止するオプションが無いため、エラーとして表示されます。最後にWARNINGとしてエラーが一つあったが無視されたと出力されて終了しています。
正常に終わったら再度 jma-setupをオプション無しで実行します。
$ sudo jma-setup
古いバージョンからのリストアの場合は、構造変更処理が実行されデータベースのバージョンが更新されます。
処理が正常に終了したのを確認して日医標準レセプトソフトの起動をしてください。
日医標準レセプトソフト起動後、必ずプログラム更新を実行してください。
プログラム更新実行後、データベーススキーマチェックツールにて正常終了することを確認してください。
データベースの文字コード変更
2013/1/15追記
jma-dbconvert.shに問題があり、そのまま実行するとエラーとなるため、データベース文字エンコーディング変換の追記を参照してコメントを削除してから実行してください。
データベースのエンコーディングを「EUC-JP」から「UTF-8」に変換したい場合は「/etc/jma-receipt/db.conf」のDBENCODING="UTF-8"の記述を入れてから、以下のコマンドを実行してください。(既にUTF-8になっている場合やEUC-JPから変換しない場合は必要ありません)
$ sudo -u orca /usr/lib/jma-receipt/bin/jma-dbconvert.sh
$ sudo -u orca psql -l で確認すると以下のように表示されていれば成功です。
List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -------------+----------+----------+-------------+-------------+----------------------- orca | orca | UTF8 | C | C | orca_backup | orca | EUC_JP | C | C | (略)
より詳細については拡張漢字(JISX0213:2004)の使用を参照してください。
処理が正常に終了したのを確認して日医標準レセプトソフトの起動をしてください。
2台運用の設定
2台運用をするためには、今セットアップしたマシン(以後:主サーバー)に加えて、もう一台のマシン(以後:従サーバー)を同様にパッケージのインストールを済ませます。
「従サーバー」側の設定
PostgreSQLの設定を変更し「主サーバー」からアクセス出来るようにします。
1. /etc/postgresql/9.1/main/postgresql.conf のlisten_addresses を有効にします。
$ sudo gedit /etc/postgresql/9.1/main/postgresql.conf
# - Connection Settings - の後にある listen_address の#(コメント)を外し 'localhost'(ローカルホストでの受付)を'*'(全てのアドレスで接続可能)又は「従サーバー」で受け付けるアドレスに変更します。
# - Connection Settings - listen_addresses = '*' # what IP address(es) to listen #↑変更
2. /etc/postgresql/9.1/main/pg_hba.confを編集し主サーバーからの接続を許可します。
$ sudo gedit /etc/postgresql/9.1/main/pg_hba.conf
host all all 192.168.1.3/32 md5 ↑主サーバーのアドレス
より詳細は2台運用>設定手順を参照してください。
編集したら設定を反映させます。
$ sudo service postgresql restart
3. jma-setup --noinstallを実行します。
データベースのエンコーディングをUTF-8にしている場合は初期データベースのセットアップ(UTF-8)と同様にdb.confを編集してから実行します。
$ sudo jma-setup --noinstall
ユーザー、データベースが作成されます。
4. パスワードを設定します。
psql でログインします。
$ sudo -u orca psql orca
ALTER USRでパスワード設定します。'パスワード'の部分に実際のパスワードを決めて入れてください。
orca=> ALTER USER orca WITH PASSWORD 'パスワード'; orca=> \q
"バックスラッシュ q"でログアウトします。
これで主サーバーからorcaユーザーで接続出来るようになります。
「主サーバー」側の設定
1. 従サーバーに設定した内容で接続できるか確認します。-hの後に「アドレスorホスト名」 -Uの後に「ユーザー名」 -Wはパスワードプロンプトを表示させるオプションです(従サーバーへは、ここで指定したユーザー、パスワードでログインするため実行するユーザーは誰でも構いません)。
$ psql -h 従サーバーのアドレス -W -U orca orca Password for user orca: 従サーバーで設定したパスワード psql (9.1.6) SSL connection (cipher: DHE-RSA-AES256-HSA, bits: 256) Type "help" for help. orca=# \q
2. /etc/jma-receipt/dbgroup.incを編集します。
デフォルトから portを変更し user,password のエントリを追加します。
$ sudo gedit /etc/jma-receipt/dbgroup.inc
db_group "log"のエントリーを編集します。
db_group "log" { priority 100; type "PostgreSQL"; port "192.168.1.4"; # sub-jma-receipt となっている部分を従サーバーのアドレスに書き換える name "orca"; user "orca"; # userを追加しユーザー名を設定 password "パスワード"; # password を追加し従サーバーで設定したパスワードを設定 file "/var/lib/jma-receipt/dbredirector/orca.log"; redirect_port "localhost"; }";
より詳細は2台運用>設定手順を参照してください。
3. jma-dbsync.sh で同期を取ります。
$ sudo -u orca /usr/lib/jma-receipt/bin/jma-dbsync.sh
4. dpkg-reconfigure を実行して dbredirectorを起動する設定に変更します。
$ sudo dpkg-reconfigure jma-receipt
jma-receipt 用に dbredirector をスタートしますか? 「<はい>」を選択します。 その他は基本的にデフォルトで進み終了させます。
以上で設定は終了です。
dbpkg-reconfiugre を実行した後は、自動でjma-receiptが起動されます。
日医標準レセプトソフトの起動
ここまでで処理が正常に終了していれば、再度jma-setupを実行しても以下のように表示され処理はすぐに終わります。
$ sudo jma-setup
/usr/lib/jma-receipt/init/orca-db-create.sh ...... /usr/lib/jma-receipt/init/orca-db-init.sh ..... /usr/lib/jma-receipt/init/orca-db-install.sh ..... ONLINE: センタからのDBレコード管理情報のダウンロードが終了しました 更新用ファイルはありません /usr/lib/jma-receipt/init/orca-db-clear.sh ..... /usr/lib/jma-receipt/bin/jma-receipt-db-check.sh ..... Very Good! データベース構造変更処理は終了しました
確認が取れたら以下のようにjma-receiptサービスを起動します。
$ sudo service jma-receipt start
更新履歴
- 2012-12-27 2台運用の設定「従サーバー」側の設定の設定を反映させる方法が reloadになっていたのをrestartに修正