사전 준비 사항
사전 준비로 우분투설치 완료.
우분투의 docker 설치 완료.
docker 가 설치 안됐다면 여기 보고 설치 : https://robin-write.tistory.com/21
1. 우분투에 docker 설치
처음엔 virtual box 내에 우분투가 존재 하니해당 우분투에 oracle xe 를 다운 받아서 설치 하려 했다.하지만 요즘 세상은 일일이 다 까는 것보다 docker 로 이미지별 container 에 올리는것이 대세니.대세
robin-write.tistory.com
1. Oracle xe 이미지 다운
Oracle은 공식적으로 Docker 이미지를 제공하지 않지만,
커뮤니티에서 관리하는 이미지를 사용할 수 있습니다.
gvenzl/oracle-xe 이미지는 인기 있는 선택입니다.
docker pull gvenzl/oracle-xe:latest
혹시 명령어 쳐서 permision 어쩌고 하면서 안되면 sudo docker pull gvenzl/oracle-xe:latest 로 해보자.
2. Oracle XE 컨테이너 실행
down 받은 이미지를 실행 한다.
docker run -d \
--name oracle-xe \
-p 1521:1521 -p 5500:5500 \
-e ORACLE_PASSWORD=YourPassword \
gvenzl/oracle-xe:latest
혹시나 낫놓고 ㄱ 자도 모를까봐 어린 중생들을 위해 한 줄 더 쓴다.
아래 처럼 한줄로 쭈욱 써도 된다.
\ <- 줄 바꿈 이스케이프 문자다. 한줄로 쭈~욱 치면 오타를 낼수 있고, 가독성이 떨어지니 '\'을 넣어서 줄을 바꾼것이다.
docker run -d --name oracle-xe -p 1521:1521 -p 5500:5500 -e ORACLE_PASSWORD=YourPassword gvenzl/oracle-xe:latest
- -p 1521:1521: Oracle 데이터베이스 기본 포트.
- -p 5500:5500: Oracle 관리 포트.
- -e ORACLE_PASSWORD=YourPassword: 데이터베이스 관리자 계정 SYS 및 SYSTEM의 비밀번호.
명령어 치고 나서 process 가 잘 도는지는 docker ps 로 확인하면 아래처럼 나온다.

3. 우분투 안에서 sqlplus 로 접속 해 보기
docker exec -it oracle-xe bash
sqlplus sys/YourPassword@localhost/XEPDB1 as sysdba
docker exec -it oracle-xe bash < -- 이게 머냐면,
docker에서 (docker)
명령어를 실행할건데(exec)
상호작용 하는 터미널로다가 (-it)
oracle-xe 란 컨테이너에서 (oracle-xe)
bash shell을 실행 할거야 ( bash) 란 의미다.
공부하면 궁금했다. 꼭 container 이름을 지정해야 하는가?
학습할때는 Oraclexe 이미지를 가진 container 하나 띄웠으니 상관 없지만
사실 docker는 동시에 여러개의 container를 실행 할수 있어서 내가 명령어를 수행할 docker conatiner 이름을
꼭 명시해줘야 한다.

갑자기 궁금
docker 이미지 실행시,
docker run -d xxx 에서
오라클이름으로 XEPDB1를 주지 않았는데 왜 sqlplus에서 명령어 실행시 XEPDB1 라고 이름을 주는가?
Oracle XE Docker 이미지를 사용할 때, XEPDB1이 등장하는 이유는 Oracle XE 컨테이너가 기본적으로
플러그블 데이터베이스(PDB) 구조를 제공하며, 이 구조에서 기본적으로 생성되는 PDB의 이름이 **XEPDB1**으로 설정되어 있기 때문입니다.
이는 Docker 이미지의 기본 설정값으로, 사용자가 별도로 지정하지 않는 한 자동으로 적용됩니다.
Oracle의 컨테이너 데이터베이스(CDB)와 플러그블 데이터베이스(PDB) 구조
Oracle Database 12c 이후부터는 멀티테넌트 아키텍처를 기본으로 채택하고 있습니다. 이 구조에는 다음과 같은 두 가지 주요 구성 요소가 있습니다:
- CDB (Container Database): 데이터베이스의 컨테이너 역할을 하는 상위 데이터베이스.
- PDB (Pluggable Database): 애플리케이션 데이터가 저장되는 독립적인 데이터베이스.
Docker로 배포되는 Oracle XE 이미지는 기본적으로 하나의 CDB와 하나의 PDB를 생성하며, PDB의 기본 이름이 **XEPDB1**입니다.
그럼 내가 XEPDB1 을 쓰고 싶지 않으면 어찌 하지????
예를 들어 MY_PDB로 쓰고 싶다면??
그러면 아래처럼 하고 SQLPLUS 접속도 아래처럼..
docker run -d \
--name oracle-xe \
-p 1521:1521 -p 5500:5500 \
-e ORACLE_PASSWORD=YourPassword \
-e ORACLE_PDB=MY_PDB \
gvenzl/oracle-xe:latest
sqlplus sys/YourPassword@localhost/MY_PDB as sysdba
4. 난 local pc 에서 virtual 머신 내 우분투로 sql을 날리고 싶은데 이때는 어찌 하지?
난 window 머신에 오라클이 이미 설치 되어 있다.
virtualbox 내 우분투 안에 docker가 돌고 docker는 1521 port 를 쓴다
local pc 에서 docker 로 붙기 위해 추가로 port fowarding을 등록 해야 한다.
2222->22는 local에서 ssh 접속용.
1521-> 1521 로 못하는 이유는 local 에 깔린 oracle에서 이미 1521을 쓰기 때문이다.


'SI 업무 > linux' 카테고리의 다른 글
| 리눅스 용량 확인 (1) | 2024.12.08 |
|---|---|
| Postman 설치법 (0) | 2024.11.23 |
| 3. docker 내 oracle-xe 를 재 구동 시키지 못해서 삽질. (1) | 2024.11.19 |
| 1. 우분투에 docker 설치 (1) | 2024.11.17 |
| 0. 로컬 pc에서 virtualbox 내 linux 에 접속이 안될때 (2) | 2024.11.16 |