アプリ版:「スタンプのみでお礼する」機能のリリースについて

Oracle10gにて表領域Aを1GBで作りました。
そのあとにテーブルBを表領域AにStorageのInitialを10MB、
テーブルBを同じく表領域Aに30MBでつくりました。
そしてテーブルB,テーブルCにそれぞれ1MBほどのデータをいれました。
テーブルB,テーブルCのセグメントのエクステント数は1になるはずなの
ですが、なぜかエクステント数が50とか30になってしまいます。
Storage句に大きめのInitialをCreate Table文でしていするだけでは
Initialが1にならないのでしょうか?

A 回答 (3件)

1個目のテーブルも2個目のテーブルも同様のStorage句の


記述にしましたか?
前回も書いたようにinitialを1Mとすれば1Mに達するまで
64Kのエクステントが複数割り当てられます。
まずはデータなどを一切挿入しないでテーブルをStorage句なしで
作成してみてください。全てのテーブルがエクステント数は1になるはずです。
逆に全てのテーブルでStorage句のintialを1Mで指定すれば全て
エクステント数は16になると思います。
エクステント管理は自動にするべきです。手動にしてもほぼいいことは
無いと思っていいでしょう。また、エクステント数を減らそうとする
こともしなくてよいことです。1000だろうが10000だろうがほぼ
気にする必要はありません。
    • good
    • 0

前回の回答に一部誤りがありましたので。


ローカル管理表領域でかつエクステント管理がAUTOになっていれば
(10gでは何もオプションをつけないとデフォルトそうなります)
initialでエクステントサイズを指定しても指定サイズの1つの
エクステントとはならず、Oracleが自動的に作成するエクステントサイズ数個でユーザ側が指定したinitialのサイズを少し上回るまで
エクステントが確保されます。
最初の1MBに達するまでは64Kで作成され(つまり16個)
その後は1MBづつ作成されていくため、例えば30Mでinitialを指定すると
64Kのエクステント16個と1Mのエクステント29個などといった形
で作成されるかと思います。

この回答への補足

たしかに64Kのエクステントがありました。
ただ不思議なのは1表領域1テーブルの構成にすると
エクステントは1つしかできません。
1表領域に複数のテーブルを作るとエクステントが
多くなってしまいます。
エクステント管理は手動にすべきなのでしょうか?

補足日時:2007/04/19 00:53
    • good
    • 0

select bytes from dba_segments


where owner = 'ユーザ名' and segment_name = 'テーブル名';
と打ってみて各エクステントのサイズを確認してみて下さい。
65536のサイズのものが16個くらい無いでしょうか?

10gではローカル管理表領域がデフォルトになっていて
initialなどを指定しなければ自動でエクステントサイズがOracleによって決められます。

ただし質問者さんの言うようにinitialをちゃんと指定したのであれば
たしかそちらが有効になるはずなのでエクステント数が50とかに
なることは無いですね。

まずは上記SQL文で各エクステントのサイズを確認することからやってみてください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!