TheKoguryo's 기술 블로그

 Version 2024.04.01

4.2.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를 개발자가 테스트하고자 하는 경우 등에 사용할 수 있습니다.

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이 설치된 상태를 기준으로 이후 필요한 과정입니다.

  1. Rancher Desktop이 설치

  2. 현재 Native ARM은 지원하지 않아, x86_64를 에뮬레이션 하기 위해 colima가 필요합니다. 아래와 같이 설치합니다.

    brew install colima
    brew reinstall qemu
    
  3. 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
      
  4. 요구 사항에 맞게 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 실행하기
  1. 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
    
  2. 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
    
  3. 실행결과 확인

    $ 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
    
  4. 데이터베이스가 오픈 되고 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
    
  5. APEX, Database Actions에 접속되는 지 확인합니다.

    • 컨테이너 기동시 –hostname을 localhost가 아닌 다른 이름인 경우 해당 주소로 변경하여 접속합니다.
    ApplicationMY_ATPMY_ADW
    APEXhttps://localhost:8443/ords/my_atp/https://localhost:8443/ords/my_adw/
    Database Actionshttps://localhost:8443/ords/my_atp/sql-developerhttps://localhost:8443/ords/my_adw/sql-developer
    • APEX 접속 예시

      image-20231019175720023

    • Database Actions

      image-20231019175546281

  6. 설치후 Admin 암호는 만료된 상태로 최초 접속시 패스워드 변경이 필요합니다. MY_ATP, MY_ADW 별도로 각각 변경합니다.

    DatabaseExpired ADMIN password
    MY_ATPWelcome_MY_ATP_1234
    MY_ADWWelcome_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
      
  7. Database Actions에 접속하여 변경한 암호로 로그인해 봅니다.

    image-20231019180135882

  8. OCI Autonomouse Database에서 제공하는 Database Actions 상의 도구들을 확인할 수 있습니다.

    image-20231019180443136

호스트에서 SQL Developer로 접속해 보기
  1. 개발자 데스크탑/랩탑에 사용할 클라이언트를 가정하여, SQL Developer로 아래와 같이 접속할 수 있습니다.

  2. 접속을 위해 실행중인 adb_container 컨테이너에서 Wallet을 가져옵니다.

    docker cp adb_container:/u01/app/oracle/wallets/tls_wallet .
    zip tls_wallet.zip ./tls_wallet/*
    
  3. SQL Developer를 실행합니다.

  4. 새 데이터베이스 접속을 만듭니다.

    • 접속유형: 클라우드 전자 지갑 선택
    • 구성 파일: 앞서 가져온 Wallet Zip 파일 선택
    • 서비스: 접속할 서비스 명을 선택, MY_ATP, MY_ADW를 구분하여 원하는 서비스 선택
    • 사용자 이름/비밀번호: admin, 변경한 암호 입력

    image-20231019181338482

  5. 테스트가 성공하면, 입력한 데이터 베이스 접속을 저장하고 접속합니다.

유저 만들기
  1. SQL Developer로 생성한 Connection으로 접속합니다.

  2. 아래 명령으로 사용할 애플리케이션 유저를 만들 수 있습니다.

    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;
    
    • 실행 예시

    image-20231019182307410



이 글은 개인으로서, 개인의 시간을 할애하여 작성된 글입니다. 글의 내용에 오류가 있을 수 있으며, 글 속의 의견은 개인적인 의견입니다.

Last updated on 19 Oct 2023