실력있는Oracle Tunner

먼저, 위에 분이 말씀해주신 ERD..아주 중요하죠.
말씀처럼 아무리 SQL문장 하나 튜닝한다고 해도 구조적인 모순을 어쩔 수 없는거죠.
애초에 디자인을 잘 하면 아주 유용하겠죠.
하지만 실제 현장에선 그렇지 않습니다.
튜닝을 디자인 할 당시부터 당연히 신경을 써야하지만, 대체로 99%이상은
일단 그냥 개발하고, 운용하다가 문제(속도라든지)가 생기면 그 때서야 튜닝이란 말이 나오기 마련이죠. 이때는 ERD..즉 아키텍쳐를 고치자는 말 하기 쉽지 않습니다.
멀쩡히(??) 돌아가고 있는 프로그램을 다 뜯어고치잔거는 쉽지가 않죠.
즉, 어플리케이션의 차원의 튜닝은
첫째, SQL 문장 튜닝을 잘해야합니다.
둘째, 처음부터 디자인을 잘 해야합니다.
그렇지만 두번째의 경우는 앞서 말씀드린것처럼 쉽지가 않습니다.

튜닝은 크게 두 가지로 나뉩니다.
시스템 튜닝과 SQL문장 튜닝이죠.
먼저 SQL튜닝은 말 그래도 SQL문을 적절히 바꿔주는겁니다.
실제로 저 같은 경우도(참고로 전 개발자는 아니고 DBA입니다), 어떤 프로그램이 엄청나게 오랫동안 돌아가는 경우가 있어서, 문제가 되는 SQL문장을 찾아서(tracing) 조건절에 조건을 하나 더 줬더니, 1시간이상 돌아야 결과가 나온더것이 단 1분만에 나온적도 있습니다.
SQL튜닝을 잘 하기 위해선 일단 개발 경험이 많은게 유리합니다.
그리고 그에 받침이 될 많나 이론들(전공이시죠?)을 공부 잘 해둘 필요 당연히 있습니다.
또한 오라클에서 일반적으로 말하는 튜닝 정책(?)에 따라서 할 필요가 있습니다.
예를 들면, 아우터 조인시에는 양쪽 테이블 모두에 +기호를 사용하고, 유니온을 할 경우가 생긴다면 반드시 union all을 써야 한다…이런 내용들이죠.
그리고 literal variable말고 binding variable을 써라..
(select * from emp where empno=:a 이런거죠)->이건 제 답변을 참고하세요..
360813 Database에서 한번 조회된 결과를 다시 조회하면 -> 요게 질문입니다.

