Inaktive Sitzungen, die in Oracle
Ich würde gerne eine Frage stellen :
Dies ist meine Umgebung :
- Solaris-Version 10; Sun OS Version 5.10
- Oracle-Version: 11g Enterprise x64 Edition.
Wenn ich auf diese Abfrage :
select c.owner, c.object_name, c.object_type,b.sid, b.serial#, b.status, b.osuser, b.machine
from v$locked_object a , v$session b, dba_objects c
where b.sid = a.session_id
and a.object_id = c.object_id;
Manchmal bekomme ich viele, die den status 'INACTIVE'
.
Was hat das inaktiv bedeutet?
Macht dies werde mein db und die Anwendung langsam?
Was sind die Auswirkungen des aktiven und inaktiven status?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kurz bevor das oracle executable führt eine
read
um den nächsten "Befehl", dass es ausgeführt werden soll für die Sitzung, es wird seine session-StatusINACTIVE
. Nach derread
abgeschlossen ist, wird es aufACTIVE
. Es wird in diesem Zustand bleibt, bis es fertig ist die Ausführung der angeforderten arbeiten. Dann wird die ganze Sache wieder von vorne.Nicht unbedingt. Finden Sie die Antwort auf Ihre Letzte Frage.
Den Folgen einer großen Anzahl von Sitzungen (AKTIV oder INAKTIV) deutlich in zwei Arten.
Die erste ist, wenn die Anzahl ist streng monoton Steigend, die führen würde, die Möglichkeit zu prüfen, dass die Anwendung undichte verbindungen. Ich bin zuversichtlich, dass eine solche Katastrophe ist nicht der Fall, sonst hätten Sie es erwähnt haben speziell.
Den zweiten, wo die Zahl schwankt innerhalb der erklärte der oberen Grenze, ist wahrscheinlicher. Nach Andrew Holdsworth und andere Prominente Mitglieder der RWP, einige Architekten zu viele verbindungen in der Anwendung connection pool und Sie zeigen, was passiert (Reaktionszeit und Verfügbarkeit Folgen), wenn es zu hoch ist. Sie haben auch ein Rezept für, wie man besser definieren Sie den connection pool werden die Attribute und Verhalten.
Die Essenz des Arguments ist, dass durch das zulassen einer großen Anzahl von verbindungen im pool, den Sie Ihnen erlauben, alle beschäftigt bei der gleichen Zeit. Anstatt die Anwendung tier-queue-Transaktionen, die die Datenbank-server zu spielen eine primäre Rolle in der Warteschlange für low-level-Ressourcen wie Festplatten -, CPU -, Netzwerk -, und auch andere Dinge wie Warteschlange einreiht.
Selbst wenn alle Sitzungen beschäftigt sind, für die nur eine kurze Zeit und Sie sind die streitenden für die verschiedenen Ressourcen, die Behauptung ist verschwenderisch und kann sich wiederholen, immer und immer und immer wieder. Es macht mehr Sinn, um zusätzliche Zeit zu verbringen Konzeption einer guten user experience queueing Modell, so dass Sie verschwenden keine Ressourcen auf das, was ist zweifellos die am meisten teure (hardware-und software-Lizenzen) tier in Ihrer Architektur.
ACTIVE
die Sitzung ist derzeit die Ausführung einiger SQL-Operationen in der Erwägung, dassINACTIVE
bedeutet das Gegenteil. Überprüfen Sie heraus die ORACLEv$session
- DokumentationDurch die Natur, eine hohe Anzahl von
ACTIVE
Sitzungen verlangsamen die gesamte DBMS einschließlich Ihrer Anwendung. In welchem Umfang ist schwer zu sagen - hier haben Sie Blick auf IO, CPU, etc. Lasten.Inaktive Sitzungen haben eine geringe Auswirkung, es sei denn Sie überschreitet die maximale session-Anzahl.
In einfachen Worten, ein
INACTIVE
status in v$session bedeutet, dass keine SQL-Anweisung ausgeführt wird, an der Zeit, die Sie check-in v$session.Auf der anderen Seite, wenn Sie sehen, eine Menge von inaktiven Sitzungen, dann überprüfen Sie zuerst die
last activity time
für jede Sitzung.Was ich vermute, ist, dass Sie möglicherweise Teil eines
connection pool
-, damit Sie vielleicht Häufig verwendet. Sie sollten sich keine sorgen machen, da von einemapplication connection
Perspektive, der connection pool wird sich darum kümmern. Sie könnten sehen, wieINACTIVE
Sitzungen für eine Recht lange Zeit.Es gar nicht vorschlagen D/B ist langsam.
Status INAKTIV bedeutet Sitzung nicht ausführen einer Abfrage nun.
AKTIV bedeutet, dass Sie die Ausführung der Abfrage.