Oracleの最大エクステント数

Oracle データベースの最大エクステント数は、表領域の管理方法により異なる。
dba_segments.max_extents でオブジェクト毎の最大エクステント数を確認できる。



ディクショナリ管理

ブロックサイズにより異なる。

ローカル管理

ブロックサイズに関係なく、最大エクステント数は 2GB -1 となる。

ブロックサイズ/最大エクステント数

1KB/57、2KB/121、4KB/249、8KB(デフォルト)/505、16KB/1017、32KB/2041

以前はエクステント数も定常的に監視することが多かったが、ローカル管理となっては
上限に達するのは非現実的なので、あまり意味を成さないものと思われる。

テーブル定義

SQL> desc dba_segments

 名前             NULL?    型
 ---------------- ------ ---------------
 OWNER                   VARCHAR2(30)
 SEGMENT_NAME            VARCHAR2(81) ⇒ セグメント名(※)
 PARTITION_NAME          VARCHAR2(30)
 SEGMENT_TYPE            VARCHAR2(18)
 SEGMENT_SUBTYPE         VARCHAR2(10)
 TABLESPACE_NAME         VARCHAR2(30)
 HEADER_FILE             NUMBER
 HEADER_BLOCK            NUMBER
 BYTES                   NUMBER       ⇒ バイト単位のサイズ
 BLOCKS                  NUMBER       ⇒ ブロック単位のサイズ
 EXTENTS                 NUMBER       ⇒ 割り当てられたエクステント数
 INITIAL_EXTENT          NUMBER       ⇒ 初期エクステントに必要なバイトのサイズ
 NEXT_EXTENT             NUMBER       ⇒ 次回エクステントのバイト単位のサイズ
 MIN_EXTENTS             NUMBER       ⇒ エクステントの最小数
 MAX_EXTENTS             NUMBER       ⇒ エクステントの最大数(※)
 MAX_SIZE                NUMBER       ⇒ ブロックの最大数
 RETENTION               VARCHAR2(7)
 MINRETENTION            NUMBER
 PCT_INCREASE            NUMBER
 FREELISTS               NUMBER
 FREELIST_GROUPS         NUMBER
 RELATIVE_FNO            NUMBER
 BUFFER_POOL             VARCHAR2(7)

紛らわしいなーと思っていたのは、MAX_SIZE 。
MAX_SIZE はブロック数の最大数であって、エクステントの最大数ではないので。