데이터이야기

DB 노하우, 데이터직무, 다양한 인터뷰를 만나보세요.

단무지 시즌 IV: 단무지의 DB 운영 이야기(2회) : 데이터 아키텍트 단무지, 아수라장에 홀로 떨어지다!!!

데이터 이야기
작성자
dataonair
작성일
2016-07-19 00:00
조회
3861


단무지 시즌 IV: 단무지의 DB 운영 이야기(2회)

데이터 아키텍트 단무지, 아수라장에 홀로 떨어지다!!!



[필자 소개] 서윤식은 외환신용카드에서 DBA 12년, 현대하이카다이렉트에서 DA로 10년을 일했다. 금융권 데이터 분야에서 22년간을 보내며, DBMS 운영 및 튜닝, SQL 튜닝, 데이터 모델링, 데이터 품질관리 영역 등 DB의 전 영역을 고루 경험하였다. 이학사(전자계산학과), 경영학 석사를 거쳐 2015년 8월 IT 정책경영학과 박사 과정을 수료하였다. 2016년 3월부터 데이터와사람들의 대표로 있으며, 한국데이터베이스진흥원의 산업체 전문 강사로서 데이터 모델링 및 SQL 튜닝 강의를 하고 있다. 또한 ‘데이터와사람들(http://cafe.naver.com/dbstudydapsqlp)’이란 네이버 카페를 운영하며, 데이터 영역에 지식이 필요한 사람들과 다양한 방법으로 소통하고 있다.



들어가면서

단무지는 잘나가 금융지주에서 신규 설립한 잘나가다이렉트손해보험사의 IT 개발팀 팀장으로 발령받아 왔다. IT 개발팀은 애플리케이션과 DB를 운영하는 팀이다. 애플리케이션 부문은 신규 오픈임에도 안정적으로 운영되고 있으나, DB는 방치 상태라는 것을 확인했다. 긴급 투입된 단무지 팀장은 DB 안정화를 위해 1) 일일점검, 2) 백업의 정상 여부 점검 및 Recovery 테스트, 3) DB 보안 시스템 구축, 4) DB 모니터링 시스템 구축, 5) DB를 순차적으로 진행하려 하고 있다. 자, 그럼 단무지 팀장이 잘 진행하는지 함께 지켜보자.



힘들 땐 즐거운 일을 찾자

단무지는 그라운드에 서 있다. 본인에게 날아오는 공은 그냥 통과 시키지 않겠다는 다부진 자세로 몸을 잔뜩 웅크린 채 글러브 낀 왼손은 운동장 바닥으로 향하고 있다. 투수가 던진 공을 상대팀 타자가 강하게 받아 쳤으나, 3루수가 이내 잡아 챘다. 1루수 단무지는 3루수가 던져주는 공을 잡기 위해 최대한 빠르게 1루 베이스로 향했고, 이내 포구자세를 잡았다. 3루수, 저 친구 어깨가 약한데 과연 제대로 송구를 할 수 있을까 하는 생각이 단무지의 머리에 스친다. 3루수는 단무지의 생각을 아랑곳 하지 않고 혼신의 힘들 다해 1루수 단무지에게 공을 뿌렸다. 날아오는 방향은 단무지를 향해 정확히 날아오고 있었으나, 높낮이가 문제였다. 단무지의 걱정대로 공은 단무지 바로 앞에서 바운드될 것 같다. 1루수가 가장 잡기 힘든 공이 글러브 바로 앞에서 바운드 하는 공이었다.

단무지는 사내 동호회 야구부에 가입했으며, 오늘 경기가 있는 날이다. 현재는 동호인 야구의 마지막 회인 7회말 2아웃에 주자 2, 3루 상황이다. 점수는 7:6으로 한 점차 아슬아슬한 리드를 지키고 있다. 동호인 야구에서 1루수 앞 원바운드 공은 놓치는 것이 공식인 것처럼 되어있다. 만약 동호인 야구선수가 그런 공을 놓치지 않고 잡아낸다면, 아마도 메이저리그에서 데려가려 할지도 모르는 일이다. 그런 공이 하필이면 이런 절체절명의 순간에 단무지를 향해 날아오는 것이란 말인가.

투 아웃이기에 주자는 타자가 공을 치는 순간 무조건 뛰었을 것이다. 단무지가 이 공을 잡으면 오늘은 승리로 끝나지만, 만약 놓친다면 2명의 주자가 모두 홈으로 들어 옴과 동시에 명예로운() 끝내기 에러의 주인공이 되는 것이다. 단무지의 왼쪽 발은 1루베이스를 밟은 채 무릎을 땅에 대고 무릎 앉아와 비슷한 자세를 취하여 원바운드 공을 최대한 포구하기 쉬운 자세를 취했다. 그리고 잡았을 경우 글러브에서 공이 흘러 나오지 않게 하기 위해 최대한 오른손을 글러브 근처에 대고 있다. 단무지의 폼은 그야말로 메이저리그 1루수와 비교해도 손색이 없었다. 역시 단무지의 폼생폼사 아무도 못말리는 수준이었다. 하지만 단무지에게 폼생폼사보다 더 중요한 것은 공을 잡느냐 마느냐였으며, 단무지의 집중도는 마치 헤리포터가 퀴디치 경기에서 스니치를 잡기 위해 목숨을 걸고 빗자루에 앉아있는 것과 같았다.

