728x90

오라클 튜닝을 공부하다 보면 가장 먼저 부딪히는 벽이 바로 **"실행계획이 뭐지?"**  
그리고 그 다음엔 이런 생각이 들죠.

> 이 쿼리 진짜 느린데, 왜 느린지는 모르겠네…

그래서 오늘은 실무와 튜닝 공부에서 정말 많이 쓰이는 두 가지 기능인  
**AUTOTRACE**, **SQL TRACE + tkprof** 에 대해 정리해봤습니다.






1️⃣ AUTOTRACE란?

AUTOTRACE는 SQL을 실행하면, 그 결과와 함께 **실행계획 + 통계 정보**를 보여주는 도구입니다.  
SQL*Plus 또는 Oracle SQL Developer에서 사용 가능합니다.

  • TABLE ACCESS FULL, INDEX RANGE SCAN 같은 실행계획 키워드를 볼 수 있어요.
  • 특히 Rows, Cost, Time 정보를 보면서 쿼리 효율을 체크할 수 있습니다.

0. SQL*Plus 실행 및 로그인 진행
1. autotrace on 설정하기

ALTER SESSION SET SQL_TRACE = TRUE;

2. sql 실행하기(태스트용 테이블_emp을 조회하면서 발생하는 실행 계획 보기 위해서 DML 활용)

SELECT * FROM EMP;

3. autotrace off하기

ALTER SESSION SET SQL_TRACE = FALSE;

4. trc파일 위치 확인하기

SELECT value FROM v$diag_info WHERE name = 'Default Trace File';

응답값으로 폴더위치가 나옵니다. 
예시: ~~\trace\orcl_ora_123456.trc
5.CMD(명령어 프롬프트)을 열어서 4번에 나온  trc폴더 위치로 이동(trace 폴더까지만 이동)

cd C:\APP\C\사용자이름\diag\rdbms\orcl\orcl\trace

6. 이어서  trc폴더에서 명령어 하나 입력(사용자가 볼 수 있게 txt로 변환)

tkprof orcl_ora_123456.trc output.txt

tkprof orcl_ora_5번에 나온 수치.trc output.txt


7. output.txt 생성 확인 

Trace file: orcl_ora_123456.trc
Sort options: default

********************************************************************************
count    = number of times OCI procedure was executed
cpu      = cpu time in seconds executing 
elapsed  = elapsed time in seconds executing
disk     = number of physical reads of buffers from disk
query    = number of buffers gotten for consistent read
current  = number of buffers gotten in current mode (usually for update)
rows     = number of rows processed by the fetch or execute call
********************************************************************************

SELECT * 
FROM
 EMP


call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00       0.00          0         83          0           0
Execute      1      0.00       0.00          0          0          0           0
Fetch     1335      0.00       0.02          0       1466          0       20000
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total     1337      0.00       0.02          0       1549          0       20000

Misses in library cache during parse: 1
Optimizer mode: ALL_ROWS
Parsing user id: 9  
Number of plan statistics captured: 1

Rows (1st) Rows (avg) Rows (max)  Row Source Operation
---------- ---------- ----------  ---------------------------------------------------
     20000      20000      20000  TABLE ACCESS FULL EMP (cr=1466 pr=0 pw=0 time=25668 us starts=1 cost=39 size=2129673 card=24479)

********************************************************************************

SQL TRACE + tkprof란?

AUTOTRACE가 한 번의 쿼리를 분석한다면,
SQL TRACE는 전체 세션의 모든 SQL 실행을 추적해주는 기능이에요.

트레이스 결과는 .trc 파일로 저장되며, Oracle이 제공하는 tkprof로 사람이 읽기 좋게 변환합니다.

 

tkprof 해석 예시

  • query: 논리적 블록 읽기
  • disk: 실제 디스크 접근 횟수
  • rows: 반환된 레코드 수
  • cpu, elapsed: 처리 시간

✅ 실제로 인덱스를 탔다면 INDEX UNIQUE SCAN 같은 문구도 뜹니다!

 


실습 사례 정리

이번 글을 위해 직접 테스트도 진행해봤습니다.

  • EMP 테이블에 2만 건 데이터 삽입
  • ORA-01438, ORA-00001 오류 발생 및 해결
  • PRIMARY KEY 제약 조건 수정
  • AUTOTRACE 및 tkprof 분석 수행

 

728x90
728x90

올해 가장 기대하던 VR 모임 중 하나였던 2025 VR 3rd 유저 모임에 다녀왔습니다!
3회째를 맞이한 이번 행사는 단순한 장비 체험을 넘어서, 업계 최신 트렌드와 신제품 소식을 한자리에서 들을 수 있는 정말 뜻깊은 자리였는데요.

오늘은 그 생생했던 현장을 꼼꼼하게 후기 남겨보려고 합니다. 😊


🏢 행사 개요

  • 행사명: 2025. 03. 01 VR 3rd 유저 모임
  • 장소: 서울
  • 시간: 12:00 ~ 16:30
  • 주요 프로그램
    • 기업 프레젠테이션
    • XR 장비 체험 부스
    • 유저 간 네트워킹
    • 경품 추첨 이벤트

🎤 기업 프레젠테이션

행사의 시작은 업계 주요 기업들의 발표로 열렸어요.

