Announcement

Collapse
No announcement yet.

Löschen von inaktiven Sessions?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Löschen von inaktiven Sessions?

    Hai,
    ich wollte mal fragen, wann inaktive Sessions aus einer Oracle-datenbank gelöscht werden.

    Haben das Problem, dass eine Datenbank mit alten Prozessen zu läuft... und mich würde mal interessieren, wie die Oracle-Eigene Einstellung ist, um diese zu entfernen.

    Danke schon mal im Voraus.

  • #2
    ich wollte mal fragen, wann inaktive Sessions aus einer Oracle-datenbank gelöscht werden.
    Die Datenbank macht da erstmal garnichts. Nur weil eine Session inaktiv ist, heißt das ja nicht grundsätzlich das sie nicht mehr gebraucht wird. Das muss der Client wissen wann er die Connection beendet.

    Man könnte natürlich einen Scheduler einrichten, der alle paar Minuten losläuft und inaktive Sessions killt, aber grundsätzlich ist das ein Bug in der Anwendung wenn die Connection nicht mehr geschlossen wird.

    Dim
    Zitat Tom Kyte:
    I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

    Comment


    • #3
      ich wollte mal fragen, wann inaktive Sessions aus einer Oracle-datenbank gelöscht werden.
      Manuell können Sessions durch folgende SQL-Anweisung gekillt werden:
      ALTER SYSTEM KILL SESSION 'integer1, integer2';
      Der erste Integer-Wert bezieht sich auf die Spalte SID und der zweite Integer-Wert auf die Spalte SERIAL# jeweils vom View V$SESSION.
      Beispiel:
      SELECT sid, username, serial# FROM v$session;

      SID USERNAME SERIAL#
      --------- ------------------------------ ----------
      8 1
      9 SAR 91
      19 SYSTEM 103

      Das Killen der Session von SAR wird realisiert durch: ALTER SYSTEM KILL SESSION '9, 91';

      Sessions können auch durch den Oracle-Server gekillt werden. Hierzu ist der Parameter SQLNET.EXPIRE_TIME in der Datei sqlnet.ora anzupassen. Die Parameteranpassung kann über den Net-Manger erfolgen:
      LOKAL->Profil->Allgemein->Erweitert->TNS-Zeitüberschreitungswert.

      Auszug aus der Hilfe zu diesem Punkt:
      TNS-Zeitüberschreitungswert: Geben Sie einen Zeitüberschreitungswert für inaktive Verbindungen ein. Oracle Net sendet in regelmäßigen Abständen ein Muster, um zu prüfen, ob die Client-/Server-Verbindung noch aktiv ist. Dadurch wird sichergestellt, dass Verbindungen wegen einer anormalen Client-Beendigung nicht endlos geöffnet bleiben. Wenn eine inaktive Verbindung gefunden wird oder eine Verbindung, die nicht mehr benutzt wird, wird ein Fehler zurückgegeben, der zu einer Beendigung des Server-Prozesses führt.

      kuemmelchen

      Comment


      • #4
        Danke erstmal für eure Antworten.

        Etwas manuelles kommt nicht in Frage, da wir von Rund 15 Datenbanken sprechen ;-) , Scripten wollte ich erst, wenn ich weiß, dass es von Oracle nichts gibt.

        Der TNS-Zeitüberschreitungswert interessiert mich. Kennt sich damit jemand mehr aus?
        Haben z.B. bei einem Server, bei dem wir mit Prozessen große Probleme haben, einen TNS-Zeitüberschreitungswert von 10 eingegeben. Habe gerade schon gelesen, dass es sich dabei um Minuten handelt, in denen Net8 fragt ob der Client noch da ist. Bei uns laufen die Prozesse aber trotzdem voll.
        Ältester Prozess auf dem Server ist vom 12.09 sollte also weg sein. (Benutzer ist definitiv nicht mehr auf der Datenbank)

        Jemand eine Idee, warum nichts passiert?
        Danke schon mal im Voraus.

        Comment


        • #5
          Der TNS-Zeitüberschreitungswert bezieht sich nur auf Sessions und nicht auf Prozesse. Zu den Prozessen gehört z. B: der PMON, der SMON usw..
          Diese Prozesse erzeugen ständig Trace-Dateien. Standardmäßig werden sie unter Oracle\...\admin\bdump abgelegt. In diesem Verzeichnis befindet sich auch die Datei alert.log.
          Schau mal in diesen Dateien nach.

          kuemmelchen

          Comment


          • #6
            Hai,
            danke auch für die Antwort.
            Habe aber gerade gesehen, dass es sich doch um Sessions handelt. Keine Prozesse. (Habe ein Programm, welches die Namen vertauscht hat)

            Wenn es sich um Sessions handelt, warum greift dann der TNS-Zeitüberschreitungswert nicht?

            Hat jemand eine Idee?

            Dazu muss ich noch sagen, dass die meisten älteren Sessions von einer Firma sind, die sich per VPN in unser Firmen-Netzwerk einwählen. Kann es also sein, dass die Verbindung aufrecht erhalten wird, weil die Anfrage nur an einen VPN-Router geht? Somit die Verbindung für Oracle okay ist, aber halt kein Endgerät vorhanden ist?

            Danke schon mal!

            Comment

            Working...
            X