기본적으로, 테이블스페이스의 블록 사이즈는 DB 생성시에 설정하는 블록 사이즈에 영향이 있다.
SQL> create
tablespace test_16k
2
datafile ‘/app/oracle/oradata/orcl/test_16k.dbf’ size 50m
3
blocksize 16k;
create tablespace
test_16k
*
ERROR at line 1:
ORA-29339:
tablespace block size 16384 does not match configured block sizes
SQL> show
parameter _cache_size
NAME TYPE
VALUE
————————————
———– ——————————
client_result_cache_size
big integer 0
db_16k_cache_size big integer 0
db_2k_cache_size big integer 0
db_32k_cache_size big integer 0
db_4k_cache_size big integer 0
db_8k_cache_size big integer 0
db_cache_size big integer 128M
db_flash_cache_size big integer 0
db_keep_cache_size big integer 0
db_recycle_cache_size big integer 0
현재 DB는 8kb이므로 블록사이즈가 16kb인 테이블스페이스를 생성하려고 할 때
16kb를 처리하기 위한 버퍼캐시영역이 없어 에러가 발생하는 것을 확인할 수 있다.
때문에 해당영역을 16k_cache_size 파라미터값을 통해 설정을 변경해준다.
SQL> alter
system set db_16k_cache_size=80m scope=both;
System altered.
16k cahce size로 메모리를 할당한다.
SQL> show
parameter _cache_size
NAME TYPE VALUE
————————————
———– ——————————
client_result_cache_size
big integer 0
db_16k_cache_size big integer 80M
db_2k_cache_size big integer 0
db_32k_cache_size big integer 0
db_4k_cache_size big integer 0
db_8k_cache_size big integer 0
db_cache_size big integer 128M
db_flash_cache_size big integer 0
db_keep_cache_size big integer 0
db_recycle_cache_size big integer 0
SQL> create
tablespace test_16k_lob
2
datafile ‘/app/oracle/oradata/orcl/tab_16k_lob01.dbf’ size 100m
3
blocksize 16k;
16kb 블록 크기를 가지는 테이블 스페이스를
생성한다.
SQL> select
tablespace_name, block_size, extent_management from dba_tablespaces;
TABLESPACE_NAME BLOCK_SIZE EXTENT_MAN
——————————
———- ———-
SYSTEM 8192 LOCAL
SYSAUX 8192 LOCAL
UNDOTBS1 8192 LOCAL
TEMP 8192 LOCAL
USERS 8192
LOCAL
TEST_16K_LOB 16384
LOCAL
16kb 블록 크기를 가진 테이블스페이스가
생성 된 것을 확인할 수 있다.