TCL NXTWear

  • AR 글라스 라인업 소개
  • TCL이 생각하는 XR 사업 비전
  • 발표자: 양00 대표님

bHaptics

  • 촉각 슈트(햅틱 슈트)의 활용처와 잠재력
  • “컨텐츠와 하드웨어가 만나는 새로운 감각”이란 메시지가 인상적
  • 발표자: 장00 팀장님

Diver-X

  • 일본 본사 마케팅 매니저 Kai 님 발표
  • 신형 VR 글러브 Contact Glove 2 소개
  • 차세대 6DoF 트래커 Contact Track (목업) 공개
  • Diver-X의 한국 첫 공식 발표였다는 점에서 더욱 특별

PICO VR

  • 글로벌 VR HMD 기업답게 큰 관심
  • Pico OS의 향후 비전 발표 → 이 내용이 세계 최초 공개라고!
  • 발표자: 천00 매니저님


🕶️ 현장에서 만난 XR 기기들

이번 모임의 가장 큰 장점은 역시 실물 체험이었죠.
국내에서 이렇게 다양한 XR 장비를 한자리에서 볼 기회는 거의 없을 거예요.

[VR HMD 라인업]

  • 메타 퀘스트 3 / 3S / 2 / 프로
  • 오큘러스 리프트 DK1
  • 파이맥스 8KX / 8K
  • 비전 프로
  • 피코 4 / 4 프로 / 4 울트라
  • 밸브 인덱스
  • 바르요 에어로
  • 닌텐도 버추얼 보이 (이건 완전 레트로 감성!)
  • 빅스크린 비욘드
  • 알파라 데더드 5K
  • 바이브 XR 엘리트

[AR 디바이스]

  • 엑스리얼 에어 2, 2 프로, 2 울트라
  • 엑스리얼 빔 프로
  • 엑스리얼 원
  • 메타 레이벤
  • 홀로렌즈
  • 레이네오 X2

[기타 XR 액세서리]

  • 홀로그램 디스플레이 루킹 글라스
  • bHaptics 햅틱슈트/슬리브/바이저
  • Diver-X Contact Glove
  • 다양한 VR 트래커류 (툰드라, 바이브, 얼티밋, 나래트래커 등)
  • 로지텍 MX Ink
  • HIG M4 건스톡
  • 기타 VR 액세서리들

🔗 유저 네트워킹 & 체험 부스

  • 발표 이후 진행된 릴레이 자기소개 덕분에 분위기가 훨씬 친근해졌습니다.
  • 유저분들이 직접 장비를 가져와 소개하고, 함께 체험해보는 시간이 특히 좋았어요.
  • Diver-X, 피코 부스가 인기 폭발!
  • 특히 Diver-X의 Contact Glove 착용감이 꽤 많은 화제를 모았습니다.
  • Pico의 Pico 4 Ultra & 모션 트래커 세트도 실제 체험해보니 라이트하면서도 반응속도가 좋더라고요!

🎁 경품 추첨 이벤트

마지막 하이라이트는 역시 경품 행사!


🎯 이번 행사의 의미

  • Pico OS 세계 최초 공개 → XR 업계의 큰 뉴스!
  • Diver-X의 첫 공식 발표 → 하드웨어 다양성 강화
  • 국내에선 접하기 어려운 장비들 대거 체험
  • 참가자 수 증가 → 커뮤니티의 성장 체감
  • 다만 “시간이 여전히 너무 짧다”는 아쉬움도 커서 다음 행사엔 시간을 더 늘린다고 하네요!

저 역시 이번 모임을 통해 평소 접하기 어려운 장비들을 직접 체험해보고, XR 업계의 최신 흐름과 기술에 대해 깊이 있는 이야기를 나눌 수 있어서 정말 뜻깊었습니다.

앞으로도 이런 유저 중심의 행사가 더 많이 열려서, XR 커뮤니티가 한층 더 커지고 서로 배울 수 있길 기대해봅니다!

혹시 이 글 보시고 궁금하신 기기나 기업 있으면 댓글 주세요. 제가 기억나는 선에서 최대한 답변 드리겠습니다.

728x90
728x90

💡 프론트엔드란? – 사용자와 만나는 첫 화면

프론트엔드는 사용자가 직접 보는 웹·앱의 UI를 구성하고, 버튼 클릭, 입력창 등 사용자 행동에 반응하는 기능을 구현하는 분야입니다. 화면을 꾸미는 것을 넘어, 사용자 경험을 설계하는 핵심 역할을 합니다.

🛠 어떤 일을 하나요? – UI 구성, 반응형 설계, API 연동

  • UI 구성: HTML, CSS로 화면 구조와 스타일 구성
  • 인터랙션 개발: JavaScript로 버튼, 모달 등 기능 구현
  • API 연동: 서버에서 가져온 데이터를 화면에 표시

🔧 사용하는 기술들 – HTML, CSS, JavaScript, React 등

  • HTML/CSS: 화면 구조와 디자인을 구성하는 기본 언어
  • JavaScript: 동적인 기능과 로직 처리 (ex. 클릭 이벤트)
  • React/Vue: 효율적인 UI 구성 도구
  • Git, Figma: 협업 및 디자인 도구

