desknet's CAMS マニュアル
ユーザーマニュアル運用管理者マニュアル管理者マニュアルインストール方法初期設定ガイド
メニューに戻る
 
desknet's CAMS + PostgreSQL版 不要データ削除処理(VACUUM)の設定

ここでは、desknet's CAMS でPostgreSQLをご利用になる際の、不要領域の削除処理(VACUUM)の設定方法についてご説明します。

1.AUTOVACUUMの設定

 desknet's CAMS + PostgreSQLの運用に際して、データベースに登録されたデータをdesknet's CAMSシステム上から削除することによってできてしまうデータベース上の不要領域を削除し、再利用可能な状態に処理する方法についてご説明します。
  PostgreSQLの通常動作では、削除されたタプルや更新によって不要となったタプルはテーブルから物理的に削除されません。これらのタプルは VACUUMが完了するまで存在し続けます。そのため、特に更新頻度が多いテーブルでは、VACUUMを定期的に実行する必要があります。(VACUUM コマンドを実行しないと、性能が劣化する恐れがあります。)
 そこで、PostgreSQLに同梱されいている「vacuum」コマンドを利用して、不要領域の削除を行います。
autovacuum機能を使うと、VACUUMとANALYZE コマンドの実行を自動化することができます。以下に、AUTOVACUUMの設定方法を記述します。
(desknet's CAMSのインストーラにてPostgreSQLを一緒にインストールされた場合は、autovacummの設定はデフォルトでONの状態に設定されているため、変更の必要はありません。)
 autovacuumの設定は、データベース構成ファイル(postgresql.conf)に設定があります。
 データベース構成ファイルはデータフォルダ(通常は、C:\Program Files\PostgreSQL\8.3\data)にあります。このファイルを、Windows付属の「メモ帳」等のテキストエディタを起動し、編集します。
 
[postgresql.confの内容]
データベース構成ファイルの設定が終了したら、PostgreSQLを再起動してAUTOVACUUMの設定は完了です。

2.不要な添付ファイルデータ(カラムタイプ=OID)のVACUUM

 desknet's CAMSのデータシート等の機能では、お客様によって保存するデータを任意にカスタマイズすることが可能となっており、追加できる項目として「添付ファイル」形式の部品も用意されています。この「添付ファイル」の部品をテーブルから削除した場合や、添付ファイルを管理しているテーブルごと削除した場合などは、不要領域が残ってしまうため、「vacuumlo」コマンドにて不要領域の削除を行います。
 PostgreSQLデータベースから、不要となった添付ファイルのデータを削除するため、以下の手順で処理を実行します。

  コマンドプロンプトからの手動での実行と、atコマンドによる自動実行を行うことができます。
  実行方法については、以下の手順をご参照ください。

手動で実行する場合の手順

 サーバー上で[スタート]−[すべてのプログラム]−[アクセサリ]−[コマンドプロンプト]をクリックし、コマンドプロンプトを起動します。
 PostgreSQLへのコマンドを実行可能とするように、環境変数の設定を行います。
[環境設定]
set PATH= C:\Program Files\PostgreSQL\8.3\bin
@  A   B
 
説明:
@ 環境変数をセットするためのコマンドです。
A 設定対象の環境変数です。
B PostgreSQLのコマンド群がインストールされているフォルダを指定します。
(desknet's CAMSのインストーラにて標準インストールされた場合など、デフォルトは上記のようになります。)
次に、PostgreSQLより不要な添付ファイルデータの削除処理を行います。
 
[vacuumloの実行]
vacuumlo -U postgres camsdb
@     A  B     C
 

説明:
@ 不要なデータを削除するためのコマンドです。
A データベースの管理ユーザーを指定します。
   ※desknet's CAMSと一緒にPostgresSQLをインストールされた場合は、“postgres”と なります。
     手動でインストールされたお客様におかれましては、お使いの環境に応じてPostgreSQLの管理者権限のある
     ユーザーを指定してください。
B 対象となるデータベースです。変更の必要はありません。

 
 vacuumloコマンドを実行する際に、パスワード認証を求められます。
 desknet's CAMSのインストーラーからPostgreSQLをインストールしていただいた場合は、パスワードは”postgres”となります。パスワードを変更された場合、もしくは手動でインストールされたお客様におかれましては、お使いの環境に応じてパスワードを入力してください。
 以上で、不要な添付ファイルデータの削除は終了となります。
 
 この作業は、頻繁に行っていただく必要はありません。ただし、データベースのバックアップを行う場合や、添付ファイル項目の削除もしくはテーブルの削除を行われた際には、実行することをお奨めします。
 

自動で実行する場合の手順

 以下の設定を行うことで、不要な添付ファイルデータ領域の削除処理を自動的に実行することができるようになります。
 
1) 認証用パスワードファイルの作成
 desknet’s CAMSのインストール先のフォルダ(IISの場合、“C:\Inetpub\Scripts\cams”)配下に、“pgpass.conf”というファイルを作成します。 Windows付属の「メモ帳」等のテキストエディタを起動し、“pgpass.conf”を開きます。
  開いたファイルに、以下の一行を追加します。
 
[pgpass.confの内容]
localhost:5432:camsdb:cams:dncamsus
@     A   B   C   D
 
説明:
@PostgreSQLのインストール先のホスト名です。
APostgreSQLへ接続する際に使用するポート番号です。
Bデータベース名です。CAMSデータベースの名前(camsdb)を指定します。
Cユーザー名です。変更していない場合は“cams”です。
DCで指定したユーザーのパスワードです。変更していない場合は“dncamsus”です。
ファイルへの追加が完了したら、ファイルを保存してください。
 
2) バッチ(.bat)ファイルの作成
 Windows付属の「メモ帳」等のテキストエディタを起動し、PostgreSQLのバキューム処理を起動するバッチファイル“cmsvacuum.bat”をdesknet’sCAMSがインストールされているフォルダに作成します。
 Windows付属の「メモ帳」等のテキストエディタを起動し、“cmsvacuum.bat”を開いて、以下の二行を追加します。
 