이런거는 오라클 책을 무조건 많이 보는 수밖에 없습니다.
또한, 혹 오라클을 공식적으로 구입해서 사용하시는 고객이라면, 고객번호로 메타링크(http://metalink.oracle.com)같은 곳에서 엄청난 자료를 얻을 수 있습니다.
주로 트러블슈팅에 관련되어서 엄청나게 도움을 얻을 수 있는 곳이죠.
물론 여타 공식 문서들도 디게 많습니다. 오라클의 관한 모든 문제는 여기서 해결한다고 보셔도 어쩜 무방할 정도죠.
얘기가 옆으로 좀 셌습니다. –;;

시스템 튜닝은 다시 2가지 정도로 나뉠 수 있겠습니다. 물론 제 생각입니다.
첫번째는 오라클 RDBS에 대한 튜닝이고 두번째는 말 그래도 전체 시스템(OS 등)에 대한 튜닝이라고 할 수 있겠죠.
님께서 예로 드신 병렬시스템..이런건 사실 DB튜닝이랑은 큰 관계가 없을것 같습니다. 다만 오라클에서 말하는 parallel query라든지 standby db라던지 하는 어떤 방법론적인 부분이라면 얘긴 좀 틀려지겠죠.
물론 OS차원에서의 I/O처리라던지 하는 부분에서 DB자체의 속도에 도움을 줄 수 있다고 생각할 수 있습니다.
예를 들어, 시스템에 Disk controller가 2개가 있고, 각각의 컨트롤러에 internal 1, external 1개씩 붙어있다..이럴 경우, 컨티롤러(디스크)의 효과적인 사용을 위해서 한쪽에는 DB 엔진 즉 오라클 자체를 두고, 한쪽에 데이타 파일을 위치 시킨다..뭐 이런거도 될 수 있겠네요.
어쨌든 전체 시스템에 대한 이해…이것도 중요한 부분이지만, 이건 나중 문제죠.
다만 인스톨시부터 OS에 대한 patch라던지, 아님 kernel parameter를 조정해 줄 필요가 있을 때가 있습니다.

중요하건 아무래도 오라클 RDBMS에 대한 튜닝이죠.
이건 자료를 열심히 뒤적거리고 테스트 하는…공부를 해야합니다.
일단 제 생각에..님께서 오라클 정식 고객이라면 오라클 영업사원에게 책을 달라고 하세요. 오라클을 사면 다 줘야 하는겁니다.
그럼 한 30권쯤 되는 책을 갖다 줍니다. 다 영문인데요.
그거 다 보고 제대로 이해하면 정말 훌륭한 튜너가 되실것 같습니다..^^
거기에는 님께서 궁금해하시는..(궁금해하시는지 모르겠지만..)
예를 들어 어디서 뭐가 waiting이 걸렸나..이런거 볼 때..
v$sysstat에 나오는 각 내용들이 무엇을 의미하는지 알 수 있습니다.
또한 메타링크와 연계하면 그 값들을 어떻게 조정해줘야 하는지도 알 수 있게 됩니다.

만약 이런 사정이 안된다면(오라클 공식 고객이 아니라면)…
시중에 나와있는 책들을 봐야겠습니다.
그런데 시중에 나와있는 책..(사실 전 한권도 안 봤습니다..–;;;)
이화식씨의 대용량..이 책 거의 바이블처럼 존경(??)받습니다..만
이 책은 얼핏 봤는데..일단 쓰여진지가 너무 오래됐습니다.
아시겠지만 지금 9i를 넘어서 10G가 나왔습니다.
이화식씨의 책은(이화식씨는 현재는 엔코어라는 회사를 만드셨더군요..거긴 실기 시험도 본대요..ㅎㅎㅎ) 7버전대에서 많이 문제(?)가 되었던 RBO(Role Based Optimizer)에 관한 내용이 많던걸로 얼핏 봤습니다…
그러나 이 책은(분명히 말씀드리는데 전 이 책 그냥 얼핏 하면 쭉 넘기면서 본거 뿐이니 걍 참고하시길) 나름대로 어떤 원리, 오라클의 메카니즘에 대한 이해를 바탕으로 설명을 하는 듯한 느낌을 받았습니다. 그럼으로 오라클에 대한 전체적인 메카니즘 이해에는 꽤 좋을거란 생각도 듭니다.

에..이제 질문에 답합니다..^^;;

1. 님이 지금 어떤 일을 하고 계신지..학생인지 잘 모르겠습니다만..
일단은 개발을 해보시는게 좋겠습니다. 그것도 빡~세게요..ㅎㅎㅎ
원래 DBA라는게 개발을 욜심히 하다가 DB를 더 공부해서 DBA가 되는게 일반적인 코스라고들 합니다. 그 만큼 개발 base가 필요하단 얘기죠.
2. 이화식씨 책..보십시요. 봐서 해될거 없습니다.
3. admin..이거 중요합니다. 나중에 튜너(사실 이런 직업은 아직 우리나라엔 없다고 봅니다만)가 되기 위해선 아주아주 중요하다고 봅니다.
이거를 잘 하기 위해선 공부 많이 해야합니다.
가능하다면 오라클에서 제공하는 공식 서적들을 보시기 바랍니다. 어디서든 만든 회사에서 나온 매뉴얼(??)이 젤 좋기 마련입니다.
참고로 오라클의 자료들은 90%이상이 영어입니다. 안된 얘기지만 한글로 된것들은 별로 쓸모(??)도 없고, 그나마 거의 영어를 번역한 수준입니다. 그러니 영어공부도 좀 하셔야..–;;;;
4.어쩜 젤 중요한걸 수 있는데요..직접 해봐야 합니다.
오라클 initSID.ora의 파라미터 값을 하나 고쳐서 무엇이 바뀌는지 시스템 뷰들 다 뒤져서라도 찾아야 합니다. 확인해야 합니다. 그리고 관리(admin)하다보면 정말 예상치 못한 경우도 많이 생깁니다. 그러니 그 전에 직접 다 해봐야 합니다. 백업&리커버리.. 이런거 시나리오를 구하던지 스스로 만들던지..해서 다 해봐야 합니다.
그리고 또 중요한건..이렇게 하면서 노트를 작성하는겁니다. 한 번 해봤다고 그게 머리에 남겠습니까? 그 당시의 상황이랑 자신이 취한 조치를 순서대로 가능하면 꼼꼼히 써 두는거 도움 많이 됩니다. 나중에 도움 받기 위해서가 아니고 이것도 공부입니다.
5.오라클이 제공하는 제품이 참으로 다양합니다. DB만 떨렁 있는거 아닙니다. 엄청나게 많습니다..–;; 드리고 싶은 얘긴 뭐냐면…이들이 제공하는 정보들을 놓치지 않기 위해서 otn같은데 자주 들락거리고..오라클 매거진(1년에 4번 나오나??)같은거 공짜니깐 구독하시고..오라클과 관련된 많은 사이트들(database.sarang.net 뭐 이런것들)틈틈히 주시하시는 등의 노력을 병행해야합니다.

처음엔 지식이 단편적일 수 밖에 없습니다.
그걸 아..난 정말 이런게 아니고 전체적인 걸..크게 보는 그런걸 하고 싶은데..공부가..이게 아닌데..
아닌게 아니라..맞습니다. 단편이 모여서 장편(??) 됩니다.
뭐든지 외우고 익혀두세요. 나중에 퍼즐처럼 딱딱 맞춰져 갑니다.

뭐 생각나는대로 써 봤는데..일부러 답변기간을 길게 두셨다니..저도 생각나면 와서 다시 추가하죠..

공부 열심히 하세요..^^
내용출처 : 본인이~

답변들
Tunning 방법은 여러가지 입니다.

kcg1932 (2003-12-18 08:37 작성) 이의제기
Tunning 방법은
System 적으로 접근하는 방법과
Application으로 접근하는 방법이 있습니다.

System 적인 접근은 제가 잘몰라서 생략을 하고
Application으로 접근하는 방법을 제가 하는한..
Applicaion으로 접근을 하기 위하여 보통은
옵티마이저니 index니 말을 많이 합니다.
이 Factor역시 중요합니다.
그러나 Applicaion을 Tunning하기 위해서는 데이타를 정확히 알고 있어야 합니다.
데이타를 정확히 안다는 것은 업무를 알고 있다는 것이고
이는 ERD를 정확히 이해하고 있다는 말입니다.

일반적으로 Tunning을 할때 index나 Optimizer 기타 서버 환경을 중시하는
경향이 있습니다..

그러나 절대적으로 간과해서는 안되는 것이 ERD 입니다.
(RDBMS에서 ERD 없이 Application을 작성하는 것이나
이 Application을 이해하는 것은 불가능합니다.)

즉 정확히 ERD를 이해하고 나면 데이타가 어떻게 구성이 되어 있고
데이타를 가져오기 위한 최적의 정책이 결정이 됩니다
이때 Index 및 Optimizer를 분석을 해야 할 것으로 생각이 됩니다.

님께서 제시하는 방법은 물론 중요합니다.
Admin을 이해한다는 것은 DBMS구조를 이해하는 것이므로 Optimizer 정책에 중요하고
공학공부 이는 집합에 대한 개념으로 정확한 SQL문장을 구현하는데 도움이 되며
알고리즘 역시 Optimizer을 이해하는 데 도움이 되겠지요..

그러나 역시 오라클 역시 RDB 사상을 가진 제품이기 때문에
ERD 를 정확히 이해 하여야 합니다.

예를들어 일반적으로 SQL문장을 Tunning하기 위해서는
해당 SQL 문장만을 가지고 Tuning하는 경향이 있는데
이게 아니라 ERD를 보고 조금더 나은 Access 경로가 있는지를 확인후에
Tunning 하여여 한다는 것입니다..

결론은 Application Tunning을 하기 위해서는 RDB에 대한 정확한 이해(집합)가
필요하고 이를 바탕으로 ERD를 빠른 시간에 이해하는게 중요하다고 생각이 됩니다.

인텔리 남자

나의 직업 때문인지 내 주위에 출몰하는 남자들의 거의 반수는 속칭 인텔리라고 불리는 남자들이다.
그러나 나머지 반은 다르다. 지적인 남자들임에는 틀림없으나 인텔리라는 한마디로 일축하기에는 망설여지는
남자들이기 때문이다. 이것은 내가 남자 보는 눈이 있기 때문이라고 자화자찬하지만, 그렇지 않은 쪽의 남자들을
이제 살펴보고자 한다. 즉 조금도 섹시하지 않은 남자들이다.

우선 그들의 첫번째 특징은 속칭 지적인 직업에 종사한다. 대학교수나 저널리스트나 아무튼 머리를 쓰는
직업이라면 뭐든 좋다. 먼저 양해를 구하지만, 이런 직업을 가진 남자가 모두 섹시하지 않다는 말은 아니다.
그들 가운데에도 섹시한 남자들은 많다. 또 이런 종류의 직업이 인텔리한 남자의 필요조건의 하나란 것은
누구나 찬성할 것이다.

두번째 특성은 육체적으로는 어느 선까진 간다고 평해도 좋을 남자들이 많다. 요즘은 인텔리라 해도
체위가 향상되어서인지 옛날처럼 희멀건한 얼굴의 수재형은 드물어졌다. 그 뿐인가.
옷입는 취미도 나쁘지 않아 일반적인 기준으로는 멋쟁이라 해도 좋겠다.

사회적 지위에 육체, 그 다음은 당연히 경제력이 뒤따르나, 이면에서도 그들은 어느 선까진 간다.
대학에서 받는 월급은 적고, 잡지 우너고료도 10년전부터 변함이 없는 참상이지만, 요즘은 잡지도
숫자만은 엄청나게 늘어났을 뿐 아니라 기업체의 간행물도 모래알만큼이나 많다. 그러니 건당 원고료나 강연료가
싸다 한들 수만 채우면 그것도 무시 못 한다. 대학에서 받는 월급은 주택구입용 은행이자로 다 없어진다고
호언하는 인털리도 생기는 마당에 이렇게도 좋은 조건이 모였는데 어째서 매력이 없을까.
바로 이 점이 이 글을 쓰게 된 동기다.

이들의 공통적인 네번째 특징이지만, 도대체 이 남자들은 무엇을 생각하고 있는지 나로서는 도통 모르겠다는
점이다. 그들은 잡지나 신문에 갈겨대고 텔레비전에서 지껄여대루 뿐만 아니라 요즘 부쩍 일고 있는 무슨무슨
심포지엄 같으 데서까지 마구 지껄여대지만, 도대체 무슨 생각을 하고 있느지 모르겠다.
물론, 말하는 내 쪽이 이상하단 소리를 들을 지 모르지만.

이런 남자들이 얼마나 써대고 지껄여대든, 자기 자신의 생각을 드러내기보다는 ‘해설’하는 쪽에 열심이기
때문이리라. 이런 남자들의 입버릇은 ‘학문적으로 말하자면’이라는 한마디다. 그러나 사실은 비학문적인
것을 언뜻 학문적으로 정리하여 말할 뿐이다.

세상 살아가는 일이 전부 그렇다는 것은 아니지만, 대부분은 별볼일 없는 현상인 경우가 많다.
예를 들어 만화를 그리는 사람과 그것을 읽는 사람이 있다. 만화를 그리든 읽든 그건 제 마음이다. 그러니
그들을 비난하지도 않거니와 찬양하지도 않는다. 나 자신이 만화를 싫어하기는 하지만.

즉 이건 취미의 문제로 싫고 좋은 것 밖에 없다고 생각한다. 이런 현상을 아주 그럴듯 하게 이유를 찾아내어
‘해설’한 논문을 읽으면 소름이 끼친다. 만화를 그리든 읽든 그건 그들 맘이니 인정하지만, 그걸 ‘해설’하는
사람이 나는 싫다. 이런 현상을 지적인 시점에서 정리하여 이른바 지적이지 못한 대중에게 제공하는 것이야말로
지식인의 사명이라고 말하는 것 같아 반발심이 울컹 올라오게 되기 때문이다. 그런 참견은 관두고 제 공부나
하시지 하고 쏘아주고 싶은 심정이다.

해설쟁이가 흔해지는 요즘의 현상이야말로 지적이지 못한 현상의 두드러진 점이라고 말하고 싶어진다.
해설쟁이가 해대는 말을 들으면 어느 부분도 이거다 싶은 곳이 없다. 그들 육체도 과연 찌르면 빨간 피가
흐를까 싶다.

이런 남자들의 다섯번째 특징은 수라장을 거쳐오지 않은 약함이라고나 할까. 늘상 머릿속에서만 처리하는 것에
익숙해진 인텔리는 상대방의 체험에 근거한 생각에 부딪치면 의외로 간단히 허점을 보인다.
정치든 외교든 경제세계도 좋다. 수라장은 인간이 사는 어느 곳에나 있다. 수라장을 거친 체험을 가진 사람은
‘배수진’ 속을 뚫고 나오는 괴로움이나 쾌감도 알고 있다. 그리고 마지막 카드를 어디서 어떻게 쓰는지도
알고 있다.

이렇게 되면 한 줄의 글자나 한마디 말에도, 응축된 ‘힘’이 달라진다. 즉 박력이 단연 틀려진다.
따라서 그런 글이나 말을 받는 쪽도 그만큼 인상을 강하게 받는다. 그 결과 직접 읽고 들은 사람들은 스스로
피가 뛰게 되는 것을 느끼게 된다. 피가 뛸 대는 전신이 흔들리는 쾌감을 얻을 것이다.

최근에 어느 곳에서 열린 국제 심포지엄에 참석할 기회가 되었다. 출석자 가운데는 미국 대통령 전보좌관
브레진스키와 캐나다 전 수상 트뤼도가 있었다. 기조강연을 한 것은 브레진스키로 그답게 소련과 미국의
대립관게와, 그것에 관한 일본의 입장과 역할에 대해 강경조로 일장 연설을 했다. 그것을 듣고 있던
트뤼도의 차례가되었다. 그는 입을 열자마자, 아프리카의 어느나라 수상에게 들었다며 이런 말을 했다.
코끼리가 싸움을 하면 초목이 짓밟혀 난처해지지만, 코끼리가 섹스를 해도 초목은 같은 결과를 입습니다.’
이것은 미국이나 소련이니 심지어 일본까지 들먹이며 대국의 식을 드러낸 ‘고차원적’인 논의를 한 브레진스키에
대한 참으로 신나는 맞수였다. 대국도 아닌 주제에 논조만은 대국적이던 일본의 인텔리 남자들에 대한
통렬한 풍자이기도 했다. 역시 15년이나 한 나라의 수상을 지낼만 했다. 그는 가슴 단춧구멍에 언제나 꽂고
다니는 빨간 꽃으로만 유명한 남자가 아니었다.

이 회의장에는 일본의 대학교수도 열석해 있었으나 전혀 상대가 되지 못했다. 언어로 승부하는 직업임에도
불구하고 무기를 쓰는 법조차 몰랐다. 이런 남자들리 흔히 범하는 어리석은 해설만으로 시종일관했던 것이다.
어째서 자기 생각을 확실히 드러내지 못하는가. 아니 혹시나 자신의 소견이 없는 것이야말로 학문적이라고
믿고 있는지도 모르겠다.

인텔리 남자의 여섯번째 특징은 사람을 죽인 경험이 없는 것이라고 요즘 나는 생각하고 있다.
이 말은 살인행위를 뜻하는 것이 아니다. 육체적으로 남을 말살하지 않더라도 정신적으로 죽이는 것도
당연히 남을 죽인 경험에 들어간다.

신은 고약하게도 무언가를 해보려는 자에게 그것을 표현하려는 단계에서 이런 종류의 ‘살인행위’를 하지 않으면
안 되도록 인간세상을 만드신 모양이다. 이 세계는 아무것도 하지 않는 사람이 살생행위와 가장 먼 곳에
살고있다. 인텔리 남자가 섹시하지 않은 까닭은 독도 약도 되지 못하는 그들 특유의 사고 방식에 있음이
틀립없다.

남자가 여자에게 매력을 느끼는 것은 어차피 그 여자를 안아보고 싶다는 생각이 들 때이고, 여자가 남자의
매력을 느끼는 것 역시 그 남자 품에 안기고 싶다는 마음이 들 때일 것이다.
머릿속에 든 것이나 용모도 이런 종류의 건전한 욕망을 보강하는 정도에 지나지 않는다. 건전하고 자연스럽고
인간의 본성에 가장 충실한 이 욕망을 자극하는 것이 그 사람이 가진 매력이다.

인텔리 남자가 섹시하지 않은 것은 보강하는 정도밖에 안 되는 삶에 최고의 가치를 두면서 살기 때문일 것이다.
하찮은 것을 하찮은 것이라고 잘라 말할 수 있는 자연스러움이 없다. 그 뿐인가.
그럴듯한 이유를 얼마나 잘 생각해내느냐에 전력을 집중하기 때문이기도 하다. 이런 남자들에게 ‘수컷’을
느끼지 못하는 것은 당연한 귀결일 것이다.

인텔리 남자의 마지막 특성은, 조그만 야심밖에 없다는 점이리라. 욕망은 있으나 그것이 콩알만한 크기밖에
안 된다. 그러니 정치가가 뭐라 부추기면 창피할 정도로 홀랑 넘어간다. 실업계의 어느 위인이 접대해준다면
기생보다 먼저 뛰어가는 판이다. 기생은 화대라도 받으나 인텔리는 하룻저녁 얻어먹을 뿐인것을, 이보다
궁상스런 행위가 있을까.

무언가 자기 맘을 표현하고 싶은 것이 있어 그것을 하기에 권력이 필요하다면 그것은 상관없다.
회색이든 검정이든 권력을 이용한다면 그것은 개의치 않겠다. 그러나 이용되는 것에 자기 만족을 하고 있다면
그건 그저 봐주기 힘든 꼴불견이란 말이다.

우리 여자들은 남자들을 존경하고 싶어 근질근질하다. 남자들이여, 기대를 저버리지 말라.
그렇지 않으면 우리의 사랑을 누구에게 바친단 말인가. 자식에게 바쳐보라지만, 자식이 다 큰 다음에는
또 어찌하는가.

– 시오노 나나미 –