🗺 프론트엔드 입문 로드맵 (2025년 기준)

1. 웹 기초 학습
- HTML/CSS로 정적 웹페이지 만들기

2. JavaScript 기본 문법 익히기
- 변수, 함수, 조건문, DOM 조작 등

3. 인터랙션 구현
- 이벤트 처리, API(fetch) 활용

4. React 기초 학습
- 컴포넌트, 상태 관리, 라우팅 등

5. 실전 미니 프로젝트
- 투두 앱, 영화 검색, 날씨 앱 등

6. 포트폴리오 제작 & 배포
- GitHub Pages, Netlify 활용

📚 추천 자료 & 공부법

🚀 나에게 맞는 진로 고민 + 포트폴리오 전략

  • 사용자 중심의 직관적인 설계에 관심 있다면 프론트엔드에 적합
  • UI/UX에 민감하고, 시각적 표현을 좋아하는 성향도 잘 맞음
  • 포트폴리오는 직접 만든 앱과 사이트를 중심으로 구성 (GitHub, Notion 링크 활용)

✅ 마무리

프론트엔드는 웹과 앱에서 사용자와 서비스가 만나는 접점입니다. 직접 눈에 보이는 결과물이 나오기 때문에 성취감도 높고, 실전 프로젝트도 빠르게 경험할 수 있어요. 오늘부터 하나씩 따라하며 나만의 서비스에 도전해보세요!

728x90
728x90

💡 백엔드란? – 보이지 않는 시스템의 핵심

백엔드는 사용자가 직접 보지는 않지만, 모든 웹/앱 서비스에서 핵심적인 역할을 하는 기술 영역입니다. 서버에서 요청을 받고, 데이터를 처리하고, 클라이언트에 다시 전달하는 전반적인 시스템 로직을 담당합니다.

🛠 어떤 일을 하나요? – 서버, 데이터베이스, API 설계

  • 서버 구성: 사용자 요청 처리, 보안, 인증 등
  • 데이터베이스 설계 및 연동: 정보 저장 및 관리 (SQL, NoSQL)
  • API 개발: 프론트엔드와 통신하는 데이터 전달 구조 설계

🔧 사용하는 기술들 – Node.js, Python, Java, SQL 등

  • Node.js: JavaScript 기반 서버 개발 환경
  • Python (Django/FastAPI): 빠르고 효율적인 백엔드 구축
  • Java/Spring: 대형 시스템에서 자주 쓰이는 정석 백엔드 프레임워크
  • MySQL / PostgreSQL / MongoDB: 관계형·비관계형 데이터베이스
  • Git / Docker / Postman: 협업 및 API 테스트 도구

🗺 백엔드 입문 로드맵 (2025년 기준)

1. 기본 개념 이해
- 클라이언트 vs 서버, HTTP, REST, JSON 등

2. 언어 선택 및 학습
- JavaScript (Node.js) or Python 추천

3. 프레임워크 익히기
- Express.js, FastAPI 등으로 라우팅, 미들웨어 구조 이해

4. 데이터베이스 연동
- MySQL 또는 MongoDB로 CRUD 구현

5. API 설계 및 테스트
- REST API 규칙, Postman으로 테스트

6. 인증 & 보안 기초
- JWT, 세션, 해싱, HTTPS 등

7. 배포 경험 쌓기
- Render, Railway, Vercel 등 무료 호스팅 활용

8. 미니 프로젝트 수행
- 유저 로그인/게시판/댓글 기능 구현

📚 추천 자료 & 공부법

🚀 나에게 맞는 진로 고민 + 포트폴리오 전략

  • 데이터를 다루거나 논리 구조 설계에 흥미가 있다면 백엔드에 적합
  • 실무에서는 협업을 위한 API 문서화, 테스트, 버전 관리가 중요
  • 포트폴리오는 실전 기능 구현 중심 (예: 게시판, 채팅앱, REST API 서버)

✅ 마무리

백엔드는 단단한 시스템 구조를 만드는 매력적인 분야입니다. 처음엔 낯설 수 있지만, 한 단계씩 배워가며 프로젝트를 통해 성취감을 쌓아보세요. 이 로드맵을 따라가면 어느새 실전 프로젝트까지 도전할 수 있어요!

728x90
728x90

🔍 홀로그램 기술 개요

홀로그램은 레이저 광의 간섭 현상을 이용해 입체 정보를 기록하고 재생하는 기술로, 1947년 데니스 가보르에 의해 처음 고안되었습니다. 이후 레이저 기술의 발전과 함께 산업적으로 다양하게 활용되고 있으며, 최근에는 교육, 의료, 보안, 엔터테인먼트까지 영역을 확장 중입니다.

🧬 홀로그램의 원리와 구분

  • 원리: 레이저 빛의 반사와 회절, 간섭을 기록하여 3차원 정보로 복원
  • 기록 & 재생: 참조광과 물체광의 간섭무늬를 저장 → 다시 레이저를 비추어 3D 영상으로 재생
  • 유형 구분: 간섭 기반/회절 기반, 정적/동적 디스플레이로 분류

💡 플로팅 홀로그램이란?

  • 기울어진 투명 포일 또는 하프미러를 활용하여 공중에 영상이 떠 있는 듯한 효과를 주는 기술
  • Single-plane, Pyramid, Multi-planar 구조 등으로 구현

  • 보안, 공연, 홍보, 교육 등에 적극 활용되고 있음

