소리소문 없이... 사랑도 명예도 이름도 남김 없이...
DexCore.net

Docker

[Docker] 윈도우에 도커로 ORACLE 설치하고 접속하기

탑~! 2025. 2. 19. 11:19

1. 도커 컴포즈 파일 작성하기

ORACLE은 아래와 같은 설정으로 docker-compose.yml 파일을 작성할 수 있다.

services:
  oracle21c:
    image: gvenzl/oracle-xe:latest
    restart: always
    container_name: oracle21c
    ports:
      - 1521:1521
      - 5500:5500
    volumes:
      - ./db/oracle/data:/opt/oracle/oradata
    environment:
      ORACLE_PASSWORD: developer123!@
      TZ: Asia/Seoul
    privileged: true
  • image => 도커 허브 gvenzl/oracle-xe 사이트 참조
  • restart는 오류 발생 시 재시작 여부 또는 첫 부팅 시 자동 실행 여부. Docker 시작될 시에 컨테이너가 자동으로 시작되게 하고 싶으면(컴퓨터를 켜고 docker를 실행만 하면 ORACLE을 쓰게 하고 싶으면 always를 넣자)
  • container_name 원하는 이름으로 설정
  • port 설정

- 1521:1521 => ORACLE 기본 포트 번호

- 5500:5500 => ORACLE를 관리하기 위한 웹 접속 포트 번호

  • volumes => 컨테이너 내부 데이터를 디스크와 공유하기 위해 volume 설정
  • 그 외 필요한 environment(환경 변수) 설정

- ORACLE_PASSWORD : ORACLE 접속 암호

- TZ : 도커 컨테이너 타임존 설정

  • privileged => 기본적으로는 Unprivileged 모드로 실행되며, 이 모드에서는 시스템 주요 자원에 접근할 수 있는 권한이 부족하여, 특정 시스템 자원에 접근하기 위해 privileged을 true로 설정

2. 도커 컨테이너 생성하기

① 바탕화면 또는 시작 메뉴에 Docker Desktop 링크를 클릭해 Docker Desktop을 실행한다.

② 터미널에서 docker-compose_oracle.yml 파일이 있는 위치로 이동하여 아래와 같은 명령어를 실행한다.

PS E:\Docker> docker-compose -p db -f docker-compose_oracle.yml up -d

③ 해당 컨테이너가 제대로 생성되었는지 아래와 같은 명령어로 컨테이너 목록을 확인한다.

PS E:\Docker> docker ps

④ 열려진 포트 확인

PS E:\docker> netstat -ano | findstr -i "1521 5500"

⑤ Docker Desktop에서 실행 중인 것을 확인할 수 있다.

3. ORACLE SQL Developer를 통해 접속 확인

(1) 오라클 사용자 생성

① 터미널에서 아래 명령어를 이용하여 오라클 컨테이너 shell 환경 root 권한으로 sqlplus을 실행하여 관리자 계정으로 오라클 접속

PS E:\docker> docker exec -u root -it oracle21c sqlplus
......................................................
Enter user-name: system
Enter password:
......................................................
Last Successful login time: Tue Jul 02 2024 17:29:23 +09:00
......................................................
SQL>

② 사용자 생성

SQL> CREATE USER developer IDENTIFIED BY "developer123!@";

③ 사용자 권한 부여

SQL> GRANT CONNECT, RESOURCE, DBA TO developer;

- CONNECT : 사용자가 데이터베이스에 접속 가능하도록 하기 위해 다음과 같이 가장 기본적인 시스템 권한 8가지를 묶어 놓았습니다.

(ALTER SESSION, CREATE CLUSTER, CREATE DATABASE LINK, CREATE SEQUENCE, CREATE SESSION, CREATE SYNONYM, CREATE TABLE, CREATE VIEW)

- RESOURCE : 사용자 객체(테이블, 뷰, 인덱스)를 생성할 수 있도록 하기위해서 시스템 권한을 묶어 놓았습니다.

(CREATE CLUSTER, CREATE PROCEDURE, CREATE SEQUENCE, CREATE TABLE, CREATE TRIGGER)

- DBA : 사용자들이 소유한 데이터베이스를 관리하고 사용자들을 작성하고 변경하고 제거할 수 있도록 하는 모든 권한을 가집니다.

(2) SQL Developer를 통해 접속 확인

① 오라클 db 접속용 프로그램을 다운로드한다.

- Oracle SQL Developer Downloads

본인 OS 환경에 맞는 플랫폼을 찾아 동의 후 압축파일을 다운로드해 준다.

이미 로그인이 되어있다면 바로 파일이 다운로드해지고, 비로그인 상태에서 다운을 클릭하여 로그인 페이지로 이동되어 로그인(회원가입) 후 파일이 받아진다.

② 압축파일을 경로를 지정하여 압축을 푼 다음, 압축 푼 파일에서 sqldeveloper.exe 실행파일을 클릭하여 실행한다.

③ 위에서 생성한 사용자 접속 정보를 넣은 후에 테스트 -> 접속을 시도한다.

④ 정상적으로 진행이 잘 되었다면 아래 사진처럼 접속이 완료

- 쿼리 분석기에서 아래 쿼리로 버전 확인

SELECT * FROM PRODUCT_COMPONENT_VERSION;

- 쿼리 분석기에서 아래 쿼리로 해당 유저에게 부여된 시스템 권한 확인

SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = 'DEVELOPER';

- 쿼리 분석기에서 아래 쿼리로 해당 유저에게 부여된 롤(권한 집합) 확인

SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE = 'DEVELOPER';

- 쿼리 분석기에서 아래 쿼리로 현재 타임존, 일시 확인

SELECT SESSIONTIMEZONE AS "CUR_TIMEZONE", TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS') AS "CUR_DATETIME" FROM DUAL;
728x90
반응형