v$sql의 module 컬럼 다시 질문 합니다. 0 1 1,917

by 뭉게뭉게 [2012.04.17 13:49:44]


우선 답변 감사드립니다. 답변을 다음과 같이 해주셨는데요..
------------------------------------------------------------------------------------------------------------
100% 동일한 SQL 문장인데도 불구하고 공유되지 않는 경우 Child 커서를 생성하게 됩니다.
완벽하게 똑같은 SQL이라면 유저가 다르더라도 SQL구문은 하나만 등록하여 공유하고(v$sqlarea)
구문은 같으나 실행계획이 달라야 할 경우에는 하나의 SQL구문에 Child 커서를 생성합니다(v$sql)
------------------------------------------------------------------------------------------------------------
child cursor가 생기는 이유에 대해서는 숙지를 했습니다.
그럼 v$sqlarea(parent cursor)의 module 컬럼 내용이 그대로 v$sql(child cursor)의 module 컬럼에 반영된다는
말씀이신가요? 만약 Orange에서 SELECT c2 FROM t1 WHERE c1 = :v2;를 실행을 했고
sqlplus에서 동일한 쿼리인 SELECT c2 FROM t1 WHERE c1 = :v2;를 실행을 하면 항상 
Orange에서 먼저 실행한 module 이름만 v$sql에 반영이 되는 건가요?

아래 내용은
t1테이블을 testa, testb 유저에서 각각 만들었으며 SELECT c2 FROM t1 WHERE c1 = :v2;
와 같이 동일한 쿼리를 실행을 한 결과 입니다.

v$sql 내용 :
ADDRESS  HASH_VALUE  CHILD_NUMBE CHILD_AD PARSING_SCH MODULE   
-------- ----------- ----------- -------- ----------- ---------------------  ------------------
9E955860  3308946817    0 9E95577C   61 Orange for ORACLE DBA  <-- testa 유저에서 Orange로 쿼리실행.
9E955860  3308946817    1 9E9371A8   62 Orange for ORACLE DBA  <-- testb 유저에서 Sqlplus로 쿼리 실행

두번째 행의 Module이름은 Sqlplus가 되야 될것 같은데요??

고수님들의 많은 답변 부탁드리겠습니다. 그럼 오늘도 좋은 하루 되세요.

by 부쉬맨 [2012.04.18 09:25:17]
요내용은 저두 궁금해서 테스트를해보았씁니다.

애플리케이션은 사용하고계시는 오렌지와비슷한툴입니다.

올려주신쿼리를 그대로 처음에는

--1번 테스트
1) 애플리케이션단에서 실행
2) sqlplus 에서 실행하였습니다.

결과가 모듈에 어플리케이션 이 나오더군요.

--2번 테스트
1) sqlplus 에서 실행
2) 애플리케이션단에서 실행

결과는 애플리케이션이 나왔습니다.

그래서 db를 shutdown 하고
다시 재가동시키고 테스트하였습니다.


-- 3번 테스트
1) sqlplus 에서 실행
2) 애플리케이션단에서 실행

이러니깐 모듈에 sqlplus 가 나오더군요 

하지만 문의하신 내용처럼 각각의 모듈이 나오지는않을꺼같습니다.

커서의공유란 sga 와 pga는 공유할수있지만, 애플리케이션과 공유를 하지못한다고 하는데
이거 때문인지 아님 일단 상위 sql의 모듈을 따라간다고 보는게 좀 더 정확할꺼같습니다.

같은세션에서 다른쿼리로 던진다면 이러한 현상은 발생되지않기 때문입니다.
여기서 보여지는 차일드(부모세션에서 던진쿼리를 다른세션에서 동일한쿼리이므로 같은걸로보는의미인데)
그러한이유로 모듈자체도 달라지지않는거같습니다 상속으로 물고들어가나보네요.

왜들어가는지는 저두잘-_-;확인해보시는것도 좋은공부가 될꺼같습니다.
수고하세요.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입