🖥️ 홀로그램 모니터 & 탠저블 홀로그램

  • 룩킹 글라스: 안경 없이 3D 이미지를 구현하는 디스플레이
  • 탠저블 홀로그램: 플라즈마 기술로 공중에 손으로 만질 수 있는 빛 입자를 생성하는 기술

💼 홀로그램 산업과 전망

  • 2025년까지 743억 달러로 성장할 것으로 예상
  • 보안, 교육, 의료, 자동차, 문화 콘텐츠 등 다양한 산업으로 확산
  • 국내 시장도 꾸준히 성장하며, 수입 의존 탈피를 위한 기술 자립이 과제

📹 홀로그램 영상 예시

🛠️ Pyramid  준비물

  • 투명 플라스틱 판 (CD 케이스, PET 필름, 아크릴판 등)
  • 자, 커터칼 (또는 가위)
  • 테이프 또는 순간접착제

📐 도면 및 치수 (스마트폰용 기준)

정사각형 피라미드 4면 구조 (윗면 없이)

부위 길이 (cm)
아래 변 6
위쪽 변 1
높이 3.5

📏 위 형태의 사다리꼴 4장을 잘라야 합니다.

728x90
728x90

🤖 딥러닝이란?

딥러닝은 데이터를 통해 스스로 학습하고 판단하는 인공지능 기술이에요.
사람의 뇌 구조를 본뜬 '인공 신경망'을 이용해 이미지, 소리, 텍스트 등 다양한 정보를 분석하죠.
우리가 흔히 쓰는 넷플릭스 추천, 포토앱의 자동 분류도 다 딥러닝 덕분!


🛠️ 케라스란?

케라스(Keras)는 복잡한 딥러닝 모델을 쉽고 간결한 코드로 구현할 수 있게 도와주는 파이썬 기반 도구예요.
복잡한 수학 없이도, 딥러닝을 '만들고 실행'까지 가능하게 해줘서 입문자에게 최고예요!


📐 딥러닝 기본 구조 (한눈에 보기)

  • 입력층: 예를 들어, 28x28 이미지 픽셀
  • 은닉층: 데이터의 특징을 추출
  • 출력층: 숫자/이미지/문자 등 예측 결과 제공

💻 직접 만들어보는 AI 모델 (코랩 실습 예시)

import tensorflow as tf
from tensorflow.keras import Sequential
from tensorflow.keras.layers import Dense, Flatten

# 1) 데이터 준비
:contentReference[oaicite:7]{index=7}
:contentReference[oaicite:8]{index=8}
:contentReference[oaicite:9]{index=9}

# 2) 모델 구성
model = Sequential([
    :contentReference[oaicite:10]{index=10}
    :contentReference[oaicite:11]{index=11}
    :contentReference[oaicite:12]{index=12}
])

# 3) 컴파일
:contentReference[oaicite:13]{index=13}
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

# 4) 학습
:contentReference[oaicite:14]{index=14}

# 5) 평가
:contentReference[oaicite:15]{index=15}
:contentReference[oaicite:16]{index=16}

구글 코랩에 붙여넣기만 하면 바로 실행 가능! 🤩


🎯 왜 코랩 & 케라스인가?

  • 💸 무료 GPU 지원
  • ⏱ 빠른 실행 속도
  • 💬 초보자도 이해할 수 있는 직관적인 코드

🔜 다음 단계로는?

🧠 CNN (Convolutional Neural Network)

  • 이미지 처리 특화된 딥러닝 구조예요.
  • 필터(커널)를 통해 사진 속 윤곽, 모양, 패턴을 잡아냅니다.
  • 예: 얼굴 인식, 자율주행 자동차, X-ray 판독 등에 활용

🧠 RNN (Recurrent Neural Network)

  • 시간 순서를 고려하는 네트워크로, 텍스트나 음성 처리에 강력해요.
  • 과거 데이터를 기억하며 문맥을 이해할 수 있어요.
  • 예: 자동 번역기, 음성 인식, 감정 분석 등에 사용

💬 챗봇, 추천 시스템

  • 지금 여러분이 보고 있는 챗GPT도 딥러닝 기반이에요!
  • 추천 시스템은 유튜브, 넷플릭스처럼 사용자 취향 분석 후 콘텐츠 추천
  • 이런 응용 모델들은 CNN, RNN 기술을 응용해 만든 고급 AI 시스템이랍니다.

🏷️ 태그:

#AI트렌드 #딥러닝쉽게배우기 #구글코랩입문 #케라스튜토리얼
#캐글시작하기 #스마트기술 #AI초보탈출 #딥러닝은재밌다

728x90
728x90

인공지능의 정의

인공지능(Artificial Intelligence, AI)이란 인간의 지적 능력을 컴퓨터에서 구현한 기술로, 다양한 소프트웨어와 시스템이 포함됩니다. 이 개념은 1956년 미국 다트머스 회의에서 존 매카시에 의해 공식화되었습니다. 그는 "기계를 인간처럼 행동하게 만드는 것"이라 정의했습니다.

