개인 학습용으로 쓰던 데이터베이스와 프로젝트용 데이터베이스를 분리하고자 터미널에 CREATE DATABASE
쿼리를 입력했더니 다음과 같은 에러 메세지가 발생했습니다.왜 그런가해서 찾아봤더니 MySQL과는 다르게 OracleDB는 하나의 데이터베이스만을 생성해서 사용하기 때문에 이러한 오류 메세지가 출력된다고 합니다.
아니 그러면 데이터베이스 분리는 어떻게 하지...?
OracleDB에서는 이런 문제를 해결하기 위해서 TABLESPACE
라는 별개의 공간을 생성하고 별개의 데이터베이스처럼 운용할 수 있게 지원하고 있습니다.
TABLESPACE
에 대한 자세한 내용은 추후 별개의 포스트로 정리해볼까 합니다.따라서 여기서는 오류 원인과 해결 방법만 짚고 넘어가겠습니다.
TABLESPACE
는 다음과 같이 생성합니다. 경우에 따라 옵션을 다양하게 사용할 수 있는데 당장 필요한 옵션만 넣어서 생성하면 다음과 같은 쿼리문을 작성할 수 있습니다.
CREATE TABLESPACE 테이블_스페이스명
DATAFILE '경로/데이터파일명.dbf'
SIZE 용량
AUTOEXTEND ON
MAXSIZE 용량
;
DATAFILE
: TABLESPACE가 저장될 물리적 공간을 의미합니다.SIZE
: TABLESPACE의 기본 용량을 지정합니다. DATAFILE을 처음 생성할 때 지정된 SIZE 크기를 가진 빈 파일이 생성됩니다.AUTOEXTEND ON
: SIZE가 가득 찼을 때 자동으로 크기를 확장합니다. (크기는 무한대 확장)AUTOEXTEND ON NEXT 용량
으로 작성하면 지정한 용량 만큼 확장됩니다.MAXSIZE
: 확장되는 최대 크기를 지정합니다.TABLESPACE를 생성해서 각 테이블을 분류하고 관리할 수 있습니다.
.dbf
파일의 위치는 다음과 같은 명령으로 확인해볼 수 있습니다.
SELECT * FROM dba_data_files
빨간 부분에 .dbf 파일 경로가 써있고 해당 위치에 가면 물리적으로 데이터베이스가 저장되어 있음을 확인할 수 있습니다.
실제로 한 번 생성해보겠습니다. sample.dbf
라는 파일이 생성이 되겠죠?실제 물리적 위치에 우리가 만들고자 했던 dbf 파일이 제대로 생성되었음을 확인할 수 있습니다.
https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/CREATE-TABLESPACE.html