Files
exAichatbot_agent/server-dev/oracle/README.md
T
2026-08-01 21:04:26 +09:00

3.8 KiB

exdev TROAD Oracle (Docker)

개발서버(chatbot.exdev.co.kr)에서 교통정보(TROAD) 조회용 Oracle 을 Docker 로 기동합니다.

접속 정보 (chatbotApi 와 동일)

항목 값
JDBC URL jdbc:oracle:thin:@localhost:1521/orcl2
Username OPR_MAIN
Password test
Image gvenzl/oracle-free:23-slim (Oracle Database Free 23ai)
Container exaichatbot-agent-oracle-troad
Volume exaichatbot-agent-oracle-troad-data

chatbotApi-chatbot2.0-agent/src/main/resources/application.yml 의 spring.datasource.troad 설정과 일치합니다.

개발서버가 Apple Silicon(arm64) 이므로 amd64 전용인 gvenzl/oracle-xe:21 대신 arm64 를 지원하는 gvenzl/oracle-free:23-slim 을 사용합니다.

SYS/SYSTEM 비밀번호 기본값: OracleExdev!2026 (ORACLE_SYS_PASSWORD 환경변수로 변경 가능)

기동 / 중지

start-all-server.sh / stop-all-server.sh 에 포함됩니다. 기동 후 교통정보 뷰가 비어 있으면 apply-sql.sh 가 자동 실행됩니다.

# 수동
cd /Users/aidev/dev/exAichatbot_agent/server-dev
docker compose -f docker-compose.oracle.yml up -d
docker compose -f docker-compose.oracle.yml down

# 데이터 볼륨까지 삭제
docker compose -f docker-compose.oracle.yml down -v
# 또는
./stop-all-server.sh --purge-oracle

옵션:

옵션 설명
start-all-server.sh --skip-oracle Oracle 기동 생략
stop-all-server.sh --purge-oracle 컨테이너 + 데이터 볼륨 삭제

디렉터리 구성

경로 설명
init/ 컨테이너 최초 초기화 시 1회 실행 (OPR_MAIN 권한 부여)
sql/ 업무 객체 DDL + 데이터 (파일명 순서로 적용)
data/ 원본 CSV 덤프
tools/csv_to_insert.py CSV → INSERT 스크립트 변환
apply-sql.sh 컨테이너에 sql/*.sql 적용 + 결과 검증

업무 객체 적용

cd /Users/aidev/dev/exAichatbot_agent/server-dev/oracle

# sql/ 전체 적용
./apply-sql.sh

# 특정 파일만
./apply-sql.sh sql/10_v_incident_ftms.sql sql/20_v_incident_ftms_data.sql

적용된 객체

객체 설명
OPR_MAIN.T_INCIDENT_FTMS 뷰의 원본 데이터 테이블 (17 컬럼 + LOADED_AT)
OPR_MAIN.V_INCIDENT_FTMS 운영과 동일한 컬럼·순서의 조회용 뷰
PUBLIC SYNONYM V_INCIDENT_FTMS 스키마 미지정 조회 지원
TLISDEV.T_TRMB_CD_INFO01M1 공통코드 (노선명 COM064 등)
TROAD_APP.V_ROUTE_NEW_NM 노선명 조회 뷰 (chatbotApi 기존 쿼리 그대로 사용)
TROAD_APP.V_ROUTE_TRFC_VER001 노선별 교통상황 뷰 (chatbotApi 기존 쿼리 그대로 사용)
TROAD_APP.V_ACDT_BRNWS_VER001 교통속보 뷰 (chatbotApi 기존 쿼리 그대로 사용)
OPR_MAIN.V_ROUTE_* / V_ACDT_* 스키마 미지정 조회용 미러 뷰

운영 뷰는 다수 기반 테이블을 참조하는 읽기 전용 뷰입니다. 개발서버에는 기반 테이블이 없으므로, 뷰 결과 CSV를 물리 테이블에 적재하고 동일 이름 뷰로 노출해 기존 조회 로직/SQL을 변경하지 않고 동작하게 합니다.

다른 CSV 덤프 추가

cd /Users/aidev/dev/exAichatbot_agent/server-dev/oracle
python3 tools/csv_to_insert.py data/<파일>.csv \
  --table OPR_MAIN.<테이블> \
  --numeric <숫자컬럼,콤마구분> \
  --out sql/<번호>_<이름>_data.sql
./apply-sql.sh sql/<번호>_<이름>_data.sql

검증

docker exec -e NLS_LANG=.AL32UTF8 -it exaichatbot-agent-oracle-troad \
  sqlplus OPR_MAIN/test@localhost:1521/ORCL2

SQL> SELECT COUNT(*) FROM V_INCIDENT_FTMS;
SQL> SELECT INCIDENT_TYPE, COUNT(*) FROM V_INCIDENT_FTMS GROUP BY INCIDENT_TYPE;

한글 데이터 조회 시 NLS_LANG=.AL32UTF8 을 지정해야 깨지지 않습니다.