4.4 データベースの構成要素
4.4.3 データファイルと表領域の関係
Oracleのデータベースファイルのうち、データファイルと、データファイルを複数まとめて管理する表領域について説明します。
データファイル
データファイルとは、データベースで実際の表や索引といったオブジェクトを格納するファイルのことを指します。
論理的な構造である表領域には、最低1つの物理ファイルとしてのデータファイルが対応します。
バックアップ取得時/リストア時の最小単位になるので、大きすぎないサイズで設計しておくようにすると、バックアップ取得時問および障害回復時間を短縮することができます。
表領域
表領域とは論理的な管理単位のことです。
作成時に物理的なデータファイルを1つ以上指定する必要があります。表領域単位でブロックサイズを指定することができます。
ブロックサイズとは、Oracleで管理する論理的な単位のことです。
OSのブロックサイズの倍数である必要があり、OracleでカウントするIOの最小単位です。
Oracle9iからは、表領域のデフォルトの管理方法はローカル管理です。
ローカル管理の場合、表領域単位でエクステントサイズを指定します。
エクステントとは、連続した複数ブロックの領域のことを指します。表や索引などのセグメントを作成する際、連続領域を確保することによって、効率よくデータの挿入や参照時のメモリへの読み込みを実行できます。
ローカル管理の表領域とは、Oracle8iから追加された機能です。
それ以前は、表領域内の空き領域と使用済みの領域(何らかのセグメントによって定義済)の定義は、SYSTEM表領域のデータディクショナリですべて管理されていました。
ローカル管理の表領域では、領域管理はすべてデータファイル内のビットマップで行います。
このため、ローカル管理の表領域による領域管理は、領域情報の変更のたびにSYSTEM表領域のデータディクショナリにアクセスを行う必要がなくなり、パフォーマンスが向上します。
DATAFILE 'ファイル名1' SIZE 500M,
'ファイル名2 ' SIZE 500M
EXTENT MANAGEMENT LOCAL ←ローカル管理の表領域の指定
UNIFORM SIZE 500K ←ローカル管理の表領域の指定
BLOCKSIZE 8K; ←ローカル管理の表領域の指定
パラメータ | 説明 |
---|---|
UNIFORM SIZE | 管理者が指定したサイズで、スキーマオブジ工クトの連続領域エクステン卜を獲得する すべてのエクステントが指定されたサイズで取得される |
AUTOALLOCATE | エクステントサイズはシステムによって自動的に管理される エクステントサイズは、スキーマオブジェクトの拡張に従って、64KB、1MB、8MB、64MBと拡張する |
表4-3 ローカル管理の表領域のエクステントサイズ
表領域の設計
管理の容易性を考慮して表領域を分割する場合は、以下の点に注意してください。
- 表や索引は、作成時にどの表領域に作成するかを指定する
- 表領域を作成する際、まずアプリケーション単位に表領域を分ける
理由は、障害時の局所化のため
ディスク障害が起きた場合、障害の起きたボリュームを含む表領域は、障害回復のためにオフラインにする
当該ボリュームを使用していた表領域のアプリケーションは、回復作業のため使用できなくなるが、それ以外のアプリケーションは処理を続行できる - 更新頻度によって分ける。更新頻度が0のものは読み取り専用表領域にし、更新頻度の低いものと高いものを分けて、バックアップを取得する頻度を変える
- オンラインバックアップを取得する際、表領域が業務ごとに分かれていれば、それぞれの業務のピーク時を避けて、表領域のバックアップ取得のタイミングをずらしてスケジュールを立てることができる
表領域の特性と表の特性に応じて表領域を分書ける場合は、以下の点に注意してください。
- 表領域単位でブロックサイズが同じアプリケーションでも、エクステントサイズやブロックサイズを考慮して、大きい表と小さい表で表領域を分けるようにする
競合を意識して分割する場合は、以下の点に注意してください。
- 索引を使用するアプリケーションは、表と索引はほぼ同時にアクセスするため、表領域を分ける
また、表領域を分けただけでは意味がなく、物理ボリュームも分けるようにすること - 同時にアクセスする可能性の高いオブジ工クトは、異なる表領域に格納し、ボリュームも分ける
パーティション化した表の各パーティションなど
バックアップ取得の最小単位がデータファイルです。
障害の局所化、バックアップ取得の時間などを考慮して、データファイルのサイズはあまり大きくしないようにしてください。
解説トレーナー