인공지능의 역사

  • 앨런 튜링은 컴퓨터도 사고할 수 있다는 주장을 제시하며, '튜링 테스트'를 고안했습니다. 이 테스트는 지금도 AI 판별 기준으로 쓰입니다.

인공지능의 발전

  • 1956년 다트머스 회의: 존 매카시가 '인공지능(AI)'이라는 용어를 처음으로 사용하며, AI 연구의 시초가 되었습니다.
  • 앨런 튜링의 기여: ‘튜링 테스트’를 통해, 기계가 사람처럼 사고할 수 있는지 평가하는 기준을 제시하며 AI의 철학적 기반을 마련했습니다.

🚀 1990년대 ~ 2010년대의 발전

  • 빅데이터와 GPU의 등장: 1990년대 후반~2000년대, 저장 장치와 컴퓨팅 파워의 발전으로 데이터 기반 AI가 가능해졌습니다.
  • 딥러닝의 등장: 2012년, 이미지넷(ImageNet) 대회에서 딥러닝 기반 모델 'AlexNet'이 기존 모델을 압도하면서 딥러닝이 본격적으로 각광받기 시작했습니다.

📈 2020년대 이후의 인공지능

  • 초거대 AI 모델의 시대:
    • 구글의 BERT, OpenAI의 GPT 시리즈, 메타의 LLaMA 등 수십억~수천억 파라미터를 가진 언어모델이 탄생했습니다.
    • 이 모델들은 검색, 번역, 이미지 생성, 코딩, 교육 등 다양한 분야에서 활용되며 범용 인공지능(AGI)의 가능성까지 논의되고 있습니다.
  • 멀티모달 AI:
    • 텍스트, 이미지, 음성 등 다양한 데이터를 동시에 처리할 수 있는 AI 기술이 발전하고 있습니다. 대표적으로 GPT-4, Gemini, Claude 등은 텍스트와 이미지 이해를 동시에 수행할 수 있습니다.
  • 생성형 AI의 상용화:
    • ChatGPT, Midjourney, Runway ML, DALL·E, Sora 등 다양한 생성형 AI 도구들이 일상과 산업에 보급되고 있습니다.
    • 콘텐츠 제작, 마케팅, 게임 개발, 의료 등 다양한 산업에서 AI가 창의적 도구로 활용되고 있습니다.

🌍 사회적 변화와 윤리

  • AI 윤리와 규제: 기술의 발전과 함께 AI의 책임, 공정성, 투명성, 저작권 문제 등을 다루는 윤리적 논의가 활발히 진행되고 있으며, 유럽연합(EU) 등은 AI 법안을 제정 중입니다.
  • 일자리 변화: 반복적이고 단순한 작업은 자동화되고, 창의적/분석적인 업무에 AI가 협력자로 투입되며, 직업 구조에 변화가 생기고 있습니다.

자율제조 인공지능

  • 자율제조 AI는 제조현장에서 데이터를 바탕으로 설비 제어, 이상 감지, 품질 분석 등을 자동으로 수행하는 기술입니다.
  • 주요 기술: 비전 AI 기반 불량 검출, 센서 데이터 분석, CNN으로 이미지 인식, RNN으로 생산 예측
  • 스마트팩토리와 연계되어 실시간 공정 최적화와 인력 최소화를 실현합니다.

머신러닝의 종류

  • 지도학습: 정답 데이터를 기반으로 학습 (SVM, 결정트리 등)
  • 비지도학습: 정답 없이 패턴 탐지 (군집화 등)
  • 강화학습: 보상을 통해 행동 전략을 스스로 학습

강화학습의 개념

  • 보상을 통해 학습을 진행하며, 시계열 행동을 최적화합니다.
  • 게임, 로봇 제어, 물류 시스템 최적화 등에 활용됩니다.

딥러닝의 구조

  • 인간의 뇌를 모방한 인공신경망(ANN)을 기반으로 구성
  • 입력층 → 은닉층(hidden layer) → 출력층으로 이루어지며, 비선형 문제 해결에 탁월

DNN의 발전

  • 은닉층이 많은 딥 신경망(DNN)은 다양한 특성 학습에 강점을 가집니다.
  • 응용 모델: CNN(이미지), RNN(시계열), LSTM, GRU 등

CNN의 특징

  • 이미지 인식에 탁월한 신경망
  • Convolution + Pooling + FC layer로 구성
  • 얼굴 인식, 불량 검출, 자율주행 비전 등에 활용

RNN의 활용

  • 시간 흐름에 따른 데이터(텍스트, 음성 등)에 강력
  • 과거 입력을 현재 예측에 반영하는 구조

케라스(Keras) 소개

  • Python 기반 딥러닝 라이브러리
  • TensorFlow 백엔드를 사용하며, 간단한 코드로 강력한 모델 구현 가능
  • 대표 함수: compile(), fit(), evaluate(), predict()

딥러닝 모델 구성 순서

  1. 데이터셋 생성: 원본 데이터를 전처리해 훈련/검증/시험셋 생성
  2. 모델 구성: Sequential 또는 함수형 API로 모델 설계
  3. 학습 설정: 손실함수, 옵티마이저 정의
  4. 모델 학습: fit() 함수로 훈련 수행
  5. 성능 평가: evaluate() 함수 사용
  6. 결과 예측: predict() 함수로 출력 도출