그라운드에 있는 모든 사람들, 즉 양팀 선수들과 심판은 숨을 죽인 채 공의 괴적과 단무지에 모든 시선이 집중되어 있다. 상대편 선수들은 단무지가 공을 놓치기만을 간절히 바랄 것이며, 단무지가 속한 팀원은 정 반대 상황을 염원하고 있다. 단무지는 마치 슬로우모션으로 공이 날아오는 것처럼 느꼈다. 이 순간은 세상에는 공과 단무지 단 둘만 있는 것처럼 느껴진다. 모든 말초신경 하나하나가 이 공에 집중되어 있다. 공과 단무지가 하나가 되는 것처럼 느껴졌다. 공이 단무지이며, 단무지가 공인 것 같았다. 만약 단무지가 수도승이라면, 이 순간 깨달음을 얻는 경지에 오를 수도 있을 것 같았다. 드디어 공은 단무지 바로 앞에서 흙먼지를 튀며 바운드 한다. 단무지의 글러브는 무의식 적으로 공에 다가간다. 단무지는 잡을 수 있다는 확신은 없었다. 단지 팔이 뇌의 명령 없이 단독으로 공에 다가가는 것 같았다. 이내 공은 단무지의 글러브로 빨려 들어갔다. 글러브를 끼지 않은 손은 글러브 안의 공이 빠져나오지 못하도록 순간 강하게 압박했다. 그리고 단무지는 300ms (0.3초) 동안 정지되어 있었다. SQL을 실행함에 있어 천분에 300초는 굉장히 긴 시간이다. 단무지는 0.3초가 정말 기나긴 시간이라는 것을 몸으로 실감했다. 단무지는 공을 놓치지 않았다는 것을 알리기 위해 무의식적으로 손을 높이 쳐 들었다. "우와~~~" 함성소리와 함께 단무지에게 팀원들은 달려 들었다. 팀원들은 단무지에게 물을 뿌려대며 기뻐하고 있다. 마치 프로야구에서 끝내기 홈런이라도 친 기세이다.

"단 팀장님, 마지막 포구 정말 멋졌습니다. 아마 프로야구 1루수라도 그렇게 멋지게 잡지는 못했을 겁니다." 경기가 끝나고 선수들은 뒤풀이를 하고 있었으며, 동호회 야구단 감독직을 맡고 있는 나감독 과장이 말했다.



단무지: 하하 운이 좋았지. 나도 잡을 줄을 몰랐어. 그냥 글러브를 갖다 댔는데 그냥 공이 알아서 들어 온거야. 나감독: 단 선배, 오늘 처음 입단하셔서 이 정도면 다음 경기부터는 빠지시면 안 되는
꼭 중요한 주전 선수가 되셨습니다. 하하단무지: 그래, 경기있는 주말은 가급적 참석할게.나감독: 가급적이라뇨 지금 가정도 없는 노총각께서 할 일이 뭐가 있다고 경기를 빠집니까
동호회 야구단의 가장 큰 적은 가정()인데... 단 선배는 프리하잖아요 하하단무지: 야… 나과장, 꼭 이런 자리에서 노총각 얘기를 할게 뭐냐
너 밥먹다 말고 머리 박아 본적 있냐나감독: 허허~~~ 이거 왜 이러실까 지금은 엄연히 야구단 모임이고!
단 선배는 선수이고! 전 감독입니다. 이러시면 항명죄에 해당됩니다. 단무지: (깨~~~갱) 그런가 알았다. 하하하. 어째든 오늘 너무 즐거웠다.나감독: 네 선배님, 아무래도 회사 전직하신 지 얼마 안됐으니, 이 회사에 경력직원으로 외부에서
영입한 직원들은 잘 모르시잖아요. 야구도 하고, 회사 직원들도 사귀기 위해서라도
올해는 꼭 개근하셔야 합니다.단무지: 그래, 알았다니깐. 자 시원하게 맥주나 한잔 하자. 하하



일일점검의 시작

단무지는 즐거웠던 주말을 뒤로 하고 팀에서 DBA 파트장을 맡고 있는 머나먼 대리와 마주앉아 있다. 2주 전 일일점검 항목을 검토하고 점검 대상을 정리해 오라고 했기에 머나먼 대리가 일일점검 항목을 가져왔다. 가져온 서류를 보니 머나먼 대리는 단무지가 예상한 수준을 벗어나지 못했다. 일일점검 항목이 너무나 단순했다.

1. User Tablespace 여유량 조사
2. Undo 및 Temporary Tablespace 여유량 조사
3. Disk 여유량 조사



