docker - OracleXE 컨테이너 실행
이전(mssql, postgers, mysql)까지의 DB들이 공식 이미지를 제공했던 반면, Oracle의 경우에는 아쉽게도 직접 만드는 방법은 소개해도,
Deliver Oracle Database 18c Express Edition in Containers
; https://blogs.oracle.com/oraclemagazine/deliver-oracle-database-18c-express-edition-in-containers
Oracle Database on Docker
; https://github.com/oracle/docker-images/tree/master/OracleDatabase/SingleInstance
docker hub를 통한 이미지는 제공하지 않습니다. 그래서 개인들이 제작해 올린 것들을 믿고 사용해야 하는데 (또는 직접 제작하거나) 이 글에서는 다음의 이미지를 사용해 보겠습니다.
oracleinanutshell/oracle-xe-11g
; https://hub.docker.com/r/oracleinanutshell/oracle-xe-11g
docker pull oracleinanutshell/oracle-xe-11g
docker run -p 1521:1521 oracleinanutshell/oracle-xe-11g
docker run --name oraclexe1 -d -p 1521:1521 oracleinanutshell/oracle-xe-11g
docker run --name oraclexe1 -d -p 1521:1521 --restart=always oracleinanutshell/oracle-xe-11g
실행 시 출력도 매우 단순합니다.
Starting Oracle Net Listener.
Starting Oracle Database 11g Express Edition instance.
(위의 메시지가 나와도 시스템 성능에 따라 초기화까지 더 기다려야 합니다.)
(
oracle-xe-11g 컨테이너 페이지에 보면 원격 연결을 위해 "ORACLE_ALLOW_REMOTE" 환경 변수를 설정해야 한다고 하는데 실제로는 굳이 설정하지 않아도 원격 연결이 가능했습니다.)
이후 오라클이 배포하는 "
SQL Developer" 등의 도구를 이용해,
SQL Developer 19.4 Downloads
; https://www.oracle.com/tools/downloads/sqldev-downloads.html
편안하게 DB 구성을 하시면 됩니다. 기본적으로 인증 정보는 "system" 계정에 대해 동일하게 비밀번호가 "oracle"이므로 연결 정보를 다음과 같은 식으로 입력하면 됩니다.
hostname: localhost
port: 1521
sid: xe
username: system
password: oracle
(hr 계정은 system으로 로그인 후 "ALTER USER hr IDENTIFIED BY hr2 ACCOUNT UNLOCK;" 등의 명령어로 해제할 수 있습니다.)
oracle-xe-11g 컨테이너 페이지에 보면 apex 기능이 8080 포트로 제공되는 듯한데,
For APEX user:
docker run --name oraclexe1 -p 1521:1521 -p 8080:8080 oracleinanutshell/oracle-xe-11g
# Login http://localhost:8080/apex/apex_admin with following credential:
username: ADMIN
password: admin
재미있는 것은, IE 웹 브라우저로 접속하는 경우에는 동작을 잘 하는 반면, Chrome 브라우저로 접속하면 다음과 같이,
별도의 "로그인" 창이 뜨면서 지정된 "ADMIN" / "admin" 계정을 입력해도 인증이 안 됩니다. ^^; 암튼 IE로 "Admin" / "admin"을 입력해 들어가면 기본 비밀번호를 바꾼 후 다시 "http://localhost:8080/apex/apex_admin" 페이지를 방문하면
예의 그 화면으로 넘어갑니다. 이후의 동작은 다음의 글을 참고하시고.
.NET 응용 프로그램에서 Oracle XE 사용
; https://www.sysnet.pe.kr/2/0/821
.NET 응용 프로그램에서 Oracle XE 11g 사용
; https://www.sysnet.pe.kr/2/0/1316
ODP.NET의 완전한 닷넷 버전 Oracle ODP.NET, Managed Driver
; https://www.sysnet.pe.kr/2/0/10928
데이터 유지를 위한 볼륨 지정이 딱히 공개되지 않아서 예측을 해야 하는데요. /u01/app/oracle에 매핑하면,
docker run --name oraclexe1 -p 1521:1521 -v oracle11g_root:/u01/app/oracle oracleinanutshell/oracle-xe-11g
[DockerDesktopVM의 파일 시스템 접근]
/ # find / -name oracle11g_root
/host/var/lib/docker/volumes/oracle11g_root
그래도 잘 동작은 했습니다. (더 좋은 매핑 방식을 아는 분은 덧글 부탁드립니다. ^^)
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]