초보 DBA 삽질기 5

내 이 세상 도처에서 쉴 곳을 찾아보았으나, 마침내 찾아낸, 컴퓨터가 있는 구석방보다 나은 곳은 없더라.

초보 DBA 삽질기 5

그동안 프로젝트 성격의 일도 있었지만 대부분은 반복적인 작업이었다. 일이 점점 지겨워지고 있었다. 매일 아침 데이터베이스 상태를 확인하는 것도, 작업을 할 때마다 세 번씩 확인을 받아야 하는 것도 모두 짜증났다. 내가 사고를 쳤기 때문에 이런 절차가 생겼고, 이런 절차를 만든 게 나 자신이었고, 안정적인 운영을 위해서는 이런 절차가 필요하다는 점이 나를 더욱 힘들게 했다. 참을성이 바닥나고 있었다.

데이터베이스 운영은 경계를 서는 것과 같다. 백날을 잘해도 하루 실수하면 모두 물거품이 된다. 일을 잘해 데이터베이스에 아무런 문제가 발생하지 않는다면 당연한 것이고 사람들은 나를 잊을 것이다. 데이터베이스에 대해 신경쓰지 않기 위해 나를 고용한 것 아니겠나. 일을 잘 못해 문제가 발생하면 모두들 나에게 관심을 갖는다. 그게 좋은 관심일 수는 없다. 이런 느낌은 단지 피해망상일 뿐일까?

이렇게 지쳐가고 있을 즈음 또 장애가 발생했다. 이번엔 작업하다 생긴 문제가 아니었다. 그러나 확인해야 할 것을 제대로 확인하지 않아 생긴 문제란 점에서 이전 장애와 궤를 같이 한다. 매일 아침 체크리스트를 이용해 데이터베이스 상태를 확인하는데, 그날따라 공교롭게 다른 일로 분주해 데이터베이스 상태를 확인하지 못했다.

ts_idx_common이란 테이블스페이스 공간이 부족해 장애가 발생했다. 테이블스페이스 이름으로는 공통 테이블(코드성)에 달린 인덱스가 저장된 테이블스페이스임을 알 수 있다. 그런데 여기 거래성 테이블에 달린 cc_timestamp_pk란 인덱스가 있었던 것이다. 코드성 테이블에는 테이터가 거의 추가되지 않고 추가된다 하더라도 그 양이 미미해 테이블스페이스 공간이 부족해질 이유가 없다. 그러나 거래성 테이블에는 거래가 지속적으로 추가되며 그에 따라 인덱스도 지속적으로 커진다. 문제는 이런 거래성 테이블의 인덱스가 엉뚱한 곳에 위치해 있었다는 것이다.

일일점검을 빠뜨린 것도 문제였지만 데이터베이스를 운영하면서 1년 반이 넘도록 이런 기본적인 사실도 파악하지 못하고 있었다는 점에 더 화가 났다.

우선 ts_idx_common 테이블스페이스에 데이터 파일을 추가해 공간을 확보했다. 그리고 cc_timestamp_pk 인덱스를 원래 있어야 할 tx_idx_appr 테이블스페이스로 옮겼다.

장애보고서를 작성했다. 앞으로는 일일점검한 내용을 팀장에게 검수 받도록 프로세스를 수정했다. 이제 내가 하는 거의 모든 작업은 항상 팀장의 결재를 받아야 했다. 팀장이 데이터베이스를 잘 알아 내 작업 계획에 문제가 있는지 검토하고 도움말을 준다면 의미있는 일이겠다. 그러나 데이터베이스를 잘 모르는 사람에게 결재를 받는다고 해서 달라질 게 뭐란 말인가. 일일점검은 매일 해야 하는 것이니 의미가 아주 없지는 않겠지만 초등학생이 되어 숙제 검사를 받는 기분이었다.

데이터베이스를 제대로 운영하려면 훨씬 더 꼼꼼하고 차분해야 할 것 같았다. 반복적이고 지루한 작업을 잘 참을 수 있어야 할 것 같았다. 좀더 보수적인 성격이어야 할 것 같았다. 더 이상 견딜 수가 없었다. 점점 DBA 책무를 감당할 자신감을 잃었다. 이 장애 후 회사를 그만두기로 결심했다.

이렇게 5년간의 DBA 생활을 마무리 하게 된다.