3 분 소요

Oracle 설치 (with Colima)

이 글이 글을 참고했다.

Apple Silicon에서는 아키텍처가 바뀌어서 orcale 데이터베이스를 띄울 수 없었다.
관련 정보를 찾아가며 시도 해봤지만 sqlplus 접속 시 사용자 이름과 password를 입력하는 단계에서 계속
ORA-01034: ORACLE not available, ORA-27101: shared memory realm does not exist 라는 오류를 만났다.

몇 시간의 삽질 끝에 방법을 찾았다..!
오픈 소스 컨테이너 런타임인 Colima를 사용해 oci-oracle-xe 이미지를 x86/64 환경으로 띄운다면,
M1 맥북에서도 오라클 데이터베이스를 띄울 수 있다고 한다!

맥북에서 Docker로 oracle DB 설치 (colima 사용)

docker가 아직 설치되어 있지 않다면 설치하고,
기존에 이미 설치되어있다면 실행중인 Docker desktop을 종료만 하고 아래의 Colima 실행으로 넘어가자.
(나는 이미 설치되어 있었기 때문에 아래 사진처럼 Docker desktop만 Quit 했다.)
스크린샷 2023-04-20 오후 3 36 32

# colima 설치
$ brew install colima

# colima를 x86_64 환경으로 실행 (Colima를 사용하지 않고 Docker Desktop 환경에서는 oci-oracle-xe 이미지로 컨테이너를 띄웠을 때 아키텍처가 달라 문제가 되었었는데, 그걸 Colima가 해결 해 줍니다.)
$ colima start --memory 4 --arch x86_64

# 오라클 컨테이너 구동 (비밀번호는 원하는걸로 설정)
# $ docker run --restart unless-stopped --name oracle -e ORACLE_PASSWORD=pass -p 1521:1521 -d jaspeen/oracle-xe-11g
# 위에 커맨드로 하니까 sql developer에서 password를 oracle로 해야지 성공한다...
$ docker run --restart unless-stopped --name oracle -e ORACLE_PASSWORD=pass -p 1521:1521 -d gvenzl/oracle-xe

# 실행 결과 및 로그 확인
$ docker ps -a
$ docker logs -f oracle

실행중
스크린샷 2023-04-20 오후 3 22 21

성공 화면
스크린샷 2023-04-20 오후 3 22 31

Trouble Shooting

원래는 colima를 이용하지 않고 docker compose만 이용해 구동하려 했다. (결론적으로는 실패했다..!ㅜ)

docker compose 참고

docker-compose.yml

version: '2'
services:
  database:
    container_name: oracle
    platform: linux/amd64
    # shm_size: 1G
    image: jaspeen/oracle-xe-11g
    # image: oracle/database:11.2.0.2-xe
    # environment:
    #   - ORACLE_SID=xe
      # - ORACLE_PDB=test
      # - ORACLE_PWD=test
    # volumes:
    #   - ./oracle/oradata:/opt/oracle/oradata # persistent oracle database data.
    #   - ./data-bridge:/data-bridge # just to have someplace to put data into the running container if needed
    #   - ./initscripts:/u01/app/oracle/scripts/startup # please here init scripts
    ports:
      - 1521:1521
      - 8080:8080
      # - 5500:5500
    networks:
      - dev
networks:
  dev:
    driver: bridge

그리고 아래 커맨드를 순서대로 실행했다.

$ docker-compose up -d
$ docker ps -a # 여기까지는 oracle 컨테이너 정상 구동
$ docker exec -it oracle sqlplus # 에러 발생

스크린샷 2023-04-20 오후 2 26 38
하지만 계속해서 위와 같은 에러가 발생했다..
에러를 해결하기 위해서 startup을 하면 된다고 해서 아래처럼 시도해보았다.

$ docker exec -it oracle bin/bash
root@c3acdb41c5f6:/# sqlplus /nolog
SQL> conn sys/ as sysdba # Enter password가 나오면 oracle 입력
SQL> startup

하지만 startup을 입력하니 ORA-00443: background process "PMON" did not start라는 또다른 에러가 발생하여 다른 방법을 찾기로 했다ㅜ

SQL Developer 설치

이 글이 글을 참고했다.

SQL Developer란?

SQL Developer는 Oracle에서 무료로 제공하는 GUI툴이다.
(콘솔에서 직접 데이터베이스를 관리하는 것이 아닌 프로그램을 통해서 쉽게 데이터베이스를 관리할 수 있도록 하는 것이다.)

설치

홈페이지에서 OS에 맞는 오라클을 다운로드한다.

스크린샷 2023-04-20 오후 3 17 09

연결테스트

위에서 설치한 SQL Developer를 실행한 뒤 연결을 테스트해보자.
스크린샷 2023-04-20 오후 3 26 01

  • Name은 원하는 이름
  • 사용자 이름은 system
  • 비밀번호는 pass (아까 위에서 옵션으로 준 값)
  • SID는 xe


스크린샷 2023-04-20 오후 3 26 58
테스트 버튼을 누르면 성공이라고 뜬다!
그리고 접속 버튼을 누르면 아래처럼 실행된다.
스크린샷 2023-04-20 오후 3 28 44

샘플 데이터 수동 설치 - HR Schema

이 글을 참고했다.

현재 오라클을 docker로 구동중이다.
스크린샷 2023-04-20 오후 3 53 53

sql plus를 실행하여 샘플 데이터를 설치하자.

샘플 데이터 다운

$ docker exec -it oracle sqlplus # oracle 자리에는 컨테이넝 이름
# user-name은 sys as sysdba, password는 그냥 엔터 (user-name은 system, password는 pass 도 가능하다!)

# 유저 생성 가능 (강의 14:00)
SQL> alter session set "_ORACLE_SCRIPT"=true;
SQL> @?/demo/schema/human_resources/hr_main.sql
# 1의 값: hr
# 2의 값: users
# 3의 값: temp
# 4의 값: /product/21c/dbhomeXE/demo/schema/log/

=====

docker compose 이용

docker exec -it oracle /bin/bash

product/21c/dbhomeXE/demo/schema/ -> 이 안에 log 존재
하지만 human_resoures가 없다!!

이를 해결하기 위해 로컬에서 샘플 코드를 따로 다운받은 후,
Dockerfile을 통해 컨테이너 내부로 옮기고자 했다.

전체 디렉터리 구조는 아래와 같다.

docker-files
⎿ oracle
 ⎿ docker-compose.yml
 ⎿ Dockerfile
 ⎿ db-sample-schemas-19.2

docker-compose.yml

version: '2'
services:
  database:
    build:
      context: ./oracle/
      dockerfile: Dockerfile
    container_name: oracle
    platform: linux/amd64
    # image: gvenzl/oracle-xe
    restart: always
    environment:
      - ORACLE_PASSWORD=pass
    ports:
      - 1521:1521
    networks:
      - dev
networks:
  dev:
    driver: bridge

Dockerfile

FROM gvenzl/oracle-xe
ADD db-sample-schemas-19.2/human_resources $HOME/product/21c/dbhomeXE/demo/schema/human_resources

db-sample-schemas-19.2는 샘플 데이터들이 담긴 디렉토리이다.
샘플 데이터는 여기서 받을 수 있다.
스크린샷 2023-04-20 오후 5 50 43



💛 개인 공부 기록용 블로그입니다. 👻

맨 위로 이동하기