IT

DBA(Database Administrator)를 잘하려면. 운영DBA의 조언

마이홈주의자 2022. 5. 30. 07:54
반응형

데이터베이스를 잘하려면 갖추어야 할 능력들이 무엇일까.
나는 어떤 능력을 갖고 지금까지 이 바닥에서 일하고 있는지 정리해 본다.

* SQL들 눈에 익히기
sql에 익숙해져야 한다. 업무(정확히는 내가 맏고 있는 db)에서 수행되고 있는 수많은 sql들을 평소에 봐두는 습관이 필요하다.

그렇게 하기 위해서는
- SQL에 나열된 테이블의 구조와 크기
- 테이블간의 관계(FK Constraints 와 Triggers가 있는지 확인)
- 주요SQL들의 드라이빙 테이블 파악
- sql의 수행 빈도
- 주요 SQL이 oltp성격인지 olap(배치)성격인지
- 주간에 수행되는 SQL들과 야간에 수행되는 SQL들
등등
이런 것들을 평소에 익혀두게 되면 어느 순간부터 튜닝 포인트가 보이고 개선이 필요한 것들이 눈에 들어오게 된다. 또한 평소에 눈에 익혀놓아야 지연등의 장애가 발생했을때 대처를 빨리 할 수 있다. 맏고 있는 DB중 상당한 중요도를 갖는 DB는 틈이 날때마다 봐두어야 한다.

* 나만의 스크립트. 습관처럼 몸에 밴 나만의 다양한 방법들.
운영DB에서 사용하는 다양한 스크립트들이 필요하다.
- 테이블 구조 확인
- 플랜 정보 확인
- 특정 SQL이 플랜이 변경되어 수행중인지
- 인덱스 정보, 테이블 정보, 통계정보 확인
- Wait Event와 Lock정보를 포함한 실시간 세션 정보
- 평소 top SQL들 확인
등등등...

바로 바로 습관적으로 확인할 수 있도록 다양한 스크립트들이 준비되어 있어야 한다.
DB 모니터링 솔루션이 있다면 실시간 뿐만 아니라 수시로 historical 데이터를 통해 추이를 확인하는 것도 중요하다.

* 영어
팀원들에게 항상 강조하는 것이 메뉴얼과 영어다. 인터넷을 뒤져보다가도 결국 돌고 돌아 메뉴얼에서 답을 찾게 되는 경우가 정말 많다. 메뉴얼을 보는데 시간 투자를 아끼지 말아야 한다. 메뉴얼이 전부 영어로 되어 있으니 평소에 영어 공부를 해야 한다. 10년이상 운영DBA를 할 생각이라면 메뉴얼을 자주 보는게 좋다. 필요한 정보를 얻는데 시간이 훨씬 단축된다.
나는 운영DBA로 새로운 사이트에 투입되면 가장 먼저 하는 일이 PC에 Oracle Database Documentation을 받아 압축을 풀고 크롬 브라우저에 북마크를 하는 것이다. 가능하면 버전별로 다 받아 놓는다. 요즘 대부분의 사이트가 인터넷과 단절되어 있기 때문에 Oracle 메뉴얼을 PC에 넣는게 상당히 까다롭다. 하지만 고객을 설득해서 반드시 진행한다.
메뉴얼 뿐만 아니라 궁금한 것들 이슈 사항을 찾을때 영어로 검색하는 것에 습관을 들여야 한다.
주로 답을 찾게되는 인터넷 사이트인 Asktom, Oracle Community, Oracle Support도 모두 영어뿐이다.
영어~ 영어~ 영어~
어쩔 수 없다. 대부분의 SW가 영어권 국가에서 만들어졌으니까.
기억을 더듬어 보면 Oracle 8인가 까지는 한글화된 메뉴얼 책으로 공급 받았던 것 같다. 하지만 이젠 아니다.

* 소통의 능력. 설득의 능력
튜닝을 멋드러지게 했는데 담당 개발자가 변경을 하지 않는다면 어쩔 것인가?
만약 튜닝 방법을 sql변경하는 것으로 했다고 하자.
sql이 수백 라인인데 이걸 변경해서 효율적인 sql로 만들었다. 이걸 수정해야 한다고 주면 sql을 만든 개발자는 자존심이 상할 수도 있다. sql 한 문장은 때로는 프로그램 하나와도 같다. 그 개발자 입장에서 본다면 본인이 만든 프로그램을 누가 고치라고 하는 것과 같다고 느낄수도 있다. sql 수정이 필요한 이런 상황이라면 dba에게는 소통과 설득의 능력이 필요하다. sql변경은 개발자의 몫이기 때문이다. 이메일로 잘 정리해서 보내고 전화를 통해 설명도 충분히 해야 할 수도 있다. 운영DB에는 적용하지 않은채 튜닝했다고 자랑하는 dba들을 여럿 봤다. 운영db에 적용하지 않은 튜닝은 실적으로 인정하지 않는다. 인정해서도 안된다. 개발/테스트 db는 환경이 아주 많이 다른 경우가 대부분이기 때문이다. 튜닝이란 실제 운영DB에 반영되어 수행되는 것까지를 모두 포함해야 한다는것이 나의 지론이다. 반대로 내가 튜닝 가이드를 낸 것을 개발자가 소스에 반영해 운영db에서 수행되는것을 모니터링 할때는 굉장한 만족감을 느끼게 된다. 이래서 dba를 하고 튜닝을 하는거야 싶은 순간이다.

* DB 의 환경
DBA들중 진짜 DB만 할 줄 아는 친구들도 많이 봤던것 같다.

DB가 올라가 있는 서버.
앞단의 미들웨어.
DB가 저장되어 있는 스토리지.
백업 솔루션.
다 중요하다. 특히 RAC의 경우 crs는 root에서 수행되니 알아야할게 너무 많다.(RAC는 너무 어렵다 ㅠㅠ)

* 집요함
문제라고 생각되는 것이 있다면 절대 놓치지 않는다. 이슈가 수면 아래로 내려가면 나도 자연스럽게 손에서 놓게 된다. 시간이 지나 고객도 더이상 문제 삼지 않는다. 나의 팀장도 더이상 캐 묻지 않으니 나도 더이상 붙들고 싶지 않다.
이러면 절대 실력이 늘지 않는다.
머리 속 한쪽에 두고 틈날때마다 이슈를 꺼내 확인하고 붙들고 있어야 한다. 해결이 안되더라도 이슈의 원인은 찾아야 한다. 그러다 보면 부쩍 실력이 늘어있는 나를 발견하게 된다. 적고보니 이건 DBA에만 국한된 얘기는 아니네 ㅎ

* 책
자주 찾아보는 책이 두세권 쯤은 꼭 책상에 있다.
옛날 시절에는 dba에게 교과서와도 같은 책으로 이화식 선생의 '대용량 데이터베이스 솔루션'시리즈가 있었다. 그 이후는 조시형 선생의 '성능 고도화 원리와 해법'이 있었다. 조동욱 선생, 오동규 선생의 책들. 방대한 양의 지식을 머리에 넣는것은 어려운 일이기 때문에 나는 여전히 수시로 책을 펼쳐 든다.

사무실 내자리. 많이 닳았다.



또 뭐가 있을까...

반응형