BIGFILEが登場

Oracle10g 以降、これまでの通常表領域は SMALLFILE 表領域として
扱われるようになった。(呼び方が変わっただけ)

では何故そうなったかと言うと、大容量に対応する BIGFILE 表領域 が登場したためである。
大きな違いは、1データファイルあたりの扱える最大サイズが異なるということ。

SMALLFILE 表領域では、データファイルの情報も保持しているため、
データブロックアドレスの22ビットしか利用できなかったが
BIGFILE 表領域は32ビット扱えるため、ブロック数が飛躍的に向上している。



SMALLFILE 表領域

データファイルの最大サイズは、DB ブロックサイズが標準の 8KB の場合、
1つのデータファイルあたり扱える最大サイズは 8192 * 2^22 。
つまりサイズは 32GB -1 が上限となる。
(データファイルが複数定義されていれば、表領域としては 32GB 以上のデータを扱える。)

BIGFILE 表領域

データファイルが扱える最大サイズは 8192 * 2^32 。
サイズは 32TB -1 が上限となる。
これまでの SMALLFILE 表領域が 32GB -1 なので、比較すると 1000 倍にもなる。
ただし BIGFILE 表領域とデータファイルの関係は 1:1 という制約がある。

確認する方法

表領域が SMALLFILE、BIGFILE のどちらかを確認するためには
データディクショナリの dba_tablespaces テーブルを参照する。

SQL> select tablespace_name, status, bigfile from dba_tablespaces;

TABLESPACE_NAME STATUS BIGFILE
--------------- ------ -------
HOGE            ONLINE NO
HOGEBF          ONLINE YES

NO が通常の SMALLFILE、YES が BIGFILE を示している。