今回のentryでは、「SECTION I Oracleアーキテクチャ概要」の
「CHAPTER 03 データファイルと関連する構成要素」について補足説明します。
この章では、データを格納するファイルである「データファイル」
と1つ以上のデータファイルをグループ化した記憶領域である「表領域」、データファイルへのI/Oのバッファ/キャッシュとして機能する「データベースバッファキャッシュ」について説明しています。
書籍では、いわゆる通常の表領域である「SMALLFILEタイプの表領域」についてのみ説明
しています。ターゲットの観点から書籍では説明していませんでしたが、
Oracle 10gからは新しい表領域のタイプである「BIGFILEタイプの表領域」が導入されています。
### BIGFILEタイプの表領域
SMALLFILEタイプの表領域、すなわち従来の表領域が存在した目的の1つに、
複数のデータファイルを束ねた仮想的な記憶域として表領域という概念を用意することで、
Oracleから意識する対象を表領域のみとすること、すなわち、
具体的なファイルの構造や、ファイルが配置されてている
ドライブ/パーティション/ファイルシステムを隠蔽して、いわば物理的なストレージを
仮想化することがあったと考えられます。
具体的には、すでにデータファイルを配置しているC:ドライブの空き容量が不足しているときに、D:ドライブに追加のデータファイルを配置することにより、実際のドライブ空き容量に依存せず、表領域のサイズを拡張できるようなメリットを得られるようにしていると
いえるでしょうか。
しかし、ストレージ技術の進展により、このようなストレージの仮想化はアプリケーション
レベルではなく、それよりも下のレイヤであるストレージやOSのレイヤで実現するケースが増えています。
ストレージのレイヤでは、RAID装置を用いて複数の物理的なディスクを束ねて、1つのボリュームとすることができます。OSのレベルでは、Windowsのダイナミックディスク、UNIX/Linuxでは論理ボリュームマネージャとよばれるソフトウェアにより、複数のパーティションを
1つのボリュームにまとめることができます。
このような背景もあり、表領域のサイズが極めて大きい環境では、Oracleレベルで
ストレージを仮想化するのではなく、Oracleよりも下位のレイヤでストレージを仮想化
することが適切な場面が増えてきました。このような状況に適用できる仕組みがBIGFILEタイプの表領域です。
BIGFILEタイプの表領域では、1つの表領域は、1つのデータファイルのみから構成され、
1つのデータファイルの最大サイズは約32TBです。すなわち、表領域の最大サイズは約32TBとなります。
一方、SMALLFILEタイプの表領域では、1つの表領域に最大1022のデータファイルで構成
することができ、1つのデータファイルの最大サイズは約32GBです。すなわち、
表領域の最大サイズは約32TBとなります。
単に表領域全体のサイズから見れば、SMALLFILEタイプとBIGFILEタイプの表領域に
大きな差は無いですが、ファイル管理という面では大きな差があります。
SMALLFILEタイプの表領域で大きなサイズを確保すると、
データファイル数が増えるため管理が非常に煩雑になります。
一方、BIGFILEは1つのデータファイルのみで構成されますから、管理は容易です。
### BIGFILEタイプの表領域の作成方法
BIGFILEタイプの表領域は、BIGFILE句を付加したCREATE TABLESPACE文で作成できます。
CREATE BIGFILE TABLESPACE big_ts
DATAFILE ‘/path/to/dbf’ size
表領域のタイプはDBA_TABLESPACESのBIGFILE列で確認できます。
### BIGFILEタイプの表領域の注意点
BIGFILEタイプの表領域は、OS/ストレージレベルで複数をディスクを束ねる仮想化の
仕組みが存在していることを前提としています。
BIGFILEタイプの表領域が必要なような超大容量データベースでは、パラレル処理を
使う機会も多いため、OS/ストレージレベルでパラレル処理を効率的に実行できる必要が
あります。具体的には、ストレージをストライプ化し、多重化されたストレージI/O要求を
効率的に処理できるようにするなどです。
BIGFILE表領域という技術を、管理すべきデータファイル数を削減するという点で見る
のではなく、従来の表領域で担っていた部分である、ストレージの分散などの機能を
OS/ストレージ側に任せるようになったという点で見ることが重要です。
はじめまして!
BIGFILEに関する情報があまりないのでとても参考になりました。
ありがとうございます!お役にたててうれしいです!