dbcc
〜データベースの一貫性の検査〜
0.更新履歴
- 2001.06.12 新規作成
1.はじめに
このドキュメントでは,Sybaseでデータベースの通常保守に必要な「一貫性の検査」について説明する.
2.一貫性の検査とは
一貫性の検査とは,データベースの論理・物理構造の一貫性,つまり整合性が取れているかをチェックする事で,dbccコマンドでチェックすることができる.
このdbccによる一貫性の検査は,つぎのタイミングで使用する.
- 通常の保守として使用し,Adaptive Serverの使用にエラーが出る前にエラーを検出し修正する.
- システムエラーが発生した後に障害のレベルを調べる.
- データベースバックアップの内容をより厳密なものにするためにバックアップ前に実行する.
- データベースが壊れている可能性のある場合.(破壊されたというエラーが出た場合)
チェックする対象によって,次のような使い分けを行う.
チェック内容 | 使うコマンド |
---|---|
ページレベルとローレベルのページリンクとデータポインタのチェック | checkstorage,checktable,checkkdb |
ページ割付チェック | checkstorage,checkalloc,tablealloc,indexalloc |
3.ページとオブジェクト割り当てについて
dbccで一貫性チェックを行うのは,簡単に言えばページの割り当て情報であるが,次のような関係となっている.
- ページについて
- disk initコマンドでデバイスを作成するとき,「アロケーションユニット」という単位に分割する.
- 1つのアロケーションユニットは,2KB×256個ページで構成される.
- 1ページは2KBである.
- アロケーションユニットの先頭ページは,「アロケーションページ」とし,アロケーションユニット全体の管理情報(利用状況)が格納される.
- オブジェクトの割り当て
- テーブルでINSERTを行うなどで,空き領域が必要なときにAdaptive Serverはオブジェクト(たとえば表)に対してエクステントを割り当てる.
- 1つのエクステントは,2KB × 8個のページを割り当てる.
- テーブルの消去を行うと,エクステント割り当てを解除する.
- 行データの消去を行うと,ページ割り当てを解除する.
- オブジェクトアロケーションマップ(OAM)
- OAMは,テーブルと,テーブルのインデックス毎が割り付けられたページに保管される.
- OAMページは,オブジェクト(テーブルとか)が使用しているアロケーションユニット毎にアロケーションテーブルを示し,エクステントやページの状況をチェックする.
- ページリンク
- 各ページには,その前後にあたるページに対する番号が書かれているヘッダを持っている.
- 新しいページが割り当てられると,前後にあるページは新規ページへのポインタを設定しなおす.
エクステントに領域を割り当てたり解除が何度も行われると,整合性が合わなくなることもあるのでチェックを行う.
4.dbccで実行できるチェック
チェック | check storage |
check table |
check db |
check alloc |
index alloc |
table alloc |
check catalog |
テキスト値カラムの割付 | ○ | ||||||
インデックスの一貫性 | ○ | ○ | |||||
インデックスソート順のチェック | ○ | ○ | |||||
OAMページのチェック | ○ | ○ | ○ | ○ | ○ | ||
ページ割付のチェック | ○ | ○ | ○ | ○ | |||
ページ一貫性のチェック | ○ | ○ | ○ | ||||
ポインタの一貫性チェック | ○ | ○ | ○ | ||||
システムテーブルのチェック | ○ | ||||||
テキストカラムチェーンのチェック | ○ | ○ | ○ | ○ | |||
テキスト値カラムのチェック | ○ | ○ | ○ |
- dbcc checkstorageは,dbccdbデータベースにチェック結果を格納する.
- checktableを実行できるのはテーブ所有者
- checkstorage,checkdb,checkcatalog.,checkalloc,indexalloc,tableallocを使用できるのはデータベース所有者
- dbrepairはシステム管理者が実行できる.