• 締切済み

Oracleテーブル作成について

Oracle初心者です。 表領域 TEST_TABLESPACEがあるとします。 (サイズは、1024Mと仮定) (1)この表領域に一つのテーブル TEST_TABLEを作成します。 (サイズは、INITIAL 512M NEXT 512M) ここで質問なのですが、例えば上記でテーブルの NEXTを600Mとかにすると、データが512M以上入って NEXTのサイズが拡張された場合、エラーが発生するのか それとも、最大の512Mが拡張され、1024M分のデータが 入らない限り、エラーが発生しないのか? 教えていただけますか? (2)テーブル作成のDDL内でSTORAGE句指定しない場合、 INITIALとかNEXTは、どう設定されますか? 長々と申し訳ないですが、よろしくお願いいたします。

みんなの回答

  • entree
  • ベストアンサー率55% (405/735)
回答No.2

> ローカル管理、AUTOALLOCATE だと表領域のNEXTは、無視されそうですが、 > テーブルのSTORAGE句のNEXTも無視されるんでしょうか? はい。無視されます。 こんな確認をすれば分かると思います。 drop table test; create table test ( id number, value varchar2(20) ) storage ( initial 10m next 10m); select extent_id, bytes from user_extents where segment_name = 'TEST'; -- 1M のエクステントが 10 個作成されていることが分かる。 begin for i in 1..300000 loop insert into test values (i, LPAD('a', 20, 'a')); commit; end loop; end; / select extent_id, bytes from user_extents where segment_name = 'TEST'; -- NEXT が有効なら、自動拡張後のサイズは 20M になるはずだが・・・

すると、全ての回答が全文表示されます。
  • entree
  • ベストアンサー率55% (405/735)
回答No.1

特に何も書かれていないので、デフォルトのローカル管理、AUTOALLOCATE と仮定します。 > (1)この表領域に一つのテーブル TEST_TABLEを作成します。 > (サイズは、INITIAL 512M NEXT 512M) > > ここで質問なのですが、例えば上記でテーブルの > NEXTを600Mとかにすると、データが512M以上入って > NEXTのサイズが拡張された場合、エラーが発生するのか > それとも、最大の512Mが拡張され、1024M分のデータが > 入らない限り、エラーが発生しないのか? > 教えていただけますか? ローカル管理、AUTOALLOCATE では NEXT の値は無視されますので、値を何に設定しても同じことです。 ちなみに、ディクショナリ管理の場合は NEXT 600M 分確保できないのでエラーになります。領域が足りないからと言って 512M だけ確保するようなことはありません。 > (2)テーブル作成のDDL内でSTORAGE句指定しない場合、 > INITIALとかNEXTは、どう設定されますか? ローカル管理、AUTOALLOCATE では独自のアルゴリズムに従って設定されます。(INITIAL は 64K)

Ryo921
質問者

補足

度々、すいません。 >ローカル管理、AUTOALLOCATE では NEXT の値は無視されますので、値>を何に設定しても同じことです。 上記に関して確認なのですが、 ローカル管理、AUTOALLOCATE だと表領域のNEXTは、無視されそうですが、テーブルのSTORAGE句のNEXTも無視されるんでしょうか?

すると、全ての回答が全文表示されます。

関連するQ&A