데이터베이스 연구실.log

Python 프로그램 구성

이행, 알림과 모니터링 도구의 화면 및 처리 파일 역할, 파일 사이 데이터 전달과 수정 위치 지정

app.pyengine.pychecker.pycollector.pytelegram_bot.pyStreamlitDataFrameDemoCollectorrequirements.txtbat

#핵심 요약

수업의 도구 네 가지는 모두 "DB를 조회한다 → 기준과 비교해 판단한다 → 화면, 리포트, 알림으로 보여 준다"를 Python으로 자동화한 것임

각 도구는 화면 파일(app.py)과 처리 파일(이행 엔진 engine.py, 수집기 collector.py)로 나뉨
실습에서는 이행 도구에서 둘 사이에 Schema 묶음 하나가, 모니터에서 DataFrame 표 하나가 오간다고 설명함

실습에서는 "화면 한 칸 = 처리 함수 하나"이고 모니터에서는 "SQL 사전 키 하나"까지 대응하므로, 칸이 이상하면 그 함수를 보면 된다고 적었음

수업의 목표는 코드를 외우는 것이 아니라 어느 파일이 무슨 일을 하는지 알아 AI에게 정확히 고쳐 달라고 말하는 것임

#개념과 동작 원리

#도구와 라이브러리

결과물 Python이 하는 일 쓰는 라이브러리
미니 마이그레이터(Oracle → PostgreSQL) 스키마 분석 → 타입 변환 → COPY 이행 → 검증 → AS-IS/TO-BE 점검 oracledb, psycopg, pandas, streamlit
텔레그램 이행 알리미 이행 진행률을 휴대폰으로 보고하고 문제가 생기면 버튼으로 묻음 urllib(표준 라이브러리만)
미니 오라클 게이지(Oracle 모니터) V$ 뷰를 3초마다 조회 → 악성 SQL 판정 → 대시보드 표시 oracledb, pandas, plotly, streamlit
세션 상세, 진단, KILL SQL 전문과 실행계획을 꺼내 왜 문제인지 설명하고 조치 명령을 만듦 oracledb, pandas

MySQL 마이그레이터와 PG 게이지도 같은 구조임

#미니 마이그레이터 파일

파일 역할
engine.py 분석 analyze, 타입 변환 map_type, 뷰 변환 convert_sql, DDL build_ddl, 권한 grant_ddl, 적재 copy_table, 검증 validate
checker.py AS-IS/TO-BE 점검: 오브젝트, 데이터 표본, PL/SQL, 업무 쿼리, 권한
app.py 화면: 단계 표시, 연결 카드, 분석 표, DDL 탭, 진행률, 로그, 검증 표, 점검 탭, 보고서
telegram_bot.py, tg_check.py 텔레그램 보고, 질문, 명령, 연결 점검(7단계에서 추가)
run_migrator.bat 접속 기본값과 실행(포트 8502, CRLF로 저장)
requirements.txt streamlit, plotly, pandas, oracledb, psycopg[binary]
.streamlit/config.toml 밝은 테마

실습에서는 이행 도구를 상황판(화면)과 이삿짐센터(분석, 포장, 운반, 검수)에 비유했음

#미니 오라클 게이지 파일

파일 역할
app.py 화면
collector.py 수집기, 패널별 SQL 사전
load.py 부하 발생기
bad_sql.py 악성 SQL 실행기
sql/01~03 계정, 스키마, 악성 SQL
non-CDB용 *_noncdb.sql 포함
check_*.py 2~4단계의 확인 스크립트

위 표는 실습 1단계의 파일 구성 설명임
대시보드는 모니터링 전용 계정으로 조회만 하고, 숫자를 움직이는 것은 부하 도구임
수집기는 실제 DB용 OracleCollector와 DB 없이 화면을 보는 DemoCollector 두 개임

실습의 3초 루프: 타이머 → 수집기 호출 → SQL 실행 → DataFrame → 악성 판정 → 화면 그리기 → 다시 처음
수집 쪽 세부는 Oracle 지표 수집에 있음

#MySQL 마이그레이터와 PG 게이지

도구 구조에서 다른 점
미니 MySQL 마이그레이터 MySQL은 <USERNAME>로 읽기만 하고, 데이터는 PC의 engine.py를 거쳐 PostgreSQL로 건너감
app.py는 상담 창구(화면), engine.py는 포장, 운반팀(분석, 변환, COPY), checker.py는 입주 점검반(AS-IS ↔ TO-BE 대조)에 비유함
화면 한 칸 = 단계 함수(step_*) 하나 + 엔진 함수 하나
미니 PG 게이지 pg_monitor 권한의 monitor 계정으로 조회만 하고, load.py, bad_sql.py가 loadtest DB에 부하를 검
app.py는 홀(화면), collector.py는 주방(수집)이며 둘 사이에 DataFrame 표 하나가 오감
화면 한 칸 = 수집 함수 하나 = SQL 사전 키 하나

MySQL 마이그레이터의 이행 흐름: 분석 → 타입 변환 → DDL 3묶음 → COPY 적재 → 적재 후 제약조건 → 검증
PG 게이지의 3초 루프는 오라클 게이지와 같고, 락 줄 계산이 DataFrame 계산 단계에 들어감
세부는 MySQL → PostgreSQL 이행 도구와 PostgreSQL 지표 수집에 있음

#사용 조건과 주의사항

도구 수정 시 지정할 항목은 "어느 파일 + 어느 함수나 키 + 무엇을 + 건드리지 말 것"임

같은 규칙이 두 곳에 있는 경우를 함께 말해야 함
이행 도구의 타입 규칙은 계산용 map_type()과 화면 표시용 TYPE_RULES 두 곳에, 모니터의 새 기능은 OracleCollector와 DemoCollector 두 수집기에 넣어야 함
MySQL 마이그레이터는 타입을 map_type()에서 정하지만 값 변환 _converter()와 검증 validate()는 MySQL 원래 타입을 보고 고르므로, 규칙을 바꾸면 세 곳을 함께 맞춤

PG 게이지에서 pg_stat_user_tables처럼 DB별로 따로 보이는 뷰는 접속한 DB 것만 나오므로, seq_scans()처럼 그 DB에 따로 접속해 읽도록 지시함

실습에서는 예제 프로그램이 모두 교육용으로 직접 만든 것이며 상용 모니터링 제품과 관계가 없다고 밝혔음
실습 그림 속 옛 이름 표기도 같은 도구를 가리킴

SEO_HKabsumveritas@gmail.comBuilt with Claude Code & Codex

마지막 갱신 개인 학습 기록이며 운영 환경 적용 전 공식 문서 확인 필요

두 글자 이상 입력, 위아래 화살표로 이동하고 Enter로 열기