2015. 1. 30. 16:35

Oralce 블럭사이즈

# Oracle 테이블 스페이스 블록 사이즈 사용 초과 오류


ERROR at line 1:
ORA-01144: File size (6553600 blocks) exceeds maximum of 4194303 blocks


- 기본적으로, 테이블스페이스의 블록 사이즈는 DB 생성시에 설정하는 블록 사이즈에 영향이 있음.

- Oracle 9i 이후 테이블 스페이스 별도로 블록 사이즈 변경 가능.

less..

> Edit Tablespace
사용자 삽입 이미지
























> 새로 생성
아래 내용 출처 : https://forums.oracle.com/thread/430922

9i 이후에 가능합니다. 또한 locally managed tablespace 이어야하고.. 
테이블스페이스를 만들기 전에 메모리할당을 미리 해야 만들 수 있습니다. 
또한 db_cache_size를 사용하지 않고 db_block_buffers 파라미터가 있으면 
다른 블록크기의 메모리를 할당하지 못하므로 db_block_buffers 파라미터 대신에 db_cache_size를 꼭 사용해야 합니다.
그리고 나서 db_몇k_cache_size를 쓰면 되겠죠.


직접 만들어 보겠습니다.

1. 지금 현재 DB는 8k 입니다. 8192 byte이죠..
db_block_size=8192

2. 16k cache size짜리로 메모리를 할당합니다.
shared_pool_size=144M
db_cache_size=128M
db_16k_cache_size=80m

3. DB를 재기동합니다.

4. 16k 블록 크기를 가지는 테이블스페이스를 생성합니다.
SQL> create tablespace tbs_16k_lob
2 datafile '/data/oradata/PROD/tbs_16k_lob_01.dbf' size 100m
3 uniform size 1m segment space management auto
4 blocksize 16k;

Tablespace created.

SQL> select tablespace_name, block_size, extent_management from dba_tablespaces;

TABLESPACE_NAME BLOCK_SIZE EXTENT_MAN
------------------------------ ---------- ----------
SYSTEM 8192 DICTIONARY
UNDOTBS 8192 LOCAL
USERS 8192 LOCAL
TOOLS 8192 LOCAL
TBS_16K_LOB 16384 LOCAL

- 위와 같은 상황에서 쉬운 방법은, 데이터 파일을 추가하는 것이 있음.

> 블록 사이즈에 따른 데이타 파일 제한 내용
일반적으로 DB 생성시 블록사이즈(Default:8k)에 따라 데이터 파일 사이즈 32GB 제한

db_block_size | Datafile upper limit
----------------------------------------------
     2kb               8GB
     4kb              16GB
     8kb              32GB
   16kb               64GB
   32kb              128GB


> 블록 사이즈 조회

SQL> show parameter block

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_block_buffers                     integer     0
db_block_checking                    string      FALSE
db_block_checksum                    string      TYPICAL
db_block_size                        integer     8192  -- 8k(기본블록 사이즈)
db_file_multiblock_read_count        integer     128


> 블록 사이즈 초과 오류시, 기존 테이블스페이스에 데이타 파일 추가

1
2
3
ALTER TABLESPACE [기존 테이블스페이스명]
    ADD DATAFILE '/data/oradata/DATAFILE_2.dbf' SIZE 30720M;
;


> 추가후 조회

FILE_NAME                                TABLESPACE_NAME                TOTAL SIZE(KB)   USED(KB) FREE SIZE(KB)     FREE %
---------------------------------------- ------------------------------ -------------- ---------- ------------- ----------
/data/oradata/DATAFILE.dbf             TEST_TB                       31457280    7120256      24337024 77.3653158
/data/oradata/DATAFILE_2.dbf           TEST_TB                       31457280       1024      31456256 99.9967448