Oracle / 테이블 스페이스 생성, 계정 생성, 권한 부여하기
전 포스트에서 Mac OS M칩에 Oracle DB 설치하는 글을 올렸다.
오늘은 그 이후에 테이블 스페이스 생성부터 계정 생성, 권한 부여까지 할 것이다.
1. 테이블 스페이스 생성
테이블 스페이스는 데이터를 저장하는 저장소이다. 기본 테이블 스페이스를 사용해도 되지만 용도, 복구 및 백업, 보안, 데이터의 용량 증가 등 각 요구에 맞게 생성하고 관리하는 게 맞다.
- 테이블 스페이스 종류
PERMANENT | 일반적인 데이터 저장 (테이블, 뷰, 인덱스 등) |
UNDO | 트랜잭션 롤백을 위한 데이터 정보 저장 (변경 내역, 이전 값) |
TEMPORARY | 임시 데이터 저장 (연산, 정렬 등) |
1-1. PERMANENT 테이블 스페이스 생성
CREATE TABLESPACE shared_data
DATAFILE '/u01/app/oracle/oradata/shared_data.dbf'
SIZE 100M
AUTOEXTEND ON NEXT 10M
MAXSIZE UNLIMITED;
1-2. TEMPORARY 테이블 스페이스 생성
CREATE TEMPORARY TABLESPACE temp_data
TEMPFILE '/u01/app/oracle/oradata/temp_data.dbf'
SIZE 50M
AUTOEXTEND ON NEXT 10M
MAXSIZE UNLIMITED;
DATEFILE ,TEMPFILE [경로] | 저장되는 파일의 경로와 이름 설정 Docker 컨테이너 내 DB 데이터 저장 위치 경로는 '/u01/app/oracle/oradata/' 이다. |
SIZE [크기] | 초기 생성 크기 설정 기본값 : 20MB |
AUTOEXTEND ON NEXT [크기] | 공간이 부족할 경우 자동으로 늘어나는 크기 설정 기본값 : OFF |
MAXSIZE [크기] | 크기 제한 설정 기본값 : UNLIMITED |
- 테이블스페이스 목록 보기
SELECT TABLESPACE_NAME
FROM DBA_TABLESPACES;
위 사진과 같이 테이블 스페이스가 생성된 게 보인다.
2. 계정 생성 및 권한 부여
2-1. 계정 생성
CREATE USER [USERNAME]
IDENTIFIED BY [PASSWORD]
DEFAULT TABLESPACE shared_data
TEMPORARY TABLESPACE temp_data;
위와 같이 본인이 사용할 USERNAME과 PASSWORD를 넣고 SQL문을 작성해 준다. 테이블 스페이스는 위에서 생성한 테이블 스페이스를 기본값으로 설정해 줬다.
2-2. 계정 데이터베이스 권한 부여
GRANT RESOURCE, CONNECT TO [USERNAME]
CONNECT : 데이터베이스 접속 권한 부여
RESOURCE : 테이블, 프로시저, 타입 등 권한 부여
여기까지 진행했으면 Oracle DB 기본 계정 생성과 권한 부여가 완료되었다.
왜? MySQL과 다르게 Oracle은 계정 생성이 필수인가?
항상 팀 프로젝트 할 때 MySQL을 사용할 때 root 계정으로 모든 작업을 다했다. 하지만 Oracle은 다르다.
MySQL root 계정과 Oracle의 sys 계정은 같은 데이터베이스 관리자 계정이지만, sys은 root와 다르게 엄격하다.
MySQL은 독립적인 스키마로 동작하여 테이블 CRUD 작업해도 큰 문제없지만, Oracle은 단일 데이터베이스 내에 모든 스키마(시스템 포함)가 존재하여 sys계정에서의 실수는 치명적이다. 그래서 Oracle은 스키마=사용자 개념이 강하게 연결되어 있어서 계정 생성은 필수다.
물론 MySQL도 계정을 생성해야하지만 Oracle처럼 엄격하지 않다.