단무지: 머 대리. 운영 DBA에게 가장 중요한 것이 뭘까 머나먼: 어~~~ 글쎄요. 단무지: DBA에게 가장 중요한 것은 백업이야. DB는 언제든 깨질 수도 있으며,
데이터가 의도하지 않게 지워질 수도 있어. 그때 대처할 수 있는 유일한 방법이 백업이야.
따라서 DBA가 아침에 와서 가장 먼저 점검할 항목이 전일자 백업이 정상적으로 수행되고 있는가
그리고 현재까지의 archive log가 정상적을 백업되고 있는가를 점검해야 해. 머나먼: 아~~~ 그렇군요.단무지: 각설하고. 내가 일일점검 항목을 적어 줄테니,
머 대리는 일일점검 항목별로 점검할 수 있는 SQL을 작성하여 나한테 가져와. 머나먼: 아~~~ 네, 알겠습니다.



일일점검 항목: 머나먼 대리의 머나먼 DA를 향한 첫걸음

단무지는 일일점검 항목을 적기 시작했다.

1. 백업 실행 여부
2. Archive Log 디렉토리 여유 여부
3. Invalid Object 존재 여부
4. Top 100 SQL의 실행계획 변경 여부
5. alert log 점검
6. 스케줄러(job)에 Broken 된 스케줄 존재여부
7. Tablespace 용량 점검
8. RAC 각 Node 별 적정 세션 연결 여부
9. snapshot 연결 Object 정상여부
10. snapshot object 중 snapshot_log 테이블이 비정상적으로 큰 테이블 존재여부
11. 전일자 CPU 사용률과 현재 CPU 사용률 비교
12. 옵티마이저를 위한 최신 통계정보 유지 여부
13. 통계정보 백업 유무
14. Library Cache 점검
15. Table Chain 블록 존재여부 점검
16. 비정상적인 Index Depth 깊은 것 존재여부 점검
17. Unusable Index 존재 여부
18. 운영DB와 개발DB 간 상이한 것 찾기 (테이블, 컬럼, Data type, Length, 인덱스, 인덱스 구조, 인덱스 컬럼 순서)
19. 즉시 튜닝해야 할 SQL 목록
20. AWR 리포트
21. 주요 점검항목의 초당 발생 수치
- system event: db file scatterd read, db file sequential read, library cache latch, library cache lock, library cache pin, direct path read direct path write, latch: cache buffers chains, buffer busy wait, free buffer wait, log file sync
- sysstat: enqueue wait, execute count, parse count, user call, user commit, physical reads, redo size, redo writes, session logical reads



단무지: 어때. 머나먼: 헉~~~ 팀장님, 너무 많은데요.단무지: 하하하 그렇지 만약 머 대리가 저걸 다 이해한다면, DBMS 및 SQL 튜닝에 대한 것은
모두 이해하게 될 거야 일주일 만에 하기는 쉽지 않겠지만, 할 수 있는 것까지 해봐.
내가 처음부터 답을 다 가르쳐 주면 재미 없잖아. 머나먼: 어~~ 그런데요. 팀장님, 혹시 참고할 만한 자료 또는 책이라도 추천해 주실 수 있나요단무지: 그야 어렵지 않지. 하지만 쉽지만은 않을 텐데. 일단 [오라클 성능 고도화 원리와 해법] 1, 2 두 권이야.
먼저 그 책을 참조하여 내가 준 숙제를 해 봐. 아마도 쉽지는 않을 거야



머나먼 대리는 얼굴이 하얗게 질려서 단무지 팀장의 자리를 떠났다. 단무지는 씨익 웃으며 머나먼을 보냈다. 절대 일주일 만에 머나먼이 할 수 있는 분량이 아니라는 것을 단무지도 알고 있었다. 그럼에도 불구하고 단무지가 숙제를 준 것은 일단 머나먼 대리가 튜닝에 대한 윤곽이라도 잡았으면 하는 것이었다. (다음에 계속)



에필로그

머나먼 대리가 숙제를 잘 할 수 있을까요 단무지는 아무것도 모르는 머 대리에게 무지막지한 숙제를 내 준것은 아닐까요 단무지의 단순! 무식! XX! 성격이 또 나온 건 아닐런지요 저 항목이 제가 매일 DBA들에게 일일점검을 시켰던 항목들입니다. 적지 않은 항목이지요. 하지만 매일 3개월만 하면 약 30분이면 충분히 점검 가능한 작업입니다. 저렇게 점검을 해야 장애를 예방할 수 있습니다. 대충 시켜서 하는 일일점검으로는 장애를 사전에 예방할 수 없습니다. DBA의 완벽함 만이 안정적인 DB 운영에 대한 담보입니다. DB 장애 발생은 곧 회사 전 시스템의 장애를 이야기 합니다. 파급 효과가 너무나도 크죠. 그렇기에 DBA는 완벽함을 추구해야 합니다. 다음 편에서는 항목 하나하나에 대한 설명과 확인할 수 있는 SQL들에 대해 나열해 보겠습니다. 많은 기대 부탁 드립니다. (다음 회에 계속)



출처 : 한국데이터베이스진흥원

제공 : 데이터 전문가 지식포털 DBguide.net