BESPIN Tech Blog
  • Home
  • Tech
    • CSP

      AWS

      GCP

      NCP

      Cloud

      Migration

      LZ, Control Tower

      Backup

      Monitoring

      Container

      Infra

      OS

      Middleware

      Data

      RDB

      Big Data Platform

      Application

      CI/CD

      BESPICK 구독하기 ㅣ 1668-1280

  • Trend
  • IT
최신 리포트 다운로드 지금 바로 문의하기
BESPIN Tech Blog
  • Home
  • Tech
    • CSP

      AWS

      GCP

      NCP

      Cloud

      Migration

      LZ, Control Tower

      Backup

      Monitoring

      Container

      Infra

      OS

      Middleware

      Data

      RDB

      Big Data Platform

      Application

      CI/CD

      BESPICK 구독하기 ㅣ 1668-1280

  • Trend
  • IT
최신 리포트 다운로드 지금 바로 문의하기
BESPIN Tech Blog
BESPIN Tech Blog
  • Tech
    • CSP
      • AWS
      • GCP
      • NCP
    • Cloud
      • Migration
      • LZ, Control Tower
      • Backup
      • Monitoring
      • Container
    • Infra
      • OS
      • Middleware
    • Data
      • RDB
      • Big Data Platform
    • Application
      • CI/CD
  • Trend
  • IT
  • Contact US
Big Data Platform

MWAA-Oracle DB 쿼리 수행 방법

by 민우 서 2025년 04월 10일
2025년 04월 10일
7

안녕하세요 오늘은 BESPIN GLOBAL DFA실 한제호님이 작성해주신 “MWAA-Oracle DB 쿼리 수행 방법”에 대해 소개해드리도록 하겠습니다.

목차

  1. 개요
  2. Python 언어에서 활용할 수 있는 Oracle Client library 종류
  3. 오류의 원인은?
  4. 해결 방법
  5. 주의사항

1. 개요

  • airflow에서 DB에 쿼리를 수행하기 위해 각 DB 솔루션별 제공하는 Operator를 활용할 수도 있지만 공통으로 제공하는 SQLExecuteQueryOperator를 활용할 수도 있습니다.
  • 구축 환경
    • Airflow: 2.7.2
    • 설치 library: apache-airflow-providers-oracle, oracledb
    • Select 쿼리를 수행할 DB: Oracle 19c
    • DAG 코드
source_task = SQLExecuteQueryOperator(
    task_id='source_task',
    conn_id='oracle_conn',
    sql="select count(*) from test_tb"
)
  • SQLExecuteQueryOperator를 활용하여 Oracle DB 건수 조회를 수행하 였으나 아래와 같은 오류가 발생하였습니다.
    • oracledb.exceptions.NotSupportedError: DPY-3015: password verifier type 0x939 is not supported by python-oracledb in thin mode
  • 본 블로그는 위 오류의 원인을 파악하고 해결할 수 있는 방안에 대해 작성하고자 합니다.
2. Python 언어에서 활용할 수 있는 Oracle Client library 종류
  • cx_Oracle: oracledb 이전 버전의 라이브러리로 해당 라이브리러 설치와 함께 Oracle Client도 같이 설치가 되어야 합니다.
cx_Oracle: oracledb 이전 버전의 라이브러리로 해당 라이브리러 설치와 함께 Oracle Client도 같이 설치가 되어야 한다.
  • oracledb: cx_Oracle 이후 버전의 라이브러리로 앞으로는 해당 라이브러리로 개발하기를 추천합니다.
    • Thick 모드: cx_Oracle와 동일하게 Oracle Client 설치가 필요합니다.
Thick 모드: cx_Oracle와 동일하게 Oracle Client 설치가 필요하다.
  • Thin 모드: Oracle Client 설치가 필요 없습니다.
Thin 모드: Oracle Client 설치가 필요 없다.
  • 제약사항
    • 당연히 간단하게 활용할 수 있는 Thin모드의 경우 제약사항이 있습니다. (DB Startup/Stop, TAF기능 사용, BFILE Type 지원, 21c JSON Data Type 지원, 2PC 등의 기능 사용 불가)

3. 오류의 원인은?

  • 위 내용을 기반으로 airflow의 SQLExecuteQueryOperator는 기본적으로 oracledb의 thin 모드를 사용한다는 것을 알 수 있습니다.
    • 해당 오류는 thin 모드에서는 비밀번호 검증방식을 지원하지 않기 떄문에 발생한 오류로 Oracle 11g 이하에서는 비밀번호에 대한 대소문자 규칙을 판단하지 않았으나 이후 버전에서는 Oracle DB 파라미터중에 “sec_case_sensitive_logon” 값에 따라 패스워드 대소문자 판단 여부가 결정됩니다.
