ПредишенСледващото

Как да премахнете несъществуваща процеси на сесии в Oracle

На сега, за да популярно заглавие език може да бъде: ". Как да премахна органите (убити сесии)" Интересно е, че такова име ще звучи точно.

Както е известно, всяка комуникационна сесия на програмата за клиент в базата данни на Oracle се изпълнява от "процес сървър", която се проявява в компютъра с базата данни. Но извънредно заседание може да бъде прекъснато (например, поради аварийно прекъсване на клиентските програми или от администратора на издаване промяна на системата KILL СЕСИЯ команда DB) и след това, логично, процесът на сървър, обслужващ сесия трябва пропаст. Понякога, обаче, това не се случи, и администраторите да наблюдават сървъра все по-нарастващ списък от "мъртви" сървърни процеси. Защо - отделен разговор и Oracle разработчиците има вероятно защитата си, но до този момент да отида, не всички администратори имат способността. Важно е, че "мъртви" сървърни процеси консумират минимум RAM, която някога може да не е достатъчно, и че това могат да бъдат преодолени.

От процедурна гледна точка на всяка конкретна програма, наречена "копие на базата данни Oracle" на се състои от "набора от взаимодействащи процеси" (документация). Всяка активна комуникация сесия с програма клиент изпълнява СУБД например един такъв процес (на сървъра).

Списък на процеси, като част от базата данни могат да бъдат намерени в динамика маса V $ процес:

SELECT адр, SPID, програма pga_used_mem
ОТ V процес $;

Списък на сесии, установени от клиентските програми с базата данни могат да бъдат намерени в динамичната таблица производителност V $ СЕСИЯ:

SELECT Сид, сериен #, paddr, статус, терминал, програма
ОТ срещу $ сесия;

Ако ние комбинираме двете плочи, при условие V $ PROCESS.ADDR на = V $ SESSION.PADDR, да получат информация за заседанията, техните държави и с организации СУБД физични процеси за тях:

SELECT p.spid, p.program, s.program, s.terminal, s.status
ОТ V процес $ р, срещу $ сесия ите
КЪДЕТО p.addr = s.paddr;

(Кой може да издава и други области, за да се справят с тяхното значение в документацията).

напразно Освобождаване заети ресурсите на базата данни се постига чрез премахване на процеса на OS (конци), която реализира процеса Oracle, съответстващ на "убит" сесия. За такова отстраняване като част от софтуера на Oracle има специална orakill програма, чиито параметри номера на процес (конци) операционна система (извадете от V $ PROCESS.SPID) и името на модел на базата данни (ORACLE_SID):

orakill ORACLE_SID nomer_protsessa_ (резба)

Как да използвате тази програма - един трик. Например, може да се изгради тип заявка

SELECT "HOST orakill" || i.instance_name || '' || p.spid
ОТ V процес $ р, срещу $ сесия S, V $ Например аз
КЪДЕ p.addr = s.paddr И
"УБИТИ" s.status =;

и да заобиколим команди SQL му * Plus SPOOL и START (както и забраните издаването на заглавието) и по този начин се получи скрипт SQL * Plus, ръководен от външни средства (Cron, при, или програма, или чрез използване на конзолата на Диспечера на Oracle Enterprise) с желаната редовността. Този сценарий, резултатният ще излезе във файл във форма за това:

HOST orakill учител в 2056
HOST orakill учител през 1628
HOST orakill учител през 1604 г.
HOST orakill учител в 1556
.

Старт и след това се тълкува командите.

За изпълнение на тази техника, можете независимо като упражнение.

За повече информация, моля свържете се с интерфейс Ltd.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!