티스토리 뷰

사용하고 있는 컴퓨터를 기준으로 작성했습니다 : )

[MacBook Pro, macOS High Sierra 10.13.6] 

 

STS와 OracleDB가 설치되어있지 않은 경우 아래의 링크를 참고해주세요 : )

https://clearstar0817.tistory.com/9

 

[Mac] Spring개발의 시작 - STS 설치 및 프로젝트 실행

[코드로 배우는 스프링 웹 프로젝트(개정판) - 구멍가게 코딩단 지음] 위 책을 이용해 스프링 공부를 진행하고 있으며, 해당 책과 관련된 내용이 나올 수 있습니다. spring 프레임워크를 이용해 개발을 할 수 있게..

clearstar0817.tistory.com

https://clearstar0817.tistory.com/10

 

[Mac] oracle-xe-11g & SQL Developer 설치

STS(Spring Tool Suite)에 OracleDB를 연동해서 개발하기 위해 oracle-xe-11g와 SQL Developer를 설치해보겠습니다. 사용하고 있는 컴퓨터를 기준으로 작성했습니다 : ) [MacBook Pro, macOS High Sierra 10.13.6]..

clearstar0817.tistory.com

-

이전 단계에서 docker를 이용해 oracle-xe-11g를 실행할 때

docker run -d -p 49160:22 -p 49161:1521 deepdiver/docker-oracle-xe-11g

위의 도커 명령문으로 오라클을 실행시켰는데

아래의 문제점들이 발생했습니다.

1. sqlplus를 실행시키기 위해서는 이름이 필요하다.

2. 도커를 종료했다가 다시 키면 이전에 실행했던 db관련 정보를 실행할 수 없다.

 

1의 문제는 sqlplus를 실행하기 위해 방법을 찾아보다가 지정된 이름을 통해 도커로 sqlplus를 실행해야 한다는 점을 찾게 되었습니다.

이전의 게시글([Mac] oracle-xe-11g & SQL Developer 설치)에서는 이름을 따로 지정하지 않았지만,

컨테이너 목록을 보여주는 docker ps 명령문을 실행하면
실행 중인 오라클의 맨 오른쪽 항목에 랜덤으로 지정된(컴퓨터마다 다를 수 있음) 이름이 존재합니다.

하지만 랜덤으로 지정된 이름보다는 본인이 사용하기 편한 이름, 어떤 항목인지에 대해 알 수 있는 이름이 좋다고 생각합니다.

2의 문제는 도커를 종료하기 전에 실행했던 내용들, 계정에 접근이 안 되는 문제가 발생해 해결 방법을 찾아봤더니 

도커의 컨테이너는 휘발성(일회성)이라는 특성을 가지고 있다고 합니다.

즉, run을 통해 오라클을 한번 실행하는 동안에만 데이터가 유지되며, 
도커를 종료하게 되면  오라클을 실행하는 동안 작업했던 데이터는 모두 날아가게 됩니다.

 

 

이를 해결하기 위해 오라클을 실행할 때 이름을 지정해주고, 
디렉토리를 설정해 도커가 종료되어도 기존의 작업들이 날아가지 않도록 디렉토리를 지정해주면 됩니다.

docker run --name <사용자 지정 이름> -d -p 49160:22 -p 49161:1521 -v <디렉토리 경로> deepdiver/docker-oracle-xe-11g

위의 도커 명령문으로 오라클을 실행하면 됩니다.

-( 이름 : oracle11gXE, 경로 : desktop/dev/d/oracle11gXE) -
docker run --name oracle11gXE -d -p 49160:22 -p 49161:1521 -v ~/desktop/dev/d/oracle11gXE deepdiver/docker-oracle-xe-11g

오라클을 실행한 후 docker ps명령문을 입력해 컨테이너 목록을 출력해보면 위와 같이 나오게 됩니다. 
터미널의 우측을 보면 이름이 oracle11gXE로 지정된 것을 확인할 수 있습니다.

-

sqlplus 실행 방법

-

1. 먼저 oracle을 실행합니다.

docker start <이름>

-

2. sqlplus를 실행합니다.

docker exec -it <이름> sqlplus

Enter user-name : system
Enter password : oracle

위와 같이 name과 password를 입력하면 되는데,
password는 입력해도 화면에 보이지 않으므로 그냥 입력하고 enter를 누르면 됩니다.

-

이름을 지정한, 현재 동작중인 오라클을 중지하려면 아래의 명령문을 입력하면 됩니다.

 docker stop <이름>

-

지정한 이름을 다른 이름으로 변경, 잘못된 디렉토리 설정 등의 상황에는 
아래의 명령문으로 기존의 컨테이너를 삭제한 후 실행하면 됩니다.

docker rm <이름>

 

-

다음 글에서 본격적으로 STS와 Oracle DB를 연동하도록 하겠습니다.

그럼 이만 뿅🤗!

댓글