ブロックサイズ変更

Oracle9iから表領域ごとにブロックサイズを、変更できるようになったのでやってみた。
デフォルトは8Kなので、32Kを作る。
ブロックサイズを変更した表領域を作成する

SQL> create tablespace test_32k datafile 'gekimu/test.dbf'
           size 10m blocksize 32k

行1でエラーが発生しました。:
ORA-00382: 32768は有効なブロック・サイズではありません。
有効な範囲は[2048..16384]です。

エラーか。。調べてみると、OSによっては最大16Kまでしか無理みたい。。
16Kでつくることに、

SQL> create tablespace test_16k datafile 'gekimu/test.dbf'
           size 10m blocksize 16k

行1でエラーが発生しました。:
ORA-29339: 表領域のブロック・サイズ16384がデータベースのブロック・サイズと一致しません。

また、エラー。どうやら、16K用のデータベースバッファが用意されてない模様。

データベースバッファの設定

まず、16Kのデータ−ベースバッファが設定されていないことを確認

SQL> show parameter db_16k_cache_size

NAME                           VALUE
------------------------------------                        
db_16k_cache_size                  0                   

16MBを割当

SQL> alter system set db_16k_cache_size = 16777216;

行1でエラーが発生しました。:
ORA-02097: 指定した値が無効なので、パラメータを変更できません。
ORA-00384: キャッシュを大きくするにはメモリーが足りません。

メモリ不足エラー?。
デフォルトのサイズを減らして、割り当てることに。

SQL>  alter system set db_cache_size= 12582912;

システムが変更されました。

SQL> alter system set db_16k_cache_size = 12582912;

システムが変更されました。

で、表領域作成。

SQL> create tablespace test_16k datafile 'gekimu/test.dbf'
           size 10m blocksize 16k

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

やっと成功。意外と面倒くさかった。。
それにしても、メモリについて調べてみたところ、メモリサイズはデフォルトのままだと問題ありそう。 java_pool_sizeが20MBも必要とは思えないし。色々調べてみる価値はありそう。