본문 바로가기
Oracle Database

Oracle Database 23c 설치 및 DBeaver로 연결하기 with docker

by cornsilk-tea 2023. 7. 12.

도커를 사용하여 Oracle Database 23c FREE버전을 설치하고, DBeaver로 연결한 일련의 과정을 정리해보려 한다.

WSL 위에 도커와 DBeaver는 설치되어 있다고 가정한다.

기본적인 모든 과정은 여기를 참고하였다.

 

1. Oracle Database 23c 이미지 다운로드

`docker pull container-registry.oracle.com/database/free`

해당 명령어를 통해 최신 버전의 이미지를 다운로드 한다.

docker images명령어를 입력하면, 아래와 같이 다운로드된 걸 확인할 수 있다.

container-registry.oracle.com/database/free가 다운로드 되었다.

2. 컨테이너 실행

우선 컨테이너를 실행하기 전, 가능한 설정들을 살펴보자.

공식 문서를 확인하면, 이때 설정 가능한 옵션들은 다음과 같다.

docker run --name <container name> \
-P | -p <host port>:1521 \
-e ORACLE_PWD=<your database passwords> \
-e ORACLE_CHARACTERSET=<your character set> \
-v [<host mount point>:]/opt/oracle/oradata \
container-registry.oracle.com/database/free:latest

하나하나 살펴보자.

기본 파라미터:
--name
:
컨테이너의 이름 (기본값: 자동 생성)
-P | -p:
호스트 포트에서 컨테이너 포트로의 포트 매핑. 하나의 포트만 노출됩니다: 1521 (Oracle Listener)
-e ORACLE_PWD:
Oracle Database SYS, SYSTEM 및 PDB_ADMIN 비밀번호 (기본값: 자동 생성)
-e ORACLE_CHARACTERSET:
데이터베이스를 생성할 때 사용할 문자 세트 (기본값: AL32 UTF8)
-v /opt/oracle/oradata
데이터베이스에 사용할 데이터 볼륨. 컨테이너 내부의 Unix "oracle" 사용자(UID: 54321)에 의해 쓰기 가능해야 합니다! 생략하면 컨테이너가 재생성되어도 데이터베이스가 유지되지 않습니다.
-v /opt/oracle/scripts/startup 선택사항:
데이터베이스 시작 후 실행할 사용자 정의 스크립트가 있는 볼륨.
-v /opt/oracle/scripts/setup 선택사항:
데이터베이스 설정 후 실행할 사용자 정의 스크립트가 있는 볼륨.

지원되는 구성 옵션은 다음과 같습니다:

ORACLE_PWD: 이 파라미터는 SYS, SYSTEM, PDBADMIN 사용자의 비밀번호를 변경합니다. 이 파라미터는 선택적이며, 기본값은 무작위로 생성됩니다. 참고: 이 옵션을 사용하면 비밀번호는 컨테이너 환경 변수로 보이게 되며, 이후에 변경할 수 없습니다. 만약 이때 비밀번호를 설정하지 않으면 데이터베이스에 대한 임의의 비밀번호가 생성됩니다. 이때 이 계정들의 비밀번호를 변경하려면 아래의 스크립트를 입력하여 변경합니다.

docker exec <oracle-db> ./setPassword.sh <your_password>


ORACLE_CHARACTERSET: 이 파라미터는 데이터베이스의 문자 세트를 변경합니다. 이 파라미터는 선택적이며, 기본값은 AL32 UTF8로 설정됩니다. 새 데이터베이스가 생성될 때만 문자 세트를 설정하게 되므로, 이 파라미터는 새로운 데이터베이스가 생성될 때만 문자 세트를 설정합니다. 즉, 이미지를 실행할 때 -v 옵션을 사용해 호스트 시스템 디렉터리가 마운트 되는 경우입니다.

본인의 경우 아래와 같이 옵션을 구성하여 설정하였습니다.

docker run -d --name my_oracle_db -p 1521:1521 -e ORACLE_PWD=<비밀번호> container-registry.oracle.com/database/free:latest

이렇게 컨테이너를 실행하면 아래 명령을 통해 해당 컨테이너의 환경변수들을 확인할 수 있다.

docker inspect --format='{{range .Config.Env}}{{println .}}{{end}}' <컨테이너 이름>

여기서 우리는 자동생성된 SID와 PDB를 확인할 수 있고, 컨테이너를 실행할 때 해당 부분을 변경할 수 있음을 예상해 볼 수 있다.

3. sqlplus로 접속해 보기.

이제 실행이 완료되었는지 확인 후 접속해 보자.

우선 logs를 확인해 보자.

준비 됐다니까 접속해서 확인해 보자.

이제 PDBADMIN에게 권한을 부여해 주자

이렇게 하면 모든 디비에서 해야 할 일은 끝났다고 보면 된다.

 

4. DBeaver 연결

이제 DBeaver에서 접속해 보자.

아래와 같이 설정하면 연결되는 걸 확인할 수 있다.

PDBADMIN은 FREEPDB1에 대한 권한이 설정되어 있으니 DATABASE를 위와 같이 설정해 준다.

이렇게 되면 연결 완료!!