Back-End/DB

[OracleDB] Tablespace의 개념과 생성 방법(MacOS)

남쫑 2024. 11. 3. 18:12

Tablespace란?

우리가 Oracle, MySQL 등 관계형 데이터베이스를 사용하다보면 Tablespace라는 것을 접하게 된다.

이 Tablespace란 하나의 데이터베이스에서 가장 큰 논리적인 저장공간으로 업무나 용도에 따라 여러 개의 Tablespace로 나뉘어 관리된다. 

사진을 보면 알 수 있듯이 우리가 데이터를 저장하는 테이블을 저장하는 공간이 세그먼트(Segment)이고 그 세그먼트의 모임이 Tablespace이다. 

 

 

Tablespace 생성

Tablespace를 생성하는 방법은 매우 간단하다. 저번 포스팅에 작성한 방법대로 SQL plus에 접속한 뒤 아래 코드를 입력하면 된다.

CREATE TABLESPACE 테이블스페이스명
        DATAFILE '/경로/테이블스페이스파일명.dbf'
        SIZE 초기용량(100m,1g 등);

 이 과정에서 내가 어려웠던 부분은 바로 Datafile을 입력하는 부분이다.

우리가 Tablespace를 생성하기 위해서는 먼저 dbf 파일이 존재하는 경로를 찾아 그 안에 새로운 dbf 파일을 위 코드처럼 만들어줘야한다.

 

Oracle은 MacOS를 지원하지 않다보니 Colima와 Docker를 사용하여 x86_64 기반의 가상환경을 만들고 그 안에 설치를 진행하는데

그러다보니 로컬에 설치된 파일과는 다르게 경로를 찾기가 쉽지 않았다.

이 부분은 내가 아직 Docker에 대한 이해가 부족하여 생긴 이슈이기도 하다.

 

먼저 SQL plus에서 exit를 입력하여 bash로 다시 나온 뒤, pwd를 입력하여 현재 Docker Container의 경로를 확인한다. 

pwd

현재 OracleDB가 깔려있는 나의 Docker Container의 경로는 /opt/oracle이다.

이제 ls를 입력하여 여기에 존재하는 폴더와 데이터들을 확인한다.

ls

굉장히 많지만 우리는 dbf 파일이 존재하는 경로만 찾으면 되는데 

일반적으로 dbf 파일은 oradata/XE 폴더 안에 존재한다. 

터미널 상으로 oradata가 존재하므로 해당 폴더 안으로 들어가 XE 폴더가 존재하는지 찾아보자.

이 때는 cd 명령어를 이용한다. 

cd oradata

oradata로 들어가 ls로 다시 조회를 해보니 XE가 존재하여 cd XE로 다시 XE 안으로 들어왔고

ls로 조회를 해보니 dbf 파일들이 있는 것을 확인할 수가 있었다.

즉, 현재 내 OracleDB가 설치된 컨테이너에서 dbf 파일들이 존재하는 경로는

/opt/oralce/oradata/XE 이다. 이걸 사용하여 새로운 dbf 파일을 생성하면 된다.

 

다시 SQL plus로 돌아와 조금 전 경로를 입력하면 indx라는 이름의 dbf 파일과 함께 Tablespace가 성공적으로 생성된 걸 확인할 수 있다!