トップ «前の日記(2008-04-01) 最新 次の日記(2008-04-09)» 編集

ORCA愉快日記

2004|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|10|11|12|
2012|01|02|09|
2013|04|

2008-04-03 データベーススキーマチェックについてのメモ

_ [orca] データベーススキーマチェックについてのメモ

今回のjma-receipt 4.2.0へのアップデートなどで、データベーススキーマチェックについて話題になることが多かったので、調査した際のメモ。どちらにしても、データベースのバックアップは必ず定期的に取っておきましょう(特にアップデート作業前後)。壊れたものは元には戻せませんので。

□□□ ORCAのデータベーススキーマについてのメモ
  
□ データベーススキーマとは何か?
=>一言で言ってしまえば、データベース(DB)の構造のこと。
詳細は、Wikipedia - スキーマ (データベース)を参照。
  
  
□ ORCAアップデートの際にデータベーススキーマはどうなってる?
=>ORCA(日レセ)では、バージョンアップの際にデータベーススキーマ構造が変更になる
ケースが多い。
  
このため、DBのバックアップ(ダンプ)ファイルのバージョンと
日レセシステムのバージョンが異なる場合は、基本的に"そのまま"利用することはできない。
 
そういった場合には、DBのリストアを行った後でデータベーススキーマ構造を
更新し、日レセシステムのバージョンに合わせる必要がある。
  
スキーマ更新を行う場合は、更新の際に利用するスキーマ定義ファイルを取得するために
インターネットに接続した状態で、データベース構造変更処理スクリプトを
------------------------------------------------------
# sh /usr/lib/jma-receipt/bin/jma-receipt-db-setup.sh
------------------------------------------------------
のように実行して「y」を選択するか、または、jma-receiptパッケージの再設定を
------------------------------------------------------
# dpkg-reconfigure jma-receipt
------------------------------------------------------
のように実行し、「データベース構造変更処理を自動で実行しますか?」の質問で
「はい」を選択し、データベーススキーマ構造を、現在インストールされている
日レセにあったバージョンに変更する必要がある。
  
なお、後者の方は前者のスクリプトを含んで実行しているだけなので
実行される内容は同じ。
  
  
□ データベーススキーマチェックについて
データベーススキーマチェックは、上記のデータベーススキーマ構造に
異常がないかチェックするためのスクリプト。
テーブル/ビュー/インデックスのカラムや、サイズなどの属性について
チェックするが、チェックできるのはあくまで一部のスキーマ構造のみ
であり、データなどは含まれない。
  
例えば、構造変更処理が行われないために氏名のカラムがないとか
サイズが20バイトのままになっているようなケースはエラーとして
検出できても、氏名のデータが破損して「あああああ」になってしまった
ような場合は検出できない。
  
スキーマチェックのためのスクリプトは、下記サイトで提供されている。
http://www.orca.med.or.jp/receipt/tec/schema-check-tool.rhtml
  
チェックする際は
古いバージョンのスクリプトは削除し、必ず最新版を取得して実行すること。
最新のjma-receiptをチェックするには、最新のデータを含んだスクリプトが必要なため。
  
  
□ スキーマチェックスクリプトの詳細
ファイルを展開してみると分かるが、シェルスクリプトとデータベース
スキーマ定義ファイルで構成されている。シェルスクリプトは、DBの
内容に合わせたスキーマ定義ファイルを読み込み、チェックする。
------------------------  
$ ls -1
jma-receipt-dbscmchk.sh
orcadbschema.ver330
orcadbschema.ver340
orcadbschema.ver400
orcadbschema.ver410
orcadbschema.ver420
------------------------  
  
下記は、2008/4/3時点でのスキーマチェックスクリプトについて述べたもの
* jma-receiptのインストールチェック
  /etc/jma-receipt/jma-receipt.envがなければ、jma-receiptがインストールされて
  いないものとして、何もメッセージを出さずに終了する。
  
* orcaユーザ権限で実行しているかチェック
  必ずorcaユーザ権限で実行すること。
  正しい権限で実行しないと「orcaユーザーで実行してください。」と表示される。
  
* データベース管理バージョンの取得
  どのORCAバージョン向けのデータベース内容なのかチェックする。
  2008/4/3時点で、jma-receiptバージョン3.3〜4.2に対応したデータを取得し
  以下のようなメッセージを出す。
  
  正しく取得できた場合は、「現在のスキーマバージョンはX.X.Xです。」
  取得できなかった場合は、「データベーススキーマのバージョンが正しくありません。」
  
  
  なお、バージョンが正しくない旨のメッセージが出た場合、
  まずは、最新版のスキーマチェックスクリプトをダウンロードして実行して
  いるのか確認のこと。
  
  また、PostgreSQLがちゃんと起動しているかどうか、orcaデータベースが
  あるかどうかといった、基本的な項目についても確認してみるとよい。
  
  下記のようなエラーが出る場合は、orcaデータベースが存在していない。
  ORCAの再インストールを行う。
  ---------------------------------------------------------------------------------
  psql: FATAL:  database "orca" does not exist
  ---------------------------------------------------------------------------------
  
  下記のようなエラーが出る場合は、PostgreSQLデータベースサーバそのものが動作していないか
  pg_hba.confによるアクセス許可が適切に設定されていない。
  下記の場合のエラーメッセージの内容は、"ローカルでサーバーが動いていて
  Unixドメインソケットでの接続を許可している?"という内容なので、確認すること。
  ---------------------------------------------------------------------------------
  psql: could not connect to server: そのようなファイルやディレクトリはありません
        Is the server running locally and accepting
        connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
  ---------------------------------------------------------------------------------
  
  上記の問題がない場合、orcaユーザ権限で下記のコマンドのように
  データベース構造バージョンが取得できるか試してみる。
  ---------------------------------------------------------------------------------
  $ psql orca -c "select version from tbl_dbkanri where kanricd = 'ORCADB00' ;"
     version
    ----------
     040200-1
    (1 row)  
  ---------------------------------------------------------------------------------
  
