본문 바로가기

IT관련

오라클 에러 정보 (ORA-01144) - 데이터파일 최대크기를 초과한 경우

Oracle 에서 데이터파일(datafile)을 크게 새로 만들려고 하거나, 기존 데이터파일의 크기를 변경(resize) 하려고 할때, ORA-01144 에러를 만날 수 있습니다.

 

Oracle 에서 데이터는 블록(block) 단위로 저장됩니다.

하나의 데이터파일이 가질 수 있는 최대 블록의 갯수 제한이 있는데, 이게 2^22-1 입니다. 즉, 4,194,303 개.

오라클DB에서 블록크기를 보통 8k (8,192) 를 많이 사용합니다.

 

8k * 4,194,303 = 32GB
16k * 4,194,303 = 64GB
32k * 4,194,303 = 128GB

 

8k 짜리 블록 4백만개는 32GB 크기가 됩니다. 그래서 datafile 최대크기는 32GB 로 제한됩니다.

 

이런 제한때문에 ORA-01144 에러를 만나는 경우, datafile resize 를 하지말고 추가로 datafile 을 add 하면 됩니다.

 

1) alter tablespace USERS add datafile size 10G;

2) alter tablespace USERS add datafile '/u02/oradata/datafile/USERS_02.dbf' size 10G;

 

OMF 방식으로 datafile 명이 자동으로 관리되는 경우는 1)과 같이 하고, OMF 가 아닌 경우는 2) 처럼 datafile 명을 기술해주면 됩니다.

 

하나의 Tablespace 에 여러개의 Datafile 을 두지않고, 하나의 큰 데이타파일을 두는 경우도 가능한데,

이때는 처음 Tablespace 를 만들때부터 Bigfile 을 지정해서 만들어야 합니다.

 

SQL>
create bigfile tablespace TS_TEST
datafile '/u02/oradata/datafile/TS_TEST_01.dbf' size 40G
extent management local;

 

위와같이 테이블스페이스를 처음 만들때 bigfile 키워드를 지정해서 만드는 경우, 32GB 제한을 넘어서 크게 만드는 것이 가능합니다.