質問: oracle表領域作成の際に使用するオプション 以下の(1)~(9)オプションの意味を、oracle初心者でも理解できるレベルで教えていただけないでしょうか? (1)tablespace aaaaaaaaa =表領域名 (2)pctfree10 =この割合を超えるとブロックに挿入不可能になる。 (3)pctused80 =用済領域のうち、データブロックごとに確保される最小限の割合。この割合を下回ると挿入可能な ブロックとなる。 (4)initrans1 (5)storage( (6)initial 1m (7)next 1m (8)maxextentsunlimited (9)pctincrease0 ) 自分で調べてはみたものの、理解できませんでした。 わがままな質問で申し訳ございません。 ご教授願います。
回答: oracleのデータはdb->表領域->データファイル(tempファイル)という形で構成されます。 表領域は複数のデータファイルを含むことができ、それぞれ異なる目的に使用されます。 system表領域->oracleの各種オブジェクトを管理するデータが格納される sysaux表領域->system表領域の補助領域 undo表領域->更新処理時の更新前イメージを格納する。表領域内はundoセグメントという単位で管理される。 一時表領域->diskソートなどに使われる。この表領域はdatafileではなくtempfileとして作成する。 ユーザー表領域->ここに一般のユーザーデータ、索引データが格納される。格納単位はセグメント(表・索引)->エクステント->ブロックのようになる。 ・pctfree ブロックに大してデータが最初に挿入されるときの空き領域の割合。挿入後、updateでデータ長が増える分の余裕が主な用途。これが小さすぎてupdateによるレコード長の増加が大きいと別ブロックにデータを移しポインタのみ残す行移行が多発し、アクセスのパフォーマンスが劣化する。 大きすぎても、領域に無駄が生じる(フルスキャン時にはアクセス時間が増大する)。 ・pctused deleteやupdateでブロック内の領域の使用割合が指定された値を下回った場合、insert処理の対象ブロックとなる。 大きすぎると実際にはレコードを挿入できないのに、挿入可能対象リスト内に含めて管理しなければならないので負荷が増大する。 pctfree+pctused≒100は禁忌。 ・inittrans ブロックに対して同時にトランザクションが発生する場合に確保する領域の初期値。 詳しくはこちら http://www.insight-tec.com/mailmagazine/ora3/vol143.html ・sorage 記憶特性の記述 initial 表領域内に一つのセグメントが最初にアロケートするエクステントのサイズ。 next initialエクステントを使い切った時に次にアロケートするエクステントのサイズ。 maxextent unlimited 使用するエクステントの数に制限をもたせない(一応2gだったかの上限はあるけど、事実上無制限) pctincrease 0 nextのエクステントを使い切った時にもエクステントサイズを増やさない。nextで指定したサイズでアロケートを続ける。 ただし、ここで取り上げられているのはディクショナリ管理方式と呼ばれ、エクステント管理情報を一括してsyste表領域で管理される。 そのためsysem表領域の肥大やアクセスの集中が起こりやすいので今はローカル管理方式が推奨されている。 create tablespace xxx datafile 'file_2.dbf' size 1g extent management local segment space management auto;