ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [오라클 질문] Cursor Keep시 Execution Plan도 Keep이 가능한가요?
    기술이야기/Ask 엑셈 2010. 3. 22. 10:39
    2010-02-17 17:45:59 에 등록된 질문입니다. 강정식 님께서 질문해 주셨습니다.

    Q:
    안녕하세요?
    Cursor Keep 관련해서 문의사항이 있어 글을 올립니다.

    제가 현재 지원하고 있는 Site에서 근래에 Hard Parse 비율이 높아져 리소스 과점이 증가하고 수행속도도 오래 걸려 문제가 되고 있습니다.

    Hard Parse 비율이 증가하는 이유는 Literal 값이 있어서 그런것은 아니며, 바인드 변수 사용과 여러차례 튜닝을 통해 안정화를 유지하고 있습니다.

    그러나, 특정 프로그램에서 사용되는 Cursor의 크기가 커서(참여 Object 약 300개, 실행계획 약 3,000 line) Ageout이 너무 빨리 되기 때문에 재차 Hard Parse하는 비율이 증가하는 것으로 파악되었습니다.

    하여 이를 해결하기 위해 아래의 방안 3개를 검토중에 있는데 이에 대해 엑셈에 문의를 드리고자 합니다.

    1. SQL Profile 또는 Stored Outline 사용
    - Cursor가 큰 프로그램 위주로 위의 2가지를 사용하여 Execution Plan을 고정시키고 이로 인해 Hard Parse 비용을 줄이고자 하였으나, 이 방안도 결국은 비용을 줄이긴 하지만 Ageout된 Plan에 대해 결국 재차 Hard Parse

    를 해야 하는 한계에 봉착함을 알게되어 진행을 못하였습니다.

    2. Cursor Keep
    - Oracle에서 제공하는 특정 Cursor Keep 구문을 통해 무거운 Cursor에 대해 미리 Keep을 시키면 Cursor 및 Execution Plan도 같이 Keep되는 것으로 알고 진행을 하였다가 10g R2 이후부터 Cursor(Heap0 영역)만 Keep이 되

    고 Execution Plan(Heap6 영역)은 Keep이 안된다고 하여 이 방법 또한 진행을 못하게 되었습니다.

    - 10g R2 이후부터 Execution Plan Keep이 안된다는 내용은 엑셈 백과사전(
    http://wiki.ex-em.com/index.php/DBMS_SHARED_POOL.KEEP
    )을 참고하였습니다. 여담으로 이에 대해 한국오라클에 문의해보니 Execution Plan Keep

    은 10g R2 이전부터도 지원이 안되었다고 하는데 어느 내용이 맞는지 궁금합니다.

    3. Ageout되는 비율을 감소시키는 방법은?
    - 궁극적으로 Size가 작은 Cursor는 Ageout 되는 비율이 작지만 Size가 큰 Cursor은 Ageout 되는 비율이 커서 문제가 되고 있는 것이므로, 만약 Execution Plan Keep이 안된다면 이를 극복하기 위해 Shared Pool Size를 증

    가시키는 방안은 좋은 방안인지 궁금합니다(참고로 제가 지원하는 Site의 Shared Pool Size는 23G 입니다)


    위의 질문 내용에 대해 좋은 방안이 있으시면 답변 부탁드리겠습니다.

    감사합니다.


    A:                                        엑셈 답변 보기

    위 글은 (주) 엑셈 온라인 서비스 ASK EXEM 에서 발췌한 것임을 알려 드립니다.

    댓글 0

© Copyright 2001 ~ 2021 EXEM CO., LTD. All Rights Reserved