* スキーマのチェック
  スキーマ構造のチェックを行い、スキーマ定義ファイルの内容と異なる
  カラム等が発見された場合に、以下のメッセージを出す。
  「(スキーマ名) が不整合です。」
  「(スキーマ名) が存在しません。」
  
* hospidのチェック
  jma-receipt 3.3または3.4の場合、hospidが重複していないかチェック
  を行う。これらのバージョンでは、hospidは1つのみであるため、hospidが複数発見された
  場合は、以下のエラーメッセージを出す。
  「(テーブル名) のhospidが一意ではありません。」
  
* データベースの整合性チェックの結果表示
  上記のスキーマチェックかつhospidのチェックの両方が、正常だったか
  どうかについて以下のメッセージを出す。
  正常だった場合は、「データベースの整合性チェックは正常に終了しました。」
  エラーがあった場合は、「データベースの整合性に誤りがあります。
  詳細はjma-receipt-dbscmchk.logを参照ください。」
  
* チェックマスタのチェック
  チェックマスタのバージョンが、"R-020800-2-20070420-2"より
  古いかどうかチェックし(2008/4/3時点)、以下のメッセージを出す。
  チェックマスタが新しい場合は、「チェックマスタは問題ありませんでした。」
  チェックマスタが古い場合は、「チェックマスタの更新状態が古いものがあります。」
  
  
□ データベースに記録されている管理情報
日レセでは、データベース管理情報(スキーマバージョン)やマスタ管理情報は
orcaデータベース内に格納されている。データベース構造変更処理や
マスタ更新などを行うたびに、データベース内の管理情報も更新されている。
マスタの不整合を起こす可能性があるので、このテーブルは手で不用意に触ってはいけない。
  
管理情報は、主に以下のテーブルに保存されており、glclientの「92 マスタ更新」にて
表示されている内容と同じである。
------------------------------
tbl_dbkanri :データベース管理情報
tbl_mstkanri :マスタ管理テーブル
------------------------------
  
* tbl_dbkanri :データベース管理情報
select * from tbl_dbkanri;
 kanricd  | version  |      dbsversion1      |      dbsversion2      | termid | opid |  creymd  |  upymd   | uphms
----------+----------+-----------------------+-----------------------+--------+------+----------+----------+--------
 ORCADB00 | 040200-1 | S-040200-1-20080318-2 | S-040200-1-20080318-2 |        |      | 20050710 | 20080318 | 000000
(1 row)
  
versionが「040200-1」となっており、バージョン4.2.0向けのデータベース構造に
なっているのが分かる。
  
* tbl_mstkanri :マスタ管理テーブル
select * from tbl_mstkanri ;
 hospnum | kanricd  |      dbrversion1      |      dbrversion2      | termid | opid |  creymd  |  upymd   | uphms
---------+----------+-----------------------+-----------------------+--------+------+----------+----------+--------
       1 | ORCADB07 | R-020200-3-20060217-3 | R-020200-3-20060217-3 |        |      |          |          |
       1 | ORCADB08 | R-020200-3-20060217-4 | R-020200-3-20060217-4 |        |      |          |          |
       1 | ORCADB09 | R-020200-3-20041025-1 | R-020200-3-20041025-1 |        |      |          |          |
         :
(17 rows)
  
テーブル構造に関する詳細は、開発者向け情報の「日医標準レセプトソフトデーターベース仕様書」を参照のこと。

_ [PC] Visual Basic 6開発環境の延長サポートフェーズ 2008/4/8で終了

未だに根強く現場で使われているVB6ですが、延長サポートフェーズは予定どおり2008/4/8で終了。ただし、開発環境のサポートが停止するのであって、VB6アプリがVistaなどのOS環境で動かなくなる、ということではないようです。

Microsoft - Visual Basic 6.0 ファミリ製品のライフ サイクル ガイドライン
http://www.microsoft.com/japan/msdn/vbasic/support/vb6.aspx
Microsoft - Windows Vista と Windows Server 2008 における Visual Basic 6.0 のサポートについて
http://www.microsoft.com/japan/msdn/vbasic/support/vistasupport.aspx
@IT - VB6アプリをVistaで動かすための基礎知識 (前編)
http://www.atmarkit.co.jp/fdotnet/vblab/vb6onvista_01/vb6onvista_01_01.html
@IT - VB6アプリをVistaで動かすための基礎知識 (後編)
http://www.atmarkit.co.jp/fdotnet/vblab/vb6onvista_02/vb6onvista_02_01.html

トップ «前の日記(2008-04-01) 最新 次の日記(2008-04-09)» 編集