Be Coder
Oracle Database 18c XE 설치(Docker) 본문
맥에서는 Docker를 이용해, Oracle Database 18c XE 설치해야한다는 걸 알았음.
구글링하면서, 설치하고 지우고 하면서, 2일 날린듯.
환경설정부터, SQL Developer까지 연동 & 구동하는데 혹여 나중에 까먹을까봐 기록.
1. 우선 Docker를 설치하고, 리눅스 파일 다운.
oracle-database-xe-18c-1.0-1.x86_64.rpm 다운받으면 된다.
그리고, Docker를 설치하면, docker-images 폴더가 생김.
2. 오라클에서 자신들의 서비스 이용을 위해 docker-images폴더를 제공한다.
https://github.com/oracle/docker-images 에서 clone 혹은 다운로드.
그리고, Docker-images 폴더 내에서 18c EX 설치를 위해 해당 경로 폴더들을 바꿔준다.
XE 버전을 Docker image로 만들기 위해서, 처음 다운받은 rpm파일(대략 2~3기가)을 18.4.0폴더에 넣어준다.
그 후, 터미널에서 폴더 이동,
cd docker-images/OracleDatabase/SingleInstance/dockerfiles
이후,
./buildDockerImage.sh -v 18.4.0 -x
를 치면 이미지 생성이 시작된다.
-v 파라메터는 18.4.0 버전 이미지를 만든다는 의미이고, -x 옵션은 XE 인스턴스를 사용한 이미지를 생성한다는 것.
이 후, 조금 시간이 걸려서 이미지 생성이 완료된다.
3. 완료 후, 터미널에서 다음과 같이 설정을 해준다.
$ docker run --name 붙일 이름 \
-d \
-p 51521:1521 \
-p 55500:5500 \
-e ORACLE_PWD=하고싶은 비밀번호(1234추천) \
-e ORACLE_CHARACTERSET=AL32UTF8 \
oracle/database:18.4.0-xe
각 커맨드의 의미는
1) --name 붙일이름 : 컨테이너의 이름을 명시한다. 이름을 명시하지 않으면, 도커에서 랜덤으로 이름을 줘버린다.
2) -d : 컨테이너를 백그라운드 모드로 구동
3) -p 51521:1521 and -p 55500:5500 : 컨테이너 port와 host 맵핑. 1521, 5500이 아마 기본이고, 앞 포트번호는 자유.
4) -e ORACLE_PWD=비밀번호 and -e ORACLE_CHARACTERSET=AL32UTF8 : 환경 변수 set. 비밀번호는 관리자 비밀번호를 의미하고, 캐릭터셋은 DB의 표준 설정.
나는 xedb라고 컨테이너 이름 주고, 관리자 비밀번호는 1234로 설정. Docker를 실행해보면 컨테이너가 나옴.
4. 도커에 잘 생성되었는지 확인
$ docker ps
하면 아마 컨테이너 아이디 옆 IMAGE에 oracle/database:18.4.0-xe 가 있을 것.
5. 이제 sqlplus에 접속 해보기.
docker images
를 치면 밑처럼 나온다.
그리고 sqlplus를 켜본다.
docker exec -it --user=oracle xedb bash
입력하면, 밑처럼 sqlplus 접속이 된다.
해당 user-name에는 무조건 대문자로 SYSTEM해야된다. 그리고 3번에서 입력한 비밀번호로 접속완료.
구글링하면 user-name에 sysdba, sys, system 등 다양하게 치고 접속하던데, 대다수 구글링 정보는 예전 버전기준이라 대소문자 구분이 없었다고한다. 이거때문에 엄청 해멨음.
(이 후에는 create user 생성유저 identified by 비밀번호; 로 실습할 계정 생성.
그리고 grant resource, connect to 생성유저; 로 권한 부여.)
6. SQL Developer를 다운받는다.
https://www.oracle.com/tools/downloads/sqldev-downloads.html
오라클 가서 받으면 된다. 다운 받고, 실행했을때, 본인 맥의 JDK가 지원이 안되면, 경고메시지 띄우는데, 이 메시지보면 그냥 JDK 업데이트 해주면된다. 안해주면 오류범벅뜬다. SQL Developer받을때, 옆에 지원 JDK링크있으니, 경고뜨면 그 링크타고 가서 다운받으면 된다.
7. 실행 후, 왼쪽 상단의 초록색 +버튼 누르고 연동하면된다.
여기서 이름은 그냥 본인이 붙이고 싶은거 붙이면 된다.
사용자이름은 SYSTEM, 비밀번호는 자신이 설정했던 것.
그리고 세부정보에서 포트는 2번에 도커켜먼 컨테이너 정보나오는데, 거기 있는 포트번호 입력.
이후, 테스트버튼 눌러서 성공뜨면, 그냥 접속버튼 누르면 DB 생성된다.
여기서 한 가지, 더 해맨 것은 테스트버튼 눌렀을 때,
Locale not recognized 라고 뜨는 경우가 있는데, MacOS Sierra 이상의 버전일 경우 나타날 수 있다고 한다.
이런 경우에는 [시스템 환경설정] -> [언어 및 지역] 에서
[지역 : 대한민국]을 [지역 : 다른 나라]로 바꿨다가 [지역 : 대한민국]으로 다시 바꾼 후,
기존에 실행하고 있던 SQLDeveloper를 종료한 후 다시 실행해서 다시 다 채워넣으면 된다.
Success뜨면 SQL Developer까지 연동 끝.
나중에 알았는데, Docker에서 컨테이너 정보보면 비밀번호, SID, port정보 다 있다. 첨에 3번 빼먹어서 큰 일난줄알고 밀었었는데, 그냥 컨테이너 정보보고 sqlplus랑 SQL Developer접속했으면 더 빨리 끝났을듯..... 그래도 관리자 계정 대소문자구분은 어쩔 수 없었겠지만.
다음은 참고한 사이트들
도커 - http://blog.naver.com/complusblog/220979998005
참고 : 18c 버전
https://blogs.oracle.com/oraclemagazine/deliver-oracle-database-18c-express-edition-in-containers
https://www.petefreitag.com/item/886.cfm
https://emflant.tistory.com/237
참고 : 11~12c버전
https://romeoh.tistory.com/entry/Docker-Docker-compose-설정