web-dev-qa-db-ja.com

ロックされたDB2サーバー表スペース

職場では、私たちのプロセスの1つがクライアントの1つに対してテーブルの書き込み/アクセスを試行すると、次のDataExceptionがランダムに見えるように見えます。

com.ibm.db.DataException: A database manager error occurred. : 
[IBM][CLI Driver][DB2/NT64] SQL0290N  Table space access is not allowed.  SQLSTATE=55039

誰かがこれに遭遇しましたか?私は主にデータベースの管理タスクを行う人ではありませんが、この問題の根本を見つけるのに苦労しているようです。助言がありますか?誰もが以前にこれに遭遇しましたか?このエラーは一度に1つのクライアントでのみ発生し、通常は回転しているようです。 Rackspaceサービスはありますが、スクリーンショットなどを提供できる場合を除いて、サービスが提供されることはありません。

この投稿が曖昧すぎる可能性がある場合は、お詫び申し上げます。詳しく説明するために、どのような情報を提供すればよいか教えてください。私はオフィスの開発者の1人ですが、主にデータベースの管理タスクを処理していません。

編集:私たちはIBMと話しましたが、これはおそらく、メンテナンスの一環としてIBM/Rackspaceによって実行されているある種のウイルススキャンが原因である可能性がありますか?彼らはこの種のことを疑わしく言ったので、テーブルがさまざまな時間ロックされたままだったので、私はこれが犯人であることを疑っています。

2
SMT

まず、それがどのテーブルスペースであるかを知りたいと思います。多くの場合、データベースに接続してLIST TABLESPACES SHOW DETAIL何が起こっているのかを把握します。各テーブルスペースを見て、それぞれの「状態」フィールドに設定されている値を確認します。テーブルスペースの「ゼロ」値を適切にする必要があります。

そして、ここに便利なクエリがあります:

select substr(tbsp_name,1,30) as tbsp_name, substr(TBSP_STATE,1,18) as TBSP_STATE 
from TABLE(MON_GET_TABLESPACE('',-2)) with ur

これにより、人間が読める状態のすべてのテーブルスペースが取得されます。見つかりました これはEmber Crooks 'blog ですが、私がフォローしています。非常に便利です。

とにかく、最初に、それがどの空間であるかを知りたいのです。それがわかったら、それを処理するか、さらに掘り下げることができます。例えば、表スペースが静止している場合は、それを静止解除するか、静止をリセットするだけで済みます。私はまだ理由を尋ねます...おそらく、ETLジョブまたはテーブルスペースを静止し、失敗した場合に適切に解放しない何かがあるでしょうか?または、ダイアログをのぞいて、当時何が起こっていたかを確認します(ここで非常に重要です)。

それらを試してみて、何が起こっているのか教えてください。

1
Chris Aldrich