Чому сесії Oracle все ще живі після того, як два тижні були неактивними


16

БД: Oracle 10г

O / S: Windows Server 2003 64 біт

Я запитую список сеансів Oracle, створених веб-програмами (фільтр за програмою = w3wp.exe)

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

введіть тут опис зображення

Як повідомляє Logon_Time, чому все ще живі сесії з 31.07.2012 чи 01.08.2012 чи будь-які сесії до сьогодні (21.08.2012)?

Я налаштував на sqlnet.ora: SQLNET.EXPIRE_TIME = 20 Отже, це означає, що кожні 20 хв Oracle перевіряє, чи з'єднання все ще активні.

Усі користувацькі схеми мають профіль за замовчуванням. Це означало б, що жоден сеанс ніколи не закінчився і не помер?

введіть тут опис зображення

Додано у відповідь на коментар Філа:

введіть тут опис зображення

Додано у відповідь відповіді Філа:

введіть тут опис зображення


Що v$session.PREV_EXEC_STARTдля цих сеансів? Я підозрюю, що вони є частиною пулу зв’язків, тому не вийшли з ладу, тому що їх часто використовують.
Philᵀᴹ

Моє Oracle 10g, тому на v $ сесії немає стовпчика PREV_EXEC_START. Але в мене знову запит, включаючи стовпець Last_Call_ET (я додав цю картинку до свого запитання).
Delmonte

Я спілкувався з нашими розробниками, і вони сказали мені, що вони використовують ODP.NET у своїх веб-додатках. Тож точно, що ці сеанси були створені у пулі зв’язків. Я не вірю повністю, коли Oracle демонструє статус НЕАКТИВНИЙ, але в цьому випадку ... Ви думаєте, що я міг би вбивати сесії два тижні тому?
Delmonte

7
Ні. INACTIVEОзначає лише, що в той самий момент, коли ви перевіряєте, не виконується оператор SQL v$session. Якщо вони є частиною пулу з'єднань, вони роблять свою роботу належним чином - вся суть об'єднання з'єднань полягає в тому, щоб усунути потребу в безлічі входів / виходів із системи та тримати постійні сеанси для швидкого запуску (набагато більший накладний вхід знову та знову просто виконати один запит). Я не розумію, чому ти переживаєш з цього приводу.
Філ

@Phil - Я б із задоволенням підтримав це як відповідь!
Джастін Печера

Відповіді:


22

Я підозрюю, що вони є частиною пулу зв’язків, тому не вийшли з ладу, тому що їх часто використовують.

INACTIVEв v$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, щоб допомогти дістатися до нижньої частини конфігурації об’єднання з'єднань.


Дякуємо за ваше пояснення, але що робити, якщо ці значення сеансів відкри.net зростають і зростають? Я запитую v $ resource_limit (доданий у моєму первісному запитанні) і показує, що значення процесів і сеансів досягають 80% межі значення. Ці сеанси odp.net можуть споживати мої значення сеансів, досягти граничного значення 701, а потім перервати моє підключення до бази даних? (Я знаю, що я міг би розширити ці граничні значення до 1000 або 2000, але це не є питанням)
Дельмонте

Тоді у вас проблема з додатком.
Philᵀᴹ

Чому? Веб-додатки відкривають, закривають і розпоряджаються з'єднаннями з відкритим.net. Як я розумію, ці сеанси відкри.net просто живі і чекають майбутніх з'єднань, навіть якщо веб-додаток розпоряджається ними.
Дельмонте

Схоже, це буде проблема з налаштуванням пулу підключення. Ви зрозуміли кількість (*) v $ сеансів протягом часу? У вас є ліцензія на пакет діагностики для БД?
Philᵀᴹ

3
Я припускаю, що ви мали на увазі IIS (сервер додатків Microsoft HTTP / додаток), а не ISS (Міжнародна космічна станція) :-)
Джастін Кейв
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.