2012年9月10日月曜日

INITIAL_EXTENTと遅延セグメント作成な話1


ちょっと気になったのでやってみたのだけど、
個人的にはツボったのでメモしておく。
何の得もない内容です。

----
環境
----
Windows7 64bit
Oracle: 11.2.0.3.0 64bit



SQL> select TABLESPACE_NAME,INITIAL_EXTENT,MIN_EXTENTS from dba_tablespaces where tablespace_name like 'TEST_EXT%';

TABLESPACE_NAME                INITIAL_EXTENT MIN_EXTENTS
--------------------------- -------------- -----------
TEST_EXT                                    65536              1

INITIAL_EXTENT :初期エクステントのデフォルトのサイズ
MIN_EXTENTS:エクステントのデフォルトの最小数

それぞれよく見る数値です。

初期エクステントサイズは64KBで、1ブロック8KBとすると、
エクステントは1個で、初期エクステントは8ブロックですね。


じゃ、64KBで表領域作れるってこと?

SQL>create tablespace test_ext datafile 'C:\app\oracle\oradata\orcl\test_ext01.dbf' size 64K;


create tablespace test_ext datafile 'C:\app\oracle\oradata\orcl\test_ext01.dbf' size 64K
*
行1でエラーが発生しました。:
ORA-03214: 指定したファイル・サイズが必要最小値を下回っています。

うーん、エラー
まぁ、管理情報とかのオーバーヘッドもあるよね、
64KBから1KBずつ増やしていきます。


SQL> create tablespace test_ext datafile 'C:\app\oracle\oradata\orcl\test_ext01.dbf' size 81K;

表領域が作成されました。



81KBで作れました。


ちなみに、KROWNでエラー番号を検索すると、文書番号:35170に
表領域の最低値の目安が書いてあります。


使用可能エクステントを確認します。
SQL> select TABLESPACE_NAME,BLOCK_ID,BYTES,BLOCKS from dba_free_space where tablespace_name like 'TEST_EXT%';


TABLESPACE_NAME   BLOCK_ID   BYTES     BLOCKS
------------------- ---------- ---------- ----------
TEST_EXT                       4             65536          8


ブロックID4から8ブロック64KB使えるようです。
ブロックID4より前の3ブロックは管理用に使ってるんですかね。

あり??
8KB×12ブロック=96KB。。。

81KBで作ったのに???


SQL> select tablespace_name,bytes/1024 from dba_data_files where tablespace_name ='TEST_EXT';

TABLESPACE_NAME            BYTES/1024
------------------------ ----------
TEST_EXT                               88


ん?88KB=11ブロック??


C:\app\oracle\oradata\orcl>dir TEST_EXT01.DBF

98,304 TEST_EXT01.DBF

!!

96KB!? 12ブロックだ。。


ぐぬぬぬ。油断ならん。。


次回は、表領域が出来たのでオブジェクトを作っていきます。

次回:INITIAL_EXTENTと遅延セグメント作成な話2

0 件のコメント:

コメントを投稿