セグメント、エクステント、データブロックの管理
 
 
◎セグメントの種類と記憶領域パラメータの設定
セグメントとは、1つ以上のエクステントの集まりにより作成されるデータベースオブジェクトを意味する論理単位のこと
 
○セグメントの種類
 使用目的と性質の違いにより分類される。
 
| セグメント名 | 内容 | 
| データセグメント   | 行データを格納するために使用される。 CREATE TABLE文により作成される。 | 
|   索引セグメント   | 索引を作成したキー列の値とその物理アドレスを格納するために使用される。 CREATE INDEX文により作成される。 | 
| ロールバックセグメント | データや索引を変更する前に変更前の値を格納するために使用される。 CREATE ROLLBACK
  SEGMENT文によって作成される。 | 
|   一時セグメント   | 大量データをソート処理するときに、中間値データを格納するために使用される。 Oracle Serverによって必要に応じて自動的に作成される。 | 
 
★     
1つのオブジェクトに対して1つのセグメントが割当てられるので、“セグメント=オブジェクト”
★     
オブジェクトは、表領域中の複数のデータファイルにまたがって格納できる
 
○記憶領域パラメータの設定
記憶領域パラメータにより、セグメントを構成する各エクステントの大きさや個数を決定することができる。
例)セグメントが表であったとき ⇒ CREATE TABLE文の中で指定する
     CREATE TABLE EMP
     (列名 属性、…)
     TABLESPACE users
 STORAGE(
     STORAGE(
     INITIAL  10M
     NEXT    10M        STORAGE句
     MINEXTENTS   1      STORAGEでくくられたパラメータ = 記憶領域パラメータ
     MAXEXTENTS   10
);
 
 
| パラメータ | 内容 | 値の変更 | 
| INITIAL NEXT MINEXTENTS MAXEXTENTS PCTINCREASE | 初期エクステントのサイズ 増分エクステントのサイズ セグメント作成時のエクステントの割当数 セグメントに含められるエクステントの最大数 次に割当てるエクステントに対して増分する割合 | 変更できない 変更可能(最小値:1) 変更できない 変更可能 変更可能 | 
例)記憶領域パラメータの変更
  ALTER TABLE EMP (MAXEXTENTS unlimited)
 
記憶領域パラメータは、データベースシステムデフォルト、表領域、セグメントに設定できる。
STORAGE句の優先順位は・・・
セグメント > 表領域 > データベースシステムのデフォルト
★     
データベースシステムデフォルトの記憶領域パラメータ
INITIAL:5DBブロック、NEXT:5DBブロック、MINEXTENTS:1
MAXEXTENTS:DB_BLOCK_SIZEが2Kの場合121
                 DB_BLOCK_SIZEが4Kの場合245
 
 
◎セグメントに対するエクステントの割当と解放
 エクステントは、表や索引やロールバックセグメントを作成したり拡張したときに割当てられ、削除、変更、切り捨て、サイズ自動変更(ロールバックセグメントのみ)が行われると割当が解放される。
 例)セグメントにエクステントが割当てられる処理(作成)
例)セグメントにエクステントが割当てられる処理(作成)
CREATE
INDEX EMP_PK ON (emp_id)
      STORAGE
(INITIAL 100M NEXT 10M PCTINCREASE 0)        エクステントの割当と解放が
      TABLESPACE
user2;                     頻繁に行われると、データ
例)エクステントの割当が解放される処理(切り捨て、削除)        ファイル内で領域が断片化
TRUNCATE
TABLE EMP;                     する可能性がある。
DROP
TABLE EMP;                        (一時セグメント、RBSに
DROP
INDEX EMP_PK;                      断片化傾向が高い)
 
 断片化を防ぐために、隣接エクステントを1つのエクステントにまとめて使用する。⇒コアレス処理
 コアレスは、エクステントの解放後すぐには行われず、次回にその空きエクステントがセグメントに割当てられるときに行われる。そのため、コアレスを事前に行っておけば、エクステントの割当が速やかに行われることになる。
例)明示的なコアレスの実行
 ALTER TABLESPACE 表領域名 COALESCE;
 
 
◎ブロック領域管理パラメータ
 ○データブロックの構成
○データブロックの構成
| ブロックヘッダー 
 | ||||||||||||
| 
             空き領域   | ||||||||||||
| 
 
 | ||||||||||||
 
○データブロックを制御するパラメータ ⇒ セグメントに対してのみ指定可能
ブロック領域管理パラメータは、データセグメントと索引セグメントの領域使用並行性と領域使用率を制御することができる。
| パラメータ | 内容 | |
| PCTFREE | ブロック内の行に対する更新操作で生じる拡張に備えた空き領域の割合 (デフォルト:10%) | |
| PCTUSED | ブロックで使用されている領域の最小割合 (デフォルト:40%) | |
|  INITRANS | データブロック、索引ブロックに作成されるトランザクションスロットの初期値 例)INITRANS 3ならば、同時に3つ以上のトランザクションが同じブロック内のデータを変更できる。最小同時実行性が保証されることになる。 | |
|  MAXTRANS | データブロックまたは索引ブロックを変更できる同時トランザクションの数を制限する | |
★PCTFREE,PCTUSEDは、ブロックサイズからブロックヘッダーを除いた部分を100%として算出する。
 
 
◎記憶領域に関する情報の取得
表領域、データファイル、セグメント、エクステントに関する情報や、それぞれの関係は、データディクショナリビューから取得。
 
 
 
   
 
  
   
   
 
 
 
 
 
 
2001/07/20 担当:Y.N
[TOP]