📥 정리된 PPT 파일 다운로드

이번 포스팅에서 소개한 인공지능과 딥러닝에 대한 내용을 한눈에 보기 쉽게 PPT로 정리해두었습니다.
강의자료, 스터디, 발표 등에 활용하고 싶으신 분들은 댓글로 메일 주소 남겨주시면 등록하겠습니다.
등록후에 아래 링크를 통해 다운로드하실 수 있어요.
https://drive.google.com/drive/folders/1S8dv7zUDu6e5cpcIxICC_NHCg_hL3eqB?usp=sharing

728x90
728x90

✅ OPC UA란?

**OPC UA (OPC Unified Architecture)**는 제조 장비와 시스템 간 안전하고 신뢰성 높은 데이터 통신을 가능하게 하는 산업용 통신 표준입니다. 기존의 OPC(Classic)와 달리 플랫폼 독립적이며, 보안, 확장성, 데이터 모델링 기능이 강화되어 있습니다.


🔧 OPC UA 구조 (쉽게 설명)

1. 서버(Server) - 데이터를 제공하는 쪽

  • PLC, 센서, 로봇 등 실제 장비에 설치됨
  • 내부의 변수(예: 온도, 속도, 상태 등)를 OPC UA 객체로 외부에 제공

2. 클라이언트(Client) - 데이터를 읽거나 제어하는 쪽

  • HMI, SCADA, MES, 분석 시스템 등
  • OPC UA 서버에 접속하여 실시간 데이터를 구독하거나 값을 변경함

3. 정보 모델(Information Model)

  • 데이터들이 단순한 값이 아닌 구조화된 객체로 표현됨 (예: ‘모터 → 속도, 전류, 상태’ 식)

4. 통신 방식

  • TCP/IP 기반으로 통신
  • 보안(암호화, 인증), 데이터 구독(Subscription), 이력 저장(History Access) 등을 지원

🖥️ Python OPC UA 서버 코드

from opcua import Server
from datetime import datetime
import random
import time

# OPC UA 서버 생성
server = Server()
server.set_endpoint("opc.tcp://0.0.0.0:4840/freeopcua/server/")

# 네임스페이스 등록
uri = "http://example.org/opcua"
idx = server.register_namespace(uri)

# 객체 생성: Sensor
objects = server.get_objects_node()
sensor = objects.add_object(idx, "MySensor")

# 변수 생성
temperature = sensor.add_variable(idx, "Temperature", 25.0)
humidity = sensor.add_variable(idx, "Humidity", 40.0)

# 외부에서 값을 쓸 수 있도록 설정
temperature.set_writable()
humidity.set_writable()

# 서버 시작
server.start()
print("OPC UA 서버 실행 중...")

try:
    while True:
        # 가상의 데이터 업데이트
        temp_val = round(random.uniform(20, 30), 2)
        hum_val = round(random.uniform(35, 60), 2)

        temperature.set_value(temp_val)
        humidity.set_value(hum_val)

        print(f"{datetime.now()} → Temp: {temp_val}°C, Humidity: {hum_val}%")
        time.sleep(2)

except KeyboardInterrupt:
    print("서버 종료 중...")
    server.stop()

 

📡 주요 기능 설명

항목 설명
set_endpoint 클라이언트가 접속할 수 있는 서버 주소 (IP, 포트) 설정
register_namespace 사용자 정의 네임스페이스 URI 등록
add_object, add_variable OPC UA 구조 내 객체 및 변수 생성 (노드 구성)
set_value() 주기적으로 변수 값을 갱신하여 클라이언트에 실시간 데이터 제공

💡 예제: Python으로 OPC UA 클라이언트 만들기

아래는 Python에서 opcua 라이브러리를 활용해 실제 값을 읽는 간단한 예시입니다.

from opcua import Client

# OPC UA 서버 주소 (예: 장비 또는 시뮬레이터)
url = "opc.tcp://localhost:4840"

# 클라이언트 생성 및 접속
client = Client(url)
client.connect()
print("서버에 연결되었습니다.")

# 노드(변수) 지정: Node ID는 장비마다 다름
node = client.get_node("ns=2;s=Temperature")  # 예: 온도 변수
value = node.get_value()
print(f"현재 온도 값: {value}")

client.disconnect()

이 코드는 OPC UA 서버에 연결하여 "Temperature"라는 변수 값을 읽어옵니다.

 

https://www.youtube.com/watch?v=Em_Gx0rWc5U

 


🧪 실습용 무료 서버 추천

  • Prosys OPC UA Simulation Server
    윈도우에서 무료로 제공, 다양한 변수 제공
  • Unified Automation UA Expert
    전문 OPC UA 클라이언트 툴로 실시간 확인 가능
  • FreeOPCUA (Python 서버 구현)
    Python 기반 OPC UA 서버도 직접 구현 가능

📦 활용 예시 (현장 중심)

분야 예시 사용
제조라인 장비 온도/속도/불량률 실시간 수집
에너지 태양광 인버터 상태 모니터링
물류 AGV, 컨베이어 센서 상태 모니터링
스마트팩토리 MES ↔ PLC 연동, 에너지 절감 분석 등
 

https://www.youtube.com/watch?v=ZlJCuAeGPis

 

