ブロックサイズ変更
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も必要とは思えないし。色々調べてみる価値はありそう。