6.1.1 Oracle Autonomous Database Free Container Image
지난 2023년 9월, 개발자를 위해 Autonomous Database를 OCI가 아닌, 개인 데스크탑/랩탑에서 실행할 수 있는 Autonomous Database Free Container Image를 출시하였습니다. 로컬 PC에 docker CLI 호환 도구를 통해 실행할 수 있습니다.
OCI Always Free를 통해 2개의 Autonomous Database 인스턴스를 제공하지만, 개발자가 많고, 개별 데스트탑에 설치하여 테스트하고자 하는 경우, 인터넷이 차단된 에어갭 환경에서 Autonomous Database를 개발자가 테스트하고자 하는 경우 등에 사용할 수 있습니다.
- adb-free GitHub
- OCI Blog - Introducing Autonomous Database Free Container Image
- Use the Oracle Autonomous Database Free Container Image
Autonomous Transaction Processing과 Autonomous Data Warehouse 두 유형에 해당하는 MY_ATP, MY_ADW 두 인스턴스을 포함하고 있습니다. 로컬에 실행하는 것으로 Oracle Autonomous Database의 다음 기능을 지원합니다.
- Oracle Rest Data Services (ORDS)
- APEX
- Database Actions
- Mongo API enabled (by default routed to
MY_ATP
)
각 데이터데이스의 스토리지 사이즈는 최대 20GB입니다.
실행 요구 사항
- 4 CPU
- 8 GB 메모리 필요
Macbook M1 ARM64에서 실행 예시
컨테이너 실행전 요구사항 설치
Docker Desktop 라이선스 이슈로 공식문서에서 예시는 podman을 사용하고 있습니다. 예시에서는 Rancher Desktop이 설치된 상태를 기준으로 이후 필요한 과정입니다.
Rancher Desktop이 설치
현재 Native ARM은 지원하지 않아, x86_64를 에뮬레이션 하기 위해 colima가 필요합니다. 아래와 같이 설치합니다.
brew install colima brew reinstall qemu
docker context가 colima인지 확인합니다.
$ docker context ls NAME DESCRIPTION DOCKER ENDPOINT ERROR colima * colima unix:///Users/thekoguryo/.colima/default/docker.sock default Current DOCKER_HOST based configuration unix:///var/run/docker.sock rancher-desktop Rancher Desktop moby context unix:///Users/thekoguryo/.rd/docker.sock
필요시 다음 명령으로 context를 전환합니다.
docker context use colima
요구 사항에 맞게 colima를 시작
$ colima start --cpu 4 --memory 8 --arch x86_64 INFO[0000] starting colima INFO[0000] runtime: docker INFO[0000] preparing network ... context=vm INFO[0000] starting ... context=vm INFO[0232] provisioning ... context=docker INFO[0232] starting ... context=docker INFO[0239] done
Autonomous Database Free Container 실행하기
Autonomous Database Free Container Image는 GitHub Container Registry 및 OCR(Oracle Container Registry)에서 제공합니다.
docker pull container-registry.oracle.com/database/adb-free:latest 또는 docker pull ghcr.io/oracle/adb-free:latest
Autonomous Database Free Container 실행
docker run -d \ -p 1521:1522 \ -p 1522:1522 \ -p 8443:8443 \ -p 27017:27017 \ --hostname localhost \ --cap-add SYS_ADMIN \ --device /dev/fuse \ --name adb_container \ container-registry.oracle.com/database/adb-free:latest
실행결과 확인
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES da5d47178568 container-registry.oracle.com/database/adb-free:latest "/bin/bash -c /u01/s…" 10 seconds ago Up 6 seconds (health: starting) 0.0.0.0:1522->1522/tcp, :::1522->1522/tcp, 0.0.0.0:8443->8443/tcp, :::8443->8443/tcp, 0.0.0.0:27017->27017/tcp, :::27017->27017/tcp, 0.0.0.0:1521->1522/tcp, :::1521->1522/tcp adb_container
데이터베이스가 오픈 되고 ORDS가 기동될 때까지 기다립니다.
$ docker logs -f da5d47178568 LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 19-OCT-2023 03:43:24 Copyright (c) 1991, 2023, Oracle. All rights reserved. ... SQL*Plus: Release 19.0.0.0.0 - Production on Thu Oct 19 03:43:25 2023 Version 19.20.0.1.0 Copyright (c) 1982, 2023, Oracle. All rights reserved. Connected to an idle instance. SQL> ORACLE instance started. Total System Global Area 1610612192 bytes Fixed Size 9543136 bytes Variable Size 385875968 bytes Database Buffers 1207959552 bytes Redo Buffers 7233536 bytes Database mounted. Database opened. SQL> Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production ... 2023-10-19T08:40:41.070Z INFO Oracle REST Data Services initialized Oracle REST Data Services version : 23.2.2.r2081534 Oracle REST Data Services server info: jetty/10.0.15 Oracle REST Data Services java info: Java HotSpot(TM) 64-Bit Server VM 11.0.19+9-LTS-224
APEX, Database Actions에 접속되는 지 확인합니다.
- 컨테이너 기동시 –hostname을 localhost가 아닌 다른 이름인 경우 해당 주소로 변경하여 접속합니다.
Application MY_ATP MY_ADW APEX https://localhost:8443/ords/my_atp/ https://localhost:8443/ords/my_adw/ Database Actions https://localhost:8443/ords/my_atp/sql-developer https://localhost:8443/ords/my_adw/sql-developer APEX 접속 예시
Database Actions
설치후 Admin 암호는 만료된 상태로 최초 접속시 패스워드 변경이 필요합니다. MY_ATP, MY_ADW 별도로 각각 변경합니다.
Database Expired ADMIN password MY_ATP Welcome_MY_ATP_1234 MY_ADW Welcome_MY_ADW_1234 변경 방법
docker exec <container_id> /u01/scripts/change_expired_password.sh <MY_Database> <user> <old_password> <new_password>
예시
$ docker exec adb_container /u01/scripts/change_expired_password.sh MY_ATP admin Welcome_MY_ATP_1234 Welcome_MY_ATP_1235 SQL*Plus: Release 19.0.0.0.0 - Production on Thu Oct 19 04:08:43 2023 Version 19.20.0.1.0 Copyright (c) 1982, 2023, Oracle. All rights reserved. ERROR: ORA-28001: the password has expired Changing password for admin New password: Retype new password: Password changed Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.20.0.1.0 SQL> Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.20.0.1.0
Database Actions에 접속하여 변경한 암호로 로그인해 봅니다.
OCI Autonomouse Database에서 제공하는 Database Actions 상의 도구들을 확인할 수 있습니다.
호스트에서 SQL Developer로 접속해 보기
개발자 데스크탑/랩탑에 사용할 클라이언트를 가정하여, SQL Developer로 아래와 같이 접속할 수 있습니다.
접속을 위해 실행중인 adb_container 컨테이너에서 Wallet을 가져옵니다.
docker cp adb_container:/u01/app/oracle/wallets/tls_wallet . zip tls_wallet.zip ./tls_wallet/*
SQL Developer를 실행합니다.
새 데이터베이스 접속을 만듭니다.
- 접속유형: 클라우드 전자 지갑 선택
- 구성 파일: 앞서 가져온 Wallet Zip 파일 선택
- 서비스: 접속할 서비스 명을 선택, MY_ATP, MY_ADW를 구분하여 원하는 서비스 선택
- 사용자 이름/비밀번호: admin, 변경한 암호 입력
테스트가 성공하면, 입력한 데이터 베이스 접속을 저장하고 접속합니다.
유저 만들기
SQL Developer로 생성한 Connection으로 접속합니다.
아래 명령으로 사용할 애플리케이션 유저를 만들 수 있습니다.
CREATE USER APP_USER IDENTIFIED BY "<my_app_user_password>" QUOTA UNLIMITED ON DATA; -- ADD ROLES GRANT CONNECT TO APP_USER; GRANT CONSOLE_DEVELOPER TO APP_USER; GRANT DWROLE TO APP_USER; GRANT RESOURCE TO APP_USER; -- ENABLE REST BEGIN ORDS.ENABLE_SCHEMA( p_enabled => TRUE, p_schema => 'APP_USER', p_url_mapping_type => 'BASE_PATH', p_url_mapping_pattern => 'app_user', p_auto_rest_auth=> TRUE ); commit; END; / -- QUOTA ALTER USER APP_USER QUOTA UNLIMITED ON DATA;
- 실행 예시
이 글은 개인으로서, 개인의 시간을 할애하여 작성된 글입니다. 글의 내용에 오류가 있을 수 있으며, 글 속의 의견은 개인적인 의견입니다.