ホーム   フォーラム   FAQ
 
メインメニュー
ログイン
ユーザー名:

パスワード:


パスワード紛失

特定の端末でテーブルのロック待ちが発生する

  • このフォーラムに新しいトピックを立てることはできません
  • このフォーラムではゲスト投稿が禁止されています
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 .3 .4 | 投稿日時 2011-1-12 11:04 | 最終変更
kiwi  新米   投稿数: 10
いつも参考にさせていただいております。


サーバー 
OS:Windows2008 Server
DB:Pervasive PSQL v10 SP3 Server for Windows 32-bit

クライアント
OS:Windwos Xp Pro
Magic:V9 Plus Sp6b
DB:Pervasive.SQL Workgroup v8.70; Ver 8.70

この環境で、ある特定端末でだけテーブルのロック待ちが発生してしまいます。
ロック待ちとなるテーブルは、ある特定の機能を使用する際のワークテーブルとして実ファイルで作成しているテーブルです。
そのテーブルの物理ファイル名は、拡張子を端末番号にしています。

LAN環境で29台、メタフレーム環境で21台で接続中、
LAN接続のPC環境は、全て上記と同じですが、特定の1台の端末のみ1ヶ月に1度程度の頻度で発生しています。
他の端末でこれが起きたことはありません。

原因がわからず困っております。
原因に心当たりのある方や調査方法などご存知の方がいらっしゃいましたら、ご教授いただけると大変助かります。

どうぞよろしくお願い致します。

追記----------------------------------------------------

問題のプログラムを起動した時の通常の動きは、

 プログラムを起動→ワーク用テーブルを削除→
  ワーク用テーブルを作成→画面表示…

となるのですが、今回、

 プログラムを起動→ワークテーブルを削除→×

ここでロック待ちが出ているのだと思われます。
その特定の端末だけ、ワーク用テーブルが作成できないようです。


また、他の端末で、問題の端末番号にしてロック待ちとなったプログラムを起動したところ、やはり「テーブルロック待ち」が出たのですが、数秒立ったところでロック待ちのメッセージが消え、正常に動作するようになりました…
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2011-1-12 11:15
Tanda  長老   投稿数: 2151
kiwi さん、こんにちは。

テーブルのロック待ちは、往々にしてパスが存在しなくてロックファイル
が生成できないという時にも発生します。

一時ファイルを作成しようとして、パスが誤っていたりするとよく
この現象が見受けられる場合があります。

違っているかもしれませんが、参考にしてください。

タンダコンピュータ/丹田 昌信
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2011-1-12 11:41 | 最終変更
kiwi  新米   投稿数: 10
丹田様

早速のご回答ありがとうございます。

なるほどそうなのですね。
ですが今回は、パスは他の端末も含め全て同じ場所に作成されるようにプログラムで指定してあり、他の端末で現象が起こっていないので考えにくいかもです。


始めの投稿で、この現象が起こる時の状況の詳細をきちんとご説明できてなかったことに気づきましたので、追記します。(すみません。)

問題のプログラムを起動した時の通常の動きは、

 プログラムを起動→ワーク用テーブルを削除→
  ワーク用テーブルを作成→画面表示…

となるのですが、今回、

 プログラムを起動→ワークテーブルを削除→×

ここでロック待ちが出ているのだと思われます。
その特定の端末だけ、ワーク用テーブルが作成できないのです。

また、他の端末で、問題の端末番号にしてロック待ちとなったプログラムを起動したところ、やはり「テーブルロック待ち」が出たのですが、数秒立ったところでロック待ちのメッセージが消え、正常に動作するようになりました…
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2011-1-12 11:57
Tanda  長老   投稿数: 2151
kiwi さん、こんにちは。

何らかの原因でワークテーブルの削除に失敗して、同名のファイル名が
作成できないのでエラーが出ているような雰囲気ですね。

ワークテーブルを削除にいったときに、まだテーブルをオープンした
ままになっているということは考えられませんか?

あるいは、端末番号を拡張子にお使いとのことですが、何らからの
原因で拡張子が出来ていなくて、ファイル名にずれが生じているとか。

タンダコンピュータ/丹田 昌信
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2011-1-12 14:47
kiwi  新米   投稿数: 10
丹田様

それが、ロック待ちの時もそうでない時も、指定フォルダにその端末番号のファイルは存在していないのです。

ファイルがオープンしたままになっているかの確認は、PervasiveのMoniterで確認できると思いますが(現象発生時は確認していませんでした。)、上記のようにフォルダに存在していない場合もオープンしたままになっているということも、あり得ますでしょうか。

また、端末番号の取得に関しては、システム起動時のアイコンに設定しており、起動後に画面からも確認できる為、考えにくいかな…とも思います。
それともその特定のNoがマズイのか、”084”という数字なのですが…現在は念のため端末番号を変えて様子を見ている状態なのですが、まだ1週間も経っていないので何とも言えない状況です。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2011-1-12 15:58
kubota  新米   投稿数: 15
見当違いかもしれませんが・・。

OSのVista以降、SMB2というファイル共有プロトコルのバージョンが1.0→2.0へアップしている事が原因で、物理ファイルが(本当に)削除される前にDBDEL関数が処理され、「成功」となる現象を聞いた事があります。

対応策ですが、
1.削除する方法をDBDELではなく、削除タスクに変更する
2.DBDELを行った後、少しディレイを入れる。
3.SMB2プロトコルのバージョンを1.0へダウングレードする。

といった方法くらいで根本的な解決はなかったと思います。
投票数:1 平均点:10.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2011-1-12 16:29
Tanda  長老   投稿数: 2151
kiwi さん、こんにちは。

たしか、ロックファイルは拡張子だけを変えたファイルを一時ファイル
として使用していたような記憶があるのですが、そうだったとすると
端末番号の拡張子だけが異なるファイル名をワークテーブルとして
設定していたりすると、同名ロックファイルの衝突が起こったような
記憶があります。

タンダコンピュータ/丹田 昌信
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2011-1-12 16:53
kiwi  新米   投稿数: 10
丹田様

ロックする時に作られるロックファイル自体のファイル名の拡張子が、この”084”と衝突している可能性があるということでしょうか?
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2011-1-12 16:59
kiwi  新米   投稿数: 10
kubota様

ご回答ありがとうございます。
SMB2プロトコルのバージョンは、既に1.0へダウングレードしておりますので、ファイルの削除に関しては大丈夫かと思っております。

しかし削除する以前に、ファイルが作成されるべき場所に、この端末の拡張子のファイルが存在していないので、やはり作成する時にロック待ちになるのだと思います。
でもそもそもファイルが存在していないのに、ロック待ちになるというのがわからずに困っております。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2011-1-12 17:01
Tanda  長老   投稿数: 2151
kiwi さん、こんにちは。

古い話しで記憶が定かでないのですが、ロックファイルそのものの
ファイル名としてではなく、ロックに関連した動作で拡張子だけを
変えたものを一時ファイル名として何かを操っていたような覚えが
あります。

ですので、拡張子以外の文字列が重複しないように注意してテーブル名
を決めるという習慣が、私は個人的に身に付いてしまっています。

違っていたらすみません。

タンダコンピュータ/丹田 昌信
投票数:1 平均点:10.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2011-1-12 17:24
Tanda  長老   投稿数: 2151
kiwi さん、こんにちは。

> でもそもそもファイルが存在していないのに、ロック待ちになる
> というのがわからずに困っております。

これは単に日本語訳だけの問題だと思います。「ファイルが(見つから
ないので)ロックできません」というように解釈すれば理解できる
かと思います。

タンダコンピュータ/丹田 昌信
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2011-1-12 19:10
kiwi  新米   投稿数: 10
丹田様

そういう注意事項があるのですね。
ありがとうございます。とても参考になります。

ただ、他の端末は同時に同じ処理ができているので、同一ファイル名のファイルの作成、ロックはできているようです。
違う点と言えば端末番号くらいで…
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2011-1-12 19:24
Tanda  長老   投稿数: 2151
kiwi さん、こんばんは。

V9 では、デフォルトで「Magic ロックを使用しない」という設定に
なっているので、DB まかせのロックであれば、あまり拡張子の問題は
関係ないかもしれません(それとも、ひょっとして、その端末だけ
Magic ロック使用 ON の設定になっていたりして?)。

いずれにしても、どうしてファイルが生成されないのかを他の理由も
含めて探る必要がありそうですね。

タンダコンピュータ/丹田 昌信
投票数:1 平均点:10.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2011-1-13 11:17
pu_mahalo  長老 居住地: 大阪  投稿数: 775
こんにちは  Puです

丹田さんも書かれているように
一時ファイルをPervasiveで生成する場合
拡張子を変更するのではなく
ファイル名の後に端末番号を付ける(hogehoge&str(term(),'3P0')とか
にしないと うまくいかない場合があった記憶が...
確か ロックファイル生成のファイル名を計算するのに
拡張子全てを見ていなかったような記憶が...

でわ〜でわ〜
投票数:1 平均点:10.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2011-1-13 16:24
kiwi  新米   投稿数: 10
もしかしたら、単に端末のLAN接続が不安定なのかもしれないという気もしてきました…

色々参考になり助かります。
ありがとうございます。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2011-1-13 16:34
kiwi  新米   投稿数: 10
Puさん

そうなんですね。

今後の作りの参考にさせていただきます。
ありがとうございます。
投票数:0 平均点:0.00

  条件検索へ


Copyright (C) Magic Software Japan K.K. All Rights Reserved.
個人情報保護方針 会員規約