728x90
728x90

3.1 버퍼 락의 필요성

오라클은 다수의 프로세스가 동시에 같은 데이터 블록을 읽고/쓰는 상황에서도 데이터 무결성과 동기화를 보장해야 한다. 만약 여러 프로세스가 동일한 버퍼를 변경한다면, 데이터 손상이나 충돌이 발생할 수 있다. 이를 방지하기 위해, 오라클은 Buffer Lock이라는 내부 락 메커니즘을 제공한다.

🔐 동시 접근 방지

  • 프로세스가 캐시된 버퍼 블록을 읽거나 변경하려면 먼저 해당 블록의 Buffer Lock을 획득해야 한다.
  • 버퍼 내용을 읽을 때는 Shared 모드, 변경할 때는 Exclusive 모드로 락이 설정된다.

🧠 이는 파일 시스템에서 읽기/쓰기 락을 거는 것과 유사하다.


3.2 버퍼 락 획득 과정

  1. 해시 체인 래치 획득: 버퍼를 찾기 위해 먼저 해시 버킷을 따라가는 체인 구조 접근 시 래치를 사용.
  2. 버퍼 블록 탐색: 요청 블록을 체인에서 탐색.
  3. 버퍼 락 확인:
    • 이미 다른 프로세스가 Buffer Lock을 Exclusive 모드로 점유 중이라면,
    • 현재 프로세스는 버퍼 락 대기자 목록에 등록되어 대기한다.
  4. 락 해제 감지 후 재시도: 기존 프로세스가 락을 해제하면, 대기 중이던 프로세스가 락을 획득한다.

3.3 블록 클린아웃(Block Cleanout)

오라클은 다중 트랜잭션 환경에서 **일관된 읽기(Read Consistency)**를 유지하기 위해 Undo를 사용한다. 하지만 한 번 트랜잭션이 커밋되면, 나중에 그 블록을 읽는 사용자가 해당 정보를 Undo에서 찾지 않도록, 해당 블록에 커밋 정보를 반영하는 작업을 수행한다. 이 작업을 블록 클린아웃이라 부른다.

  • 클린아웃은 SELECT 시점이나 백그라운드에서 수행될 수 있다.
  • 클린아웃 중에는 블록 수정이 발생하므로 Buffer Lock이 필요하다.

🔄 이 과정은 읽기 작업임에도 일시적으로 블록이 "쓰기 락" 상태로 바뀔 수 있다.


3.4 버퍼 핸들과 Pin 설정

📦 버퍼 핸들(Buffer Handle)이란?

  • 버퍼 헤더의 포인터를 통해 참조되는 구조체로, 특정 블록의 접근 제어 정보를 담고 있다.
  • 각 프로세스는 버퍼 핸들을 통해 블록을 Pin하여 사용.

🔗 Pinning의 과정:

  • 프로세스가 버퍼 핸들을 획득하면 헤더에 있는 소유자 리스트에 연결된다.
  • 이 리스트에 등록됨으로써, 해당 프로세스가 블록을 사용하는 동안 다른 프로세스가 블록을 교체하지 못하게 한다.

3.5 Buffer Pinning의 장점

Buffer Pinning은 논리적 블록 읽기(Logical Block Read) 시 발생하는 불필요한 작업을 제거하여 성능을 획기적으로 향상시킨다.

🌟 효과:

  • 해시 체인 래치 재획득 없이 블록을 연속해서 참조 가능
  • 재검색 없이 캐시에 유지된 블록을 직접 재사용 가능

🔁 CPU와 메모리 자원을 절약하며, 특히 반복적인 액세스가 많은 인덱스 스캔에서 효과적이다.


3.6 인덱스 리프 블록과 Range Scan

📌 인덱스 리프 블록이란?

  • B-Tree 인덱스 구조에서, 실제 인덱스 항목들이 저장되는 최하위 블록.
  • 데이터베이스에서 인덱스를 통해 WHERE 조건을 만족하는 값을 찾을 때 참조된다.

🔍 Index Range Scan의 I/O 증가 원인

  • 인덱스 리프 블록은 여러 개로 나뉘어 있어 여러 블록을 순차적으로 탐색해야 함.
  • 매번 새로운 블록을 읽어야 하므로 디스크 I/O가 늘어날 수 있다.

3.7 Buffer Pinning으로 I/O 감소하는 원리

Buffer Pinning은 인덱스 리프 블록 같이 빈번하게 반복 접근되는 블록을 메모리에 고정시켜, 불필요한 디스크 접근을 줄여준다.

🔧 원리 요약:

  1. 첫 번째 액세스 시 블록을 버퍼 캐시에 로드하고 핀 설정
  2. 이후 동일 세션에서 동일 블록 재접근 시
    • 해시 체인 탐색, 래치 획득 없이 직접 재사용 가능
    • 디스크 I/O 생략 가능

📈 인덱스 기반 검색이 많은 OLTP 환경에서는 Buffer Pinning이 성능 최적화의 핵심이 될 수 있다.


📎 관련 태그

#Oracle #BufferLock #BufferPinning #Latch #BlockCleanout #IndexLeafBlock #RangeScan #LogicalRead #DatabasePerformance #ConcurrencyControl #SGA

728x90
728x90

