시작하며

Mac 환경에서 Oracle DB를 사용해야 하는 상황이 생겼다. Apple Silicon(ARM) 기반 Mac에서는 Oracle의 공식 Docker 이미지가 바로 동작하지 않으므로, x86_64 에뮬레이션을 제공하는 Colima를 함께 사용하는 방법으로 설치를 진행한다. 이번 포스팅에서는 Colima + Docker + DBeaver 조합으로 Oracle XE 11을 로컬에 설치하고 연습용 환경을 구성하는 전 과정을 기록해둔다.

설치 및 환경 구성

1. Colima 설치

brew install colima

2. Docker로 Oracle XE 11 설치

colima start --memory 4 --arch x86_64
 
docker run --name oracle -v ~/Documents/docker_volumes/oracle_db:/u01/app/oracle/oradata \
        -e ORACLE_PASSWORD=lsy1206 -p 1521:1521 -d gvenzl/oracle-xe:11

3. DBeaver로 연결

Host는 localhost, Database는 xe, 포트는 1521을 입력하고 유저네임은 system, 비밀번호는 위에서 옵션으로 준 값을 입력하고 테스트를 한다.

4. Oracle 연습 환경 설정

1) 연습용 테이블 스페이스 생성

CREATE TABLESPACE ORA_SQL_TEST_TS DATAFILE '~\ORA_SQL_TEST\ORA_SQL_TEST.DBA' SIZE 10G
EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;

2) 연습용 사용자 만들기

CREATE USER ORA_SQL_TEST IDENTIFIED BY "your_password" DEFAULT TABLESPACE ORA_SQL_TEST_TS;
 
ALTER USER ORA_SQL_TEST ACCOUNT UNLOCK;
GRANT CONNECT, RESOURCE TO ORA_SQL_TEST;
 
GRANT ALTER SYSTEM TO ORA_SQL_TEST;

아래 GRANT의 경우 권한 문제 발생으로 Docker에 직접 sys 계정으로 접속해 ORA_SQL_TEST에 권한 부여를 진행했다. (VSQL, V_SQL) 판단을 위한 SQL은 아래와 같다.

select table_owner, table_name
from all_synonyms
where synonym_name like 'V$SQL';
 
select object_type
from all_objects
where object_name = 'V_$SQL';
docker exec -it your_container_id /bin/bash
sqlplus /nolog
conn sys/your_password as sysdba

3) 사용자에 권한 부여

GRANT SELECT ON SYS.V_$SQL TO ORA_SQL_TEST;
GRANT SELECT ON V_$SQL_PLAN_STATISTICS_ALL TO ORA_SQL_TEST;
GRANT SELECT ON V_$SQL_PLAN TO ORA_SQL_TEST;
GRANT SELECT ON V_$SESSION TO ORA_SQL_TEST;
GRANT EXECUTE ON DBMS_STATS TO ORA_SQL_TEST;
GRANT SELECT ON DBA_SEGMENTS TO ORA_SQL_TEST;

4) (옵션) Temp 영역 resizing

필요한 경우, temp 영역 사이즈 확인 후 resizing을 진행한다.

SELECT T1.FILE_NAME
        , (T1.BYTES / 1024 / 1024) TMP_MB
FROM DBA_TEMP_FILES T1;
 
ALTER DATABASE TEMPFILE '/u01/app/oracle/oradata/XE/temp.dbf' RESIZE 5000M;

5) 이후 연습용 테이블 스키마 생성 및 데이터 Insert

정리하며

Colima를 통해 x86_64 아키텍처로 Docker 환경을 구성하면 Apple Silicon Mac에서도 Oracle XE 11을 정상적으로 실행할 수 있다. DBeaver로의 연결 및 연습용 테이블 스페이스, 사용자, 권한 설정까지 완료하면 로컬에서 Oracle SQL 학습 환경을 갖출 수 있다. V$SQL 같은 동적 성능 뷰에 접근하려면 sys 계정으로 직접 컨테이너에 접속해 권한을 별도로 부여해야 하는 점을 주의한다.

참고문헌