비활성 상태 인 2 주 후에도 Oracle 세션이 계속 유지되는 이유


16

DB : 오라클 10g

O / S : Windows Server 2003 64 비트

웹 응용 프로그램에서 생성 한 Oracle 세션 목록을 쿼리합니다 (프로그램 별 필터링 = w3wp.exe).

select * from V$session
where UPPER(program) LIKE '%W3%'
order by logon_time

여기에 이미지 설명을 입력하십시오

Logon_Time에 따르면 왜 2012 년 31 월 7 일 또는 2012 년 1 월 8 일의 세션 또는 오늘 (21/08/2012) 이전의 세션이 계속 유지됩니까?

sqlnet.ora에서 구성했습니다 : SQLNET.EXPIRE_TIME = 20 따라서 오라클은 20 분마다 연결이 여전히 활성화되어 있는지 확인합니다.

모든 사용자 스키마에는 기본 프로필이 있습니다. 세션이 만료되거나 죽지 않을 것입니까?

여기에 이미지 설명을 입력하십시오

Phil의 의견에 대한 답변으로 추가 :

여기에 이미지 설명을 입력하십시오

Phil의 답변에 대한 답변으로 추가 :

여기에 이미지 설명을 입력하십시오


v$session.PREV_EXEC_START이 세션 은 무엇입니까 ? 연결 풀의 일부이므로 자주 사용하기 때문에 유휴 상태가 아닌 것으로 보입니다.
Philᵀᴹ

광산은 Oracle 10g이므로 v $ session에는 PREV_EXEC_START 열이 없습니다. 그러나 Last_Call_ET 열을 포함하여 다시 쿼리했습니다 (질문에 해당 그림을 추가했습니다).
Delmonte

개발자들과 이야기를 나 web 고 웹 애플리케이션에서 ODP.NET을 사용하고 있다고 말했습니다. 따라서 해당 세션이 연결 풀에서 생성되었는지 확인하십시오. 오라클이 INACTIVE 상태를 나타낼 때 나는 완전히 믿지 않지만,이 경우에 ... 2 주 전에 세션을 종료 할 수 있다고 생각하십니까?
Delmonte

7
아니 INACTIVE단순히 확인할 정확한 순간에 실행되는 SQL 문이없는 것을 의미합니다 v$session. 연결 풀의 일부인 경우 제대로 작업을 수행합니다. 연결 풀링의 전체 요점은 많은 로그온 / 로그 오프 필요성을 제거하고 빠른 시작을 위해 지속적인 세션을 유지하는 것입니다. 하나의 쿼리를 실행하기 위해). 왜 이런 일이 걱정되는지 모르겠습니다.
Philᵀᴹ

@ 필-나는 그것을 행복하게 대답 할 것입니다!
저스틴 케이브

답변:


22

연결 풀의 일부이므로 자주 사용하기 때문에 유휴 상태가 아닌 것으로 보입니다.

INACTIVEv$session불과 확인할 정확한 순간에 실행되는 SQL 문이없는 것을 의미합니다 v$session.

연결 풀의 일부인 경우 장기간 로그인하여 올바르게 작업하고 있습니다. 연결 풀링의 전체 요점은 많은 로그온 / 로그 오프의 필요성을 제거하고 빠른 쿼리 시작을위한 지속적인 세션을 유지하는 것입니다. 하나의 쿼리를 실행하기 위해 훨씬 더 많은 오버 헤드 로그인이있어 매번 연결이 끊어집니다.

각 세션의 마지막 활동 시간을 얻으려면 다음을 수행하십시오.

select username, UPPER(program), logon_time, 
       floor(last_call_et / 60) "Minutes since active", status
from v$session
where UPPER(program) LIKE '%W3%'
order by last_call_et;

세션을 종료해도 응용 프로그램 측에서 문제가 발생하지 않는다는 것을 알지 않는 한 세션 종료에 대해 조언합니다 (예 : 종료 된 세션 사용).

앱이 시작되면 수백 개의 연결을 생성하는 잘못 구성된 연결 풀을보고있는 경우 일 수 있습니다. 연결 풀의 크기는 필요한 것보다 클 수 있습니다. 개발자 / 응용 프로그램 지원 담당자에게 연락하여 연결 풀 구성 방법을 살펴 보는 것이 좋습니다.

약간의 연구를 마친 w3wp.exe는 IIS 응용 프로그램 풀 프로세스입니다. IIS 웹 서버 관리자와 대화하여 연결 풀링 구성의 맨 아래로 이동하는 것이 좋습니다.


설명해 주셔서 감사합니다. 그러나 odp.net 세션 값이 점점 증가하고 있다면 어떨까요? v $ resource_limit (원래 질문에 추가)를 쿼리하고 프로세스 및 세션 값이 값 제한의 80 %에 도달 함을 보여줍니다. 해당 odp.net 세션이 내 세션 값을 소비하고 701 한계 값에 도달 한 후 데이터베이스 연결을 끊을 수 있습니까? (나는 그 한계 값을 1000 또는 2000으로 확장 할 수 있지만 문제의 일부는 아님을 알고 있습니다)
Delmonte

그런 다음 응용 프로그램 문제가 있습니다.
Philᵀᴹ

왜? 웹 응용 프로그램이 odp.net 연결을 열고 닫고 배치하는 중 ... 이해하고 있듯이, odp.net 세션은 웹 응용 프로그램에서 처리하더라도 향후 연결을 계속 기다리고 있습니다.
Delmonte

연결 풀 구성 문제인 것 같습니다. 시간에 따른 v $ session 수 (*)를 그래프로 표시 했습니까? DB에 대한 진단 팩 라이센스가 있습니까?
Philᵀᴹ

3
난 당신이 IIS (Microsoft의 HTTP / 애플리케이션 서버),하지 ISS (국제 우주 정거장) :-) 의미 가정
저스틴 동굴
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.