Oracle
Oralce 블럭사이즈
ravon
2015. 1. 30. 16:35
# Oracle 테이블 스페이스 블록 사이즈 사용 초과 오류
ERROR at line 1:
ORA-01144: File size (6553600 blocks) exceeds maximum of 4194303 blocks
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

> 새로 생성
아래 내용 출처 : 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
----------------------------------------------
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
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
---------------------------------------- ------------------------------ -------------- ---------- ------------- ----------
/data/oradata/DATAFILE.dbf TEST_TB 31457280 7120256 24337024 77.3653158
/data/oradata/DATAFILE_2.dbf TEST_TB 31457280 1024 31456256 99.9967448