Oracle Databaseの物理設計において、表領域の管理方式の選択は将来の拡張性に直結します。Oracle Smallfile Bigfile 違いを正しく理解することは、効率的なストレージ運用への第一歩です。本記事では、Oracle ビッグファイル表領域の技術仕様と、従来から使われているスモールファイル表領域のメリットを比較し、実務における最適な使い分けを徹底解説します。
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
結論・最短手順
どちらを選ぶべきかは、扱うデータの規模とストレージ管理ポリシー(ASMの有無など)に依存します。
- Bigfile 表領域: 1つの巨大なファイルで管理。超大規模DB(VLDB)や、ファイル管理を簡素化したい場合に最適。
- Smallfile 表領域: 複数のファイルで管理。ファイルを異なるディスクへ物理的に分散させたい場合や、標準的な規模のDBに最適。
背景と基礎:2つの管理方式
Oracle Database 10g以降、データファイルの持ち方によって2種類の表領域タイプが提供されています。
- Smallfile(スモールファイル)表領域: Oracleの伝統的な形式です。1つの表領域に最大1,022個のデータファイルを含めることができます。
- Bigfile(ビッグファイル)表領域: 1つの表領域に対してただ1つのデータファイルのみを持ちます。その代わり、1ファイルでTB単位の巨大なサイズをサポートします。
初心者向け一口メモ 従来のSmallfileは「バケツの中に小さな石(ファイル)をたくさん詰める」イメージ、Bigfileは「バケツ自体が1つの巨大な岩(ファイル)になっている」イメージです。
SmallfileとBigfileの違いとは?管理方式の徹底比較
表領域のタイプによって、最大サイズや拡張の作法が大きく異なります。ブロックサイズが 8KB の場合のスペック比較は以下の通りです。
| 項目 | Smallfile 表領域 | Bigfile 表領域 |
|---|---|---|
| ファイル数 | 最大 1,022 個 | 厳密に 1 個のみ |
| 1ファイル最大サイズ | 約 32 GB ($2^{22}$ ブロック) | 約 32 TB ($2^{32}$ ブロック) |
| 表領域最大サイズ | 約 32 TB | 約 32 TB |
| 容量拡張の方法 | ADD DATAFILE または RESIZE | RESIZE のみ |
| 管理の煩雑さ | ファイル数が増えると管理負荷増 | 非常にシンプル |
※最大サイズはブロックサイズに依存します。32KB ブロックの場合、Bigfile は最大 128TB まで拡張可能です。
実装・実行例:作成と変更のSQL
実機で動作する基本的な SQL コマンド例です。
1. Bigfile 表領域の作成
ファイル管理を自動化し、単一の巨大な領域を確保する場合に使用します。
-- 権限:SYSDBA または CREATE TABLESPACE
-- 26ai以降ではデフォルトですが、19c以前は明示が必要です
CREATE BIGFILE TABLESPACE TS_BIG_DATA
DATAFILE '/u01/app/oracle/oradata/ORCL/ts_big_data01.dbf' SIZE 10G
AUTOEXTEND ON NEXT 1G MAXSIZE UNLIMITED;
[解説] BIGFILE キーワードを明示します。MAXSIZE UNLIMITED を指定することで、ディスク容量の限界まで1ファイルで成長可能です。
2. Smallfile 表領域の作成(従来形式)
複数ディスクへの分散配置が必要な場合や、Oracle スモールファイル表領域として管理したい場合に使用します。
-- 明示的に SMALLFILE と指定して作成
CREATE SMALLFILE TABLESPACE TS_SMALL_DATA
DATAFILE '/u01/app/oracle/oradata/ORCL/ts_small01.dbf' SIZE 1G,
'/u02/app/oracle/oradata/ORCL/ts_small02.dbf' SIZE 1G
AUTOEXTEND ON;
[解説] カンマ区切りで複数のファイルを同時に定義でき、OSレベルで格納先ディスクを分けることが可能です。
3. 容量が不足した際の対処(RESIZE)
Bigfile表領域ではデータファイルの追加ができないため、既存ファイルのリサイズを行います。
-- Bigfile表領域のデータサイズを直接拡張する
ALTER TABLESPACE TS_BIG_DATA RESIZE 20G;
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
運用・セキュリティ上の注意
メリット
- Bigfile: データファイル数が減るため、制御ファイル内の情報が削減され、SGA内のメモリ節約やチェックポイント処理の高速化が期待できます。
- Smallfile: 1つのマウントポイントが満杯になっても、別のディスク領域にファイルを追加して表領域を拡張できる柔軟性があります。
デメリット・落とし穴
- Bigfile: 1つのファイルが数TBになると、OS標準の
cpやtarコマンドでの扱いが困難になります。また、ファイルシステムが大規模ファイルをサポートしている必要があります。 - 戻し方: 表領域作成後にタイプを変換(Small ⇔ Big)することはできません。変更したい場合は、新しい表領域を作成して Data Pump 等で移行する必要があります。
FAQ
Q: パフォーマンスに違いはありますか? A: データアクセス自体の速度差はほぼありません。ただし、ファイル数が多い環境では、Bigfile にすることで管理プロセスのオーバーヘッドが軽減される場合があります。
Q: どちらを使うべきか迷ったら? A: ASM(Automatic Storage Management)を使用しており、ストライピングが自動で行われる環境であれば、管理が楽な Bigfile を強く推奨します。
Q: Bigfileで 32TB を超えるデータが必要な場合は? A: ブロックサイズを大きく(16KBや32KB)するか、別の Bigfile 表領域を作成してデータを分散させる必要があります。
まとめ
- Oracle Smallfile 表領域は、複数ファイルで構成する柔軟な従来型。
- Oracle Bigfile 表領域は、単一の巨大ファイルで管理を簡素化するモダン型。
- 最新の 26ai では Bigfile がデフォルトとなるため、今後は Bigfile 運用が主流。
- 一度作成したタイプは変更不可。設計時に将来のデータ量を見極めること。
本記事は Oracle Database 19c を中心に解説します(26ai等の最新バージョンでは既定値が異なる場合があります)。
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?



コメント