기본적으로, 테이블스페이스의 블록 사이즈는 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

 

현재 DB8kb이므로 블록사이즈가 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 블록 크기를 가진 테이블스페이스가
생성 된 것을 확인할 수 있다.

By haisins

오라클 DBA 박용석 입니다. haisins@gmail.com 으로 문의 주세요.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다