4. 해결 방법
  • 필자가 활용중에 DB에는 sec_case_sensitive_logon 값이 True로 설정되어 있어서 간단한 해겷 방법으로는 해당 값을 False로 설정하면 됩니다.(상황에 따라서는 접속하는 DB 계정의 비밀번호를 다시 생성해야 할 수도 있습니다.)
  • 다만 해당 값을 변경할 수 없는 경우(영향도 파악을 할 수 없는 경우)에는 Client 접속 방식을 Thick 모드로 변경을 해야하는데 이런 경우 MWAA에 Oracle Client 설치가 필요합니다.
  • MWAA 적용 절차
    • startup 스크립트 활용: MWAA에는 클러스터 구동시 사용자가 생성한 shell을 실행할 수 있는 기능이 있습니다.(https://docs.aws.amazon.com/ko_kr/mwaa/latest/userguide/using-startup-script.html)
#!/bin/sh
aws s3 cp s3://xxxxxxxx/mwaa/startup/library/libaio-0.3.111-11.amzn2023.0.2.x86_64.rpm  .
aws s3 cp s3://xxxxxxxx/mwaa/startup/library/oracle-instantclient-basic-21.9.0.0.0-1.el8.x86_64.rpm .
aws s3 cp s3://xxxxxxxx/mwaa/startup/library/oracle-instantclient-sqlplus-21.9.0.0.0-1.el8.x86_64.rpm .

sudo dnf install --disablerepo=* -y libaio-0.3.111-11.amzn2023.0.2.x86_64.rpm 
echo "libaio installed"

sudo dnf install --disablerepo=* -y oracle-instantclient-*.rpm
echo "oracle-instantclient installed"
  • 필자가 구축한 MWAA는 인터넷망에 접근이 불가한 구성이기 때문에 설치 파일(rpm) 파일을 S3에 미리 업로드해 두었습니다.
  • startup 스크립트 설치 정상 설치 여부는 Cloudwatch MWAA스케줄러 로그중에 startup 로그를 통해 확인할 수 있습니다.
startup 스크립트 설치 정상 설치 여부는 Cloudwatch MWAA스케줄러 로그중에 startup 로그를 통해 확인할 수 있다.
  • oracledb 라이브러리의 기본 접속방식이 Thin모드이기 때문에 Connection 설정을 통해 Thick 모드로 전환이 필요합니다.
oracledb 라이브러리의 기본 접속방식이 Thin모드이기 때문에 Connection 설정을 통해 Thick 모드로 전환이 필요합니다.
  • 위 설정 이후 정상적으로 데이터 조회가 가능합니다.
5. 주의사항
  • MWAA의 startup 스크립트는 클러스터 구동 시에 최대 5분을 넘길 수 없다. 만약 timeout 에러가 발생한다면 임시방편으로 shell을 background로 구동하는 방법으로 시도해보길 바랍니다.

여기까지 ‘MWAA-Oracle DB 쿼리 수행 방법’에 대해 소개해드렸습니다. 유익한 정보가 되셨길 바랍니다. 감사합니다. 

Written by 한 제호 / DFA실

BESPIN GLOBAL

관련

DBMWAA-OracleMWAA-Oracle DB 쿼리 수행 방법Python 언어

HOT Trend

Recent Posts

  • 딜로이트도, 맥킨지도, 베스핀글로벌도: AI 에이전트로 일 바꾸는 시대

    2025년 07월 04일 클라우드베스핀글로벌clouddata데이터AI인공지능HelpNow AIbespinglobalAI에이전트helpnow업무자동화딜로이트
  • ⚔️데이터센터에서 시작된 전쟁? 요즘 뜨는 AIDC 개념부터 트렌드까지!

    2025년 06월 27일 클라우드clouddata데이터AI데이터센터클라우드 데이터센터bespinglobalAIDCAI 인프라베스핀글로벌
  • 구글부터 엔비디아까지, 빅테크 기업들의 AI 전략 최신본📖

    2025년 06월 20일 cloud베스핀글로벌클라우드data데이터AI구글마이크로소프트엔비디아AI에이전트google I/ONVIDIA GTC 2025Microsoft build 2025
  • AI를 연결한다고? 업계가 주목하는 ‘MCP’ 알아보기🔍

    2025년 06월 13일 베스핀글로벌클라우드cloudAIMCP
  • [WhaTap] RDS Failover/Reboot 관제 2 – RDS Failover

    2025년 05월 30일 RDSRDS FailoverRebootFailoverbespin global

베스핀글로벌은 모든 기업의 AI 혁신을 실현하기 위해, 세상에서 가장 혁신적이고 자동화된 AI 서비스와 솔루션을 만들어갑니다.
상호 : 베스핀글로벌 주식회사 ㅣ 대표자명 : 김써니, 허양호 ㅣ 사업자등록증번호 : 638-87-00223 ㅣ 통신판매번호 : 2019-서울서초-0347 ㅣ 대표전화 : 1668-1280
사업장주소지 : 서울특별시 서초구 강남대로 327, 13,14,15,16층(서초동,대륭서초타워) ㅣ 이메일 : info@bespinglobal.com ㅣ 개인정보 처리방침 ㅣ 개인정보 처리방침 안내

© 2026 BESPIN GLOBAL, All Rights Reserved.

BESPINGLOBAL
패밀리 사이트
China MEA SEA US

BESPIN Tech Blog
  • Home
  • Tech
    • CSP

      AWS

      GCP

      NCP

      Cloud

      Migration

      LZ, Control Tower

      Backup

      Monitoring

      Container

      Infra

      OS

      Middleware

      Data

      RDB

      Big Data Platform

      Application

      CI/CD

      BESPICK 구독하기 ㅣ 1668-1280

  • Trend
  • IT