[cmsvacuum.batの内容]
set PGPASSFILE=C:\Inetpub\Scripts\cams\pgpass.conf
C:\Program Files\PostgreSQL\8.3\bin\vacuumlo.exe” -U cams camsdb
 
1行目の説明:
set PGPASSFILE=C:\Inetpub\Scripts\cams\pgpass.conf

@ A      B
@ 環境変数をセットするためのコマンドです。
A 設定対象の環境変数です。
B 先に説明したパスワードの設定ファイルを指定します。
 
2行目の説明
“C:\Program Files\PostgreSQL\8.3\bin\vacuumlo.exe” -U cams camsdb
C                          D     E
C PostgreSQLのVACUUMを実行する実行ファイルまでのフルパスです。
D ユーザー名です。変更していない場合は“cams”です。
E バキューム対象のデータベースです。CAMSデータベースの名前(camsdb)を指定します。
 
3) atコマンドの登録
 Windowsの機能であるatコマンドを利用して、定期的にバキュームを実行させるようにします。
 サーバー上で[スタート]−[プログラム]−[アクセサリ]−[コマンドプロンプト]をクリックし、コマンドプロンプトを起動します。
 Windows付属の「at」コマンドを実行します。
 
【atコマンドの説明】
at 00:00 /every:M,T,W,Th,F,S,Su C:\Inetpub\Scripts\cams\cmsvacuum.bat
@        A            B
説明:
@ 「B」に指定したコマンドが実行される時間です。
A 「B」に指定したコマンドが実行される曜日です。
B 「@」、「A」で指定された曜日の時間に実行されるコマンドです。
※上記の例では、毎日(月、火、水、木、金、土、日)深夜0時にC:\Inetpub\Scripts\camsにある「cmsvacuum.bat」が実行されます。
 
正常に実行されると「新しいジョブをジョブID=XXで追加しました。」というメッセージが表示されます。これで登録は完了です。サーバー上で指定した曜日の指定した時間に、「cmsvacuum.bat」が実行されるようになります。
 
※コマンドプロンプトよりatコマンドを実行した際に、“サービスが開始されていません。”
というエラーメッセージが表示された場合は、[コントロールパネル]→[管理ツール]→[サービス]より、サービス一覧にて“Task Scheduler”を選択します。もし、“Task Scheduler”の状態欄が“開始”となっていない場合は、[サービスの開始]をクリックしてサービスを開始し、再度atコマンドへの登録を行ってください。
Windows付属の「タスクマネージャ」を起動し、「プロセス」一覧を表示します。
指定した時間になって、一覧に「vacuumlo.exe」が存在していれば正常に起動ができています。
以上で、定期的なバキューム処理のスケジューリングは完了です。

尚、ここでVACUUMの自動実行をatコマンドで登録された場合、desknet's CAMSのアンインストール時に、atコマンドの解除を行っていただく必要があります。詳細については、以下「atコマンドの解除」をご参照ください。

 

atコマンドの解除

 スケジュールされたジョブを削除する場合は、サーバー上で[スタート]−[プログラム]−[アクセサリ]−[コマンドプロンプト]よりコマンドプロンプトを起動し、スケジュールの登録時に実行した「at」コマンドに削除オプションをつけて実行します。
 
【atコマンドの説明】
at XX /delete
   @  A
説明:
@ スケジュールの登録に成功し、「ジョブID=XXで追加しました。」と表示された際の「XX」の値を指定します。省略した場合は、すべてのスケジュールが削除されます。
A 削除する際のオプションです。
※「at」コマンドをオプション指定なしで実行すると、スケジュールが一覧表示されます。
 
状態 ID 日付 時刻 コマンド ライン
---------------------------------------------------------------------------------------------------------------
   10 毎 月曜日 火曜日... 00:00 C:\Inetpub\Scripts\cams\cmsvacuum.bat
---------------------------------------------------------------------------------------------------------------
※上記の場合、「10」がatコマンドのIDになります。
 
一覧表示されたスケジュールから、コマンドラインにて「cmsvacuum.bat」が表示されている行のID列の値が削除対象のIDとなり、「at」コマンドにて削除を実行する際の@に指定する値となります。上記の場合、「10」が削除対象のIDです。
 
ページの先頭へ戻る

 
Copyright (C) NEOJAPAN Inc. All Rights Reserved.