julio@fEELING

그림으로 공부하는 오라클 구조 본문

感 Book

그림으로 공부하는 오라클 구조

1incompany 2021. 3. 13. 21:19

그림으로 공부하는 오라클 구조

2015.09.10 오다 케이지 지음/ 이민재 옮김/ 제이펍

 

저자의 신조가 '오라클도 OS에서 움직이는 애플리케이션에 지나지 않는다'

역자는 나만 알고 싶은 오라클 실무 테크닉이란 책도 있음.

 

오라클 제품은 오라클에서 만든 교재를 보면 되는데 굳이 이런 책을 볼 필요가 있을까? 특히 현업 도메인에 관계된 암묵지라면 또 모르겠는데 말이지, 그래도 구입안하고 빌려 읽으니 생략.

 

oracle express edtion이 나오면서 오라클 운영이 아닌 오라클을 데이터베이스로 개발할 프로그래머에겐 그런 교재보단 이런 책이 더 쉽게 이해할 수 있는 바탕이 되게 해주겠군! 건데 웬만해선 오라클을 윈도 계열 보단 유닉스나 리눅스에서 운영할테고 운영이나 튜닝은 또 다른 분야인데, 역자는 이 책부터 보고 오라클 실무 테크닉을 보라는 추천을 하는데, 난 잉! 했다.

 

아무말 대잔치

적확한 접근을 해보면, 오라클을 사용한다는 건 그래도 중견 기업은 될테고 그렇다면 운영과 튜닝은 따로 할 사람이 있을테고, db 관련 종사자 말고 오라클 접할 사람은 sql문을 잘하는게 베스트라고 보는게 정상적이다. 거기에 sql 표준에서 통계나 성능에 관련된 추가 함수나 키워드를 제대로 배우는게 나을텐데... 물론 개발자라면 그바탕엔 odbc/jdbc 표준에 맞는 반복적인 코드 부분이야 기본이다. 난 odbc/mfc로 했었고, java/jdbc 으로 구현했고, 이젠 mybatis도 현업해서 적용해본 입장에서 데이터베이스 접근 쿼리는 달라지지만 넓게 보면  odbc에서 벗어나지 않는다는 것을 이해했다. jpa로 넘어오면서 java로 query를 대체한다고 하고, 게시판 모듈 같은데 더 빨라졌다고 하지만 궁극에 접근해서 결과값 가져와 보여주려면 oracle native sql문이 최고라는 생각엔 변함없다.

당연히 이런 경험을 이기고자 하기에 지금 시작하는 개발자는 그걸 건너뛴 그무엇이라면 sql문보단 jpa라고 하지만 그것 역시 환경을 잘 이해하고 구현하지 않으면 사이드 이펙트가 아주 많은 것 같더라. 개인적으로 인프런이란 곳에서 jpa 두강좌를 개인비용으론 고가에 들었지만, 딱 입문 수준이었고, join했을 경우의 성능 부분도 메모리에 로딩이 되던데 gc가 잘 처리 되는 것을 이해하지 못하면. 여기까지. 거기에 난 sql문을 그런대로 아니 jpa보단 mybatis가 제품 딜리버리 하는 데 개발시간 면에서 낫기 때문이기도 하다. 알고 있는 것을 잊어버릴 필요는 없으니.

 

어제 올린 박재호씨의 영상에서 레거시 정의를 현재 돈을 벌어다 주는 시스템이라고 했는데, 이런 측면으로 이해하면 나이먹어 일자리 고민보단, 새로운 것 배우는 것도 좋지만 현재 시스템을 잘 운영하는 것도 아주 쓸모있는, 가치 있는 일이란 걸...

 

 

 

책을 보니 디스크 부터 나옴. 아흐 SSD 시대인데 ㅋㅋ. 거기에 하드디스크 물리적 구조부터 설명하는 건 오버라고 본다. 왜냐면 물리적인 하드디스크를 이해 안해도 잘 작동 되게 오라클 개발자들이 잘 만들었고, 그것을 개념화한 교재도 있는데, 저런 설명은 굳이. 오라클 9 수업 돈내고 들었기에 이런 말은 해도 되겠지?! 들었다고 다 아는 건 아니지만.

 

SQL*Plus

'여러 사용자나 프로그램이 데이터베이서의 데이터를 공유하고 있다' -p19 =>db 사용자가 multi user라는 건 당연한 이야기인데,

오라클은 서버 프로세스라고 불리는 SQL문을 처리하는 프로세스와 백그라운드 프로세스라고 불리느, 주로 서버 프로세스를 도와주는 프로세스로 구성되어 있습니다.-p24 => 이것은 오라클 만든 사람이 이렇게 설계했다고 생각하는게 더쉬운 이해가 된다.

 

sql문의 수신

sql문의 파싱

데이터 읽기

데이터 기록

sql문의 결과 회신

로그 기록

각종 정리

로그 보관

 

오라클에서 데이터 캐시(버퍼 캐시)

오라클은 '블록'이라고 하는 단위로 데이터를 관리

SGA

PGA

DB_CACHE_SIZE

LRU알고리즘

DBWR 프로세스

 

hint 예) /* + index (A B) */ A 테이블의 B라고 하는 인덱스를 사용하라는 뜻.

옵티마이저(파서)가 sql문을 분석하고 '실행 계획(excute plan)'이라고 하는 처리 방법을 생성해 주기 때문이다.

오라클에서는 처리 시간이나 I/O 횟수를 예측하기 위해서 '비용'이라고 불리는 수치를 이용합니다. 비용을 단순하게 이야기하며, '처리에 필요하다고 생각되는 시간 또는 자원 사용량'입니다.

 

비용을 계산하기 위한 기초 수치, '통계 정보' dbms_stats

 

tnsnames.ora - JDBC Thin  드라이브는 제외

listener.ora - lsnrctl

 

PCTFREE, PCTUSED

 

Comments