ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
エクステント (Extent) とは
エクステントは Oracle のストレージ単位の 1 つで、連続するデータブロックの集まりです。データ格納の最小割り当て単位として機能し、テーブルやインデックス (セグメント) が領域を必要とするときは、ブロック単位ではなくエクステント単位で割り当てられます。
Oracle のストレージ階層
| 階層 | 意味 | 典型サイズ |
|---|---|---|
| データベース | 最上位 | - |
| 表領域 | 論理グループ | GB 〜 TB |
| セグメント | 1 オブジェクト (テーブル等) のストレージ | MB 〜 GB |
| エクステント | 連続ブロックの集まり | 64KB 〜 MB |
| ブロック | I/O の最小単位 | 8KB (DB_BLOCK_SIZE) |
包含関係: 表領域 ⊃ セグメント ⊃ エクステント ⊃ ブロック
なぜエクステントが必要なのか
ブロック 1 つずつ割り当てると頻繁な管理オーバーヘッドと断片化が起きます。エクステント単位 (=複数ブロックをまとめて) 確保することで、
- 連続領域のためシーケンシャル I/O 性能が良い
- 領域管理のメタデータ量を削減
- 断片化を抑制
セグメントとエクステントの関係
セグメント (テーブルやインデックス) が作成されると最初のエクステント (INITIAL EXTENT) が割り当てられます。データが増えて領域が足りなくなると次のエクステント (NEXT EXTENT) が追加で割り当てられます。
[ セグメント (テーブル EMP) ]
├ エクステント1 (8 ブロック = 64KB)
├ エクステント2 (8 ブロック)
├ エクステント3 (8 ブロック)
└ ...
エクステント管理方式
| 方式 | 説明 | 採用状況 |
|---|---|---|
| LOCAL | 表領域のヘッダ部にあるビットマップで管理。高速 | 現代の標準 |
| DICTIONARY | データディクショナリの表で管理。古い方式 | Oracle 11g 以降は非推奨 |
新規作成では特別な理由がない限り LOCAL 管理を選びます。表領域作成 DDL では EXTENT MANAGEMENT LOCAL がデフォルト。
エクステント割り当てサイズ
| 指定 | 挙動 |
|---|---|
AUTOALLOCATE (推奨) | Oracle がセグメントの成長に応じてサイズを自動調整 (64KB → 1MB → 8MB → 64MB) |
UNIFORM SIZE n | 常に同じサイズで割り当て (例: 1M ずつ) |
-- AUTOALLOCATE (デフォルト)
CREATE TABLESPACE app_data
DATAFILE '/u01/.../app_data01.dbf' SIZE 500M
EXTENT MANAGEMENT LOCAL AUTOALLOCATE;
-- UNIFORM SIZE (DWH 等で予測可能なサイズに固定したい場合)
CREATE TABLESPACE app_uniform
DATAFILE '/u01/.../app_uniform01.dbf' SIZE 500M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;
セグメントごとのエクステント指定
CREATE TABLE 時のストレージ句でセグメントごとに調整可能 (ただし AUTOALLOCATE 表領域では無視される設定が多い)。
CREATE TABLE big_log (
log_id NUMBER,
msg VARCHAR2(4000),
ts TIMESTAMP
)
TABLESPACE app_data
STORAGE (
INITIAL 1M -- 最初のエクステント
NEXT 1M -- 以降のエクステント
MINEXTENTS 1 -- 作成時の最小エクステント数
MAXEXTENTS UNLIMITED -- 最大エクステント数
);
エクステント情報の確認 SQL
-- セグメントごとのエクステント数とサイズ
SELECT
owner,
segment_name,
segment_type,
extents,
blocks,
ROUND(bytes/1024/1024, 2) AS mb
FROM dba_segments
WHERE owner = 'APP_USER'
ORDER BY bytes DESC;
-- 特定セグメントのエクステント詳細
SELECT
extent_id,
file_id,
block_id,
blocks,
ROUND(bytes/1024, 1) AS kb
FROM dba_extents
WHERE owner = 'APP_USER'
AND segment_name = 'BIG_LOG'
ORDER BY extent_id;
-- 表領域の空きエクステント
SELECT tablespace_name,
COUNT(*) AS free_extents,
ROUND(SUM(bytes)/1024/1024, 1) AS free_mb,
ROUND(MAX(bytes)/1024/1024, 1) AS largest_mb
FROM dba_free_space
GROUP BY tablespace_name;
エクステントとブロックの関係
エクステントを構成するブロック数 = エクステントサイズ ÷ DB_BLOCK_SIZE。デフォルトの 8KB ブロックなら 64KB エクステント = 8 ブロックです。
| エクステントサイズ | ブロック数 (8KB ブロックの場合) |
|---|---|
| 64KB | 8 |
| 1MB | 128 |
| 8MB | 1,024 |
| 64MB | 8,192 |
断片化と再編成
エクステントが多数の領域に散らばると断片化が起こり、全表スキャンの効率が低下することがあります。対策として:
ALTER TABLE ... MOVEでテーブルを再構築ALTER INDEX ... REBUILDでインデックスを再構築- パーティション化で局所的に対処
- 表領域単位でUNIFORM SIZE に統一すると断片化が起きにくい (DWH で有効)
FAQ
Q: エクステント数が多くなりすぎると問題は?
A: 現代の LOCAL 管理では問題は小さい (ビットマップで O(1) 管理)。古い DICTIONARY 管理ではディクショナリ更新負荷が問題視された。
Q: AUTOALLOCATE と UNIFORM のどちらを選ぶ?
A: 通常は AUTOALLOCATE でよい。大規模 DWH やパーティション設計で予測可能なサイズにしたいときに UNIFORM。
Q: テーブルを TRUNCATE するとエクステントは?
A: TRUNCATE TABLE はデフォルトで最初のエクステントだけ残し、残りのエクステントは解放される。REUSE STORAGE 句を付けると全エクステントを保持する。
関連
- 表領域 — エクステントを束ねる論理ストレージ
- セグメント — 複数エクステントで構成される 1 オブジェクト
- データブロック — エクステントを構成する最小単位
- ASSM (Automatic Segment Space Management)
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?