본문 바로가기
Server/Docker

[Docker] 도커 컨테이너를 위한 오라클 21c

by Youngs_ 2022. 5. 16.

 

oracle21c-mercer

Oracle 21c를 실행하기 위한 도커

배경

얼마 전 오라클은 컨테이너 데이터베이스(CDB)와 플러그형 데이터베이스(PDB)의 개념을 도입했다.컨테이너는 멀티 테넌시(Multi-tenancy)에 사용되며 플러그형 데이터베이스를 포함한다.플러그형 데이터베이스는 아마도 자주 사용하는 데이터베이스로, 사용자가 직접 연결할 수 있는 데이터베이스일 것이다.기본적으로 이 이미지는 하나의 CDB와 해당 CDB 내에 하나의 PDB를 생성한다.

Oracle은 SID에서 벗어나 서비스 이름을 대신 사용하고 있다는 점에 유의하십시오.PDB는 서비스 이름을 사용하고 CDB는 SID를 사용한다.그러나 CDB의 사용자 이름은 C##, 즉 C##STEVE로 시작해야 한다.그래서 간단히 말하자면, 우리는 단지 단일 PDB를 사용하는 것에 초점을 맞추고 있다.

이러한 도커 이미지를 구축하기 위해 독립 실행형 저장소를 유지 관리했었습니다. 예를 들어, Oracle 12cR2처럼, https://github.com/steveswinsburg/oracle12c-docker

Oracle 커뮤니티 기여(일부 광산)를 통해 Official docker 이미지는 현재 상태가 양호하므로, 우리에게 필요한 것은 단순화된 지침뿐입니다 🥳

시작하기 전에

  1. 클론https://github.com/oracle/docker-images.
  2. Oracle Database 21c 이진 다운로드LINUX.X64_213000_db_home.ziphttps://www.oracle.com/database/technologies/oracle21c-linux-downloads.html에서
  3. 지퍼를 안에 넣으세요.OracleDatabase/SingleInstance/dockerfiles/21.3.0전화번호부압축을 풀지 마십시오.
  4. 도커 데스크톱에서 충분한 양의 메모리가 할당되어 있는지 확인하십시오.이 지침을 따르면 전체 메모리가 4000MB로 설정되므로 Docker의 값이 이보다 높은지 확인하십시오.

빌딩

cd OracleDatabase/SingleInstance/dockerfiles
./buildContainerImage.sh -v 21.3.0 -e

공간이 부족하여 빌드에 실패하는 경우, 디스크에서 사용할 수 있는 공간과 도커가 사용할 수 있는 공간을 확인하십시오.정상인 경우 다음을 통해 이전 도커 이미지를 제거하십시오.yes | docker image prune > /dev/null

달리기

적절한 기본값을 사용하려면:

docker run \
--name oracle21c \
-p 1521:1521 \
-p 5500:5500 \
-e ORACLE_PDB=orcl \
-e ORACLE_PWD=password \
-e INIT_SGA_SIZE=3000 \
-e INIT_PGA_SIZE=1000 \
-v /opt/oracle/oradata \
-d \
oracle/database:21.3.0-ee

첫 번째 실행 시, 데이터베이스가 생성되고 당신을 위해 설정된다.이것은 약 10분에서 15분 정도 걸릴 것이다.도커 대시보드를 열고 진행 상황을 확인하십시오.그러면 연결될 수 있다.

선택적으로 다음 실행 명령을 사용하여 로컬 컴퓨터에 추가 디렉터리를 마운트할 수 있으며, 이 명령을 사용하면 점점 더 많은 데이터를 데이터베이스에 삽입할 때 "디스크 공간 없음" 문제가 발생하지 않도록 할 수 있다.-v 명령을 시스템에 맞게 설정하십시오.

docker run \
--name oracle21c \
-p 1521:1521 -p 5500:5500 \
-e ORACLE_PDB=orcl \
-e ORACLE_PWD=password \
-e INIT_SGA_SIZE=3000 \
-e INIT_PGA_SIZE=1000 \
-v /path/to/store/db/files/:/opt/oracle/oradata \
-d \
oracle/database:21.3.0-ee

배열

   --name:        The name of the container (default: auto generated)
   -p:            The port mapping of the host port to the container port.
                  Two ports are exposed: 1521 (Oracle Listener), 5500 (OEM Express)
   -e ORACLE_SID: The Oracle Database SID that should be used (default: ORCLCDB)
   -e ORACLE_PDB: The Oracle Database Service Name that should be used (default: ORCLPDB1)
   -e ORACLE_PWD: The Oracle Database SYS password (default: auto generated)
   -e INIT_SGA_SIZE: The total memory in MB that should be used for all SGA components. If you bump the memory settings up too much you might need to change your Docker settings to allocate more memory to Docker (optional and if not specified will be auto calculated)
   -e INIT_PGA_SIZE: The target aggregate PGA memory in MB that should be used for all server processes attached to the instance. If you bump this and INIT_SGA_SIZE up to much, you might need to change your Docker settings to allocate more memory to Docker (optional and if not specified will be auto calculated)
   -e ORACLE_CHARACTERSET: The character set to use when creating the database (default: AL32UTF8)
   -v /opt/oracle/oradata
                  The data volume to use for the database.
                  Has to be writable by the Unix "oracle" (uid: 54321) user inside the container!
                  If omitted the database will not be persisted over container recreation.
   -v /path/to/store/db/files/:/opt/oracle/oradata
                  Mount the data volume into one of your local folders.
                  If omitted you might run into a "No disk space" issue at some point as your database keeps growing and docker does not resize its volume.
   -d:            Run in detached mode. You definitely want this, otherwise `Ctrl-C` will kill the container.

Oracle에 연결

컨테이너가 시작되면 다른 데이터베이스처럼 컨테이너에 연결할 수 있다.사용 중인 참고 사항Service NamePDB가 서비스 이름을 사용하기 때문에 SID가 아니다.

예를 들어 SQL Developer:

Hostname: localhost
Port: 1521
Service Name: orcl
Username: sys
Password: password
Role: AS SYSDBA

암호 변경

참고: 설정하지 않은 경우ORACLE_PWD매개 변수, 암호의 도커 실행 출력을 확인하십시오.

SYS 계정의 암호는 다음을 통해 변경할 수 있다.docker exec명령하다컨테이너가 실행 중이어야 함:

1차 주행docker ps컨테이너 ID를 얻기 위해.그런 다음 다음을 실행하십시오.docker exec <container id> ./setPassword.sh <new password>

용기에 셸을 넣는 중

1차 주행docker ps컨테이너 ID를 얻기 위해.그런 다음 다음을 실행하십시오.docker exec -it <container id> /bin/bash

또는 루트로: docker exec -u 0 -it <container id> /bin/bash

 


출처 : https://github.com/steveswinsburg/oracle21c-docker

 

'Server > Docker' 카테고리의 다른 글

[Docker] 명령어 정리  (0) 2022.05.31
[Docker] ubuntu 컨테이너 생성  (0) 2022.05.30
[Docker] vi 편집기 설치  (0) 2022.05.19
[Docker] Dockerfile 명령어  (0) 2022.05.19
[Docker] 컨테이너를 만들고 프로젝트 넣기  (0) 2022.05.18

댓글