2.1 Database Buffer Cache 구조

Database Buffer Cache는 오라클의 핵심 메모리 영역으로, 디스크 I/O를 줄이고 SQL 실행 성능을 높이기 위한 캐시 역할을 한다. 디스크에서 데이터를 읽을 때는 블록 단위 I/O가 수행되며, 이 블록들은 버퍼 캐시에 로드된다.

🔍 블록 식별 구조: 해시 버킷과 체인

  • 오라클은 데이터 블록을 빠르게 찾기 위해 해시 테이블을 사용한다.
  • 해시 테이블의 각 엔트리는 **해시 버킷(Hash Bucket)**이며, 동일 해시값을 가진 블록들은 **연결 리스트(체인)**로 연결된다.
  • 각 체인은 **버퍼 헤더(Buffer Header)**를 통해 연결되며, 이 버퍼 헤더는 해당 블록의 위치, 상태, LRU 및 해시 체인 포인터 등을 포함한다.
  • 사용자가 특정 블록을 요청하면, 오라클은 해당 블록의 주소를 해시 함수로 계산하여 버킷을 찾고, 그 버킷에 연결된 체인을 따라가며 원하는 블록을 탐색한다.
-- 해시 버킷 개수 확인 SQL 예시
SELECT name, value FROM v$parameter WHERE name = 'db_block_hash_buckets';

🎯 체인 탐색 비용 최소화 전략: 하나의 체인에 여러 버퍼가 걸리면 탐색 비용이 증가하므로, 하나의 체인에 하나의 버퍼만 걸리는 것을 이상적인 상태로 본다. 이를 위해 해시 버킷 수를 충분히 확보하고, 해시 분포가 균등해야 한다.


2.2 Latch(래치) 메커니즘

Buffer Cache는 다수의 세션이 동시에 접근하는 공유 영역이기 때문에, **자료구조에 대한 직렬화(Serialization)**가 필수적이다. 이 역할을 수행하는 것이 바로 **래치(Latch)**이다.

✅ 래치의 특징

  • 래치는 데이터 보호가 아닌, SGA의 공유된 내부 자료구조 보호를 위한 경량 락이다.
  • 사용 시점:
    • 해시 체인을 스캔할 때
    • 버퍼 블록을 추가하거나 제거할 때
    • LRU 리스트를 갱신할 때
  • 래치는 매우 빠르게 작동하는 Spin Lock 형태로 구현되어, 짧은 시간 동안만 유지되며 빠른 자원 접근을 보장한다.

🔄 오라클에서 '읽기 전용 모드'란 단순히 SELECT 문을 실행하는 것이 아니라, 해시 체인을 따라가며 필요한 블록을 찾는 작업 전체를 의미한다. 이 모든 탐색 작업은 래치의 보호 하에 수행된다.


2.3 LRU 체인 구조

Buffer Cache는 재사용 정책을 위해 LRU (Least Recently Used) 리스트를 사용한다. 이 리스트는 크게 두 가지로 나뉜다:

  • Dirty List:
    • 수정된 블록으로, 아직 디스크에 쓰이지 않음.
    • DBWR 프로세스가 디스크에 플러시하기 전까지 유지됨.
  • LRU List:
    • 아직 변경되지 않았거나, 이미 디스크에 반영된 블록들.
    • 재사용 대상이며, 새로운 블록을 로드할 때 가장 오래된 것부터 제거됨.

📌 버퍼 헤더는 이 두 리스트 중 하나에 반드시 소속되어 있으며, 리스트 간 이동 또한 래치의 보호 하에 수행된다.


2.4 버퍼 상태의 3가지 유형

Buffer Cache의 각 블록은 다음 세 가지 상태 중 하나로 존재한다:

상태설명

Free Buffer 어떤 데이터도 없는 초기 상태의 블록. 재사용 가능.
Dirty Buffer 변경되었지만 아직 디스크에 반영되지 않은 블록. DBWR 대상.
Pinned Buffer 현재 세션이 사용 중인 블록. 다른 세션에서 접근 불가.

📘 이 상태들은 Buffer Management, Dirty List 처리, 세션 동기화에 모두 관여하며 성능에 직결되는 요소이다.


2.5 요약 및 실무 팁

  • Buffer Cache는 블록 단위 I/O를 캐싱하여 성능 향상을 꾀한다.
  • 해시 테이블 + 체인 구조를 통해 빠르게 원하는 블록에 접근 가능하다.
  • 버퍼 헤더는 블록 메타데이터와 해시 체인 및 LRU 포인터를 포함하여 탐색과 관리에 핵심적이다.
  • 래치는 SGA 자료구조 보호를 위한 경량 락으로, 모든 체인 탐색, 버퍼 이동 시점에 사용된다.
  • LRU는 Dirty와 Clean 리스트로 구성되어 버퍼 교체 정책을 제어한다.
  • 각 블록은 Free, Dirty, Pinned 상태를 가지며, 이를 통해 작업 흐름이 제어된다.

📎 관련 태그

#Oracle #SGA #BufferCache #Latch #HashChain #LRU #DirtyBuffer #PinnedBuffer #FreeBuffer #BlockIO #BufferHeader #DatabasePerformance #OracleMemoryArchitecture

728x90

+ Recent posts