티스토리 뷰
가끔 테스트를 할 때나 모니터링을 할 때 JDBC를 통해 접속한 세션의 정보를 필요로 할 때가 있다.
이럴 때면 해당 세션의 SID를 가져 오기 위해 SQL을 수행하거나 아니면 세션 정보를 지정하기 위해 DBMS_APPLICATION_INFO 팩키지를 수행해야 한다. 이러한 작업은 번거롭기도 하고 Session의 정확한 일량을 체크하고자 할 때 껄끄러울 수도 있다.
그러나 JDBC Connection을 맺을 때 이런 정보를 설정해 놓고 시작한다면 이러한 작업 없이도 원하는 정보를 쉽게 찾을 수 있다. 아래와 같이 Connection을 위한 정보를 제공할 때 v$session의 정보도 포함시켜 보자.
테스트 결과 Oracle Server 10.2.0.4, JDBC Version 10.2.0.1.0 의 환경에서는 machine, program, module의 정보만 바꿔 치기 하는데 성공했다.
아래는 테스트 스크립트이다. 빨갛게 표시한 부분이 v$session의 정보를 바꾸는 부분이다.
Class.forName("oracle.jdbc.OracleDriver"); prop.setProperty("user", "test"); prop.setProperty("password", "test"); prop.setProperty("v$session.machine", "@@artdb@@"); prop.setProperty("v$session.program", "@@artdb@@"); prop.setProperty("v$session.module", "@@artdb@@"); conn= DriverManager.getConnection("jdbc:oracle:thin:@server:port:sid", prop); conn.setAutoCommit(false); pstmt = conn.prepareStatement("select * from v$session where sid = userenv('sid') "); rs = pstmt.executeQuery(); rs.next(); System.out.println("SID ==>"+rs.getString("SID")); System.out.println("SERIAL ==>"+rs.getString("SERIAL#")); System.out.println("MACHINE ==>"+rs.getString("MACHINE")); System.out.println("PROGRAM ==>"+rs.getString("PROGRAM"));System.out.println("MODULE ==>"+rs.getString("MODULE"));
이 Application을 수행하면 아래와 같은 결과가 나온다.
SID ==>150
|
이 정보가 실제로 쓸만한지 SQLPlus를 통해 Program명을 지정한 값으로 넣고 검색을 해 보았다. 역시 같은 세션의 정보가 나타난다.
SQL>select sid, serial#, machine, program, module from v$session where program = '@@artdb@@';
|
이러한 방법은 Application에서 특정 업무에 따라 Connection Pool을 제각기 사용할 때 적용하여 사용하는 등으로 응용이 가능할 수도 있을 것 같다.
'기술이야기' 카테고리의 다른 글
Java Process의 가상 메모리와 실제 메모리의 차이 (1) | 2009.06.03 |
---|---|
JDBC Connection때 Client 정보를 내맘대로… (0) | 2009.05.27 |
Connection Cache (1) | 2009.05.26 |
Oracle JDBC Driver (0) | 2009.05.26 |
- Total
- 404,383
- Today
- 2
- Yesterday
- 9
- 안드로이드
- 스마트폰
- bigdata
- 페이스북
- iPhone
- 구글
- runtime data areas
- 빅데이터
- 애플
- Apple
- Web2.0
- 아이폰
- 아이패드
- 전자책
- 스티브잡스
- iPad
- 소셜네트워크서비스
- garbage collection
- Splunk
- hotspot
- jvm
- 소셜네트워크
- SNS
- ebook
- 트위터
- 앱스토어
- jvm internal