해당 시스템에 생각보다 하드파싱이 어느정도 일어 나고 있는 것 같습니다
거의 대부분 binding 변수를 사용하도록 코딩이 되어 있지만
워낙 다양한 채널을 통해 DB접근이 이루어 지는 지라..
새는 부분을 잡고 싶습니다
Instance level Trace를 걸기엔 부담 스럽고
서버에 부하를 주지않고 하드파싱 쿼리나 해당정보를 추출할 수 있는
좋은 의견들 있으시면 부탁드립니다..
그럼 행복하시고 좋은하루 되세요~ ^^*
자답해 봅니다..
일단 동적뷰중에 v$sql과 v$sqltext가 있습니다
v$sql에는 executions라는 칼럼이 있구요..
하드파싱이 이루어 지는 Dynamic Sql의 경우 binding되는 부분만빼고
쿼리가 같음에도 불구하고 모두 다른 쿼리로 인식하게 됩니다
따라서 v$sql.executions = 1 인것들을 v$sql.sql_text로
정렬하여 조회해보면 다는 아니지만 하드파싱되는 Dynamic sql들을
골라 낼 수 있는 환경이 조성됩니다
(다가 아니라는 말은 binding 변수를 사용하는 1번 실행된
static sql도 나온다는 뜻과 v$sql이 메모리에 남아 있는 쿼리만
조회하기 때문에 메모리에 없는 쿼리는 잡을수 없다는 말입니다)
하지만 v$sql.sql_text칼럼은 쿼리의 모든부분이 나와 있지 않아서
전체 쿼리를 보실려면 v$sql_text와 조인하셔서 보셔야 됩니다
번거롭지만 수작업이 수반되네요..ㅠㅠ
툴을 사용하면 조금더 수월해 집니다
Orange라는 툴에서 tools 메뉴에 SQL Monitor라는 것이 있습니다
여기서 execution = 1로하고 조회시면 목록이 나오고
의심되는 쿼리를 더블크릭하면 바로 전체쿼리 볼 수 있습니다
더 좋은 방법이 있으시면 고견을 부탁드립니다..^^*