Announcement

Collapse
No announcement yet.

inaktive Sessions, killen?

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

  • inaktive Sessions, killen?

    Hallo,

    wir haben bei uns ein DataWarehouse. Für die Aktualisierung speichern wir die Index-Informationen in einer Zwischen Tabelle um sie anschließend wieder automatisiert anlegen zulassen. Das Ganze läuft in einer Schleife, die den Erfolgreichen Ablauf überwacht und den Prozess ggf. wiederholt.

    Und nun zum eigentlich Problem:
    Wird während des Aktualisierungsprozesses die Datenbank offline gesichert, bekommt der Prozess einen Fehler und startet nach einer bestiimten Zeit von vorne. Für die Aktualisierung (Datenschreiben) funktioniert das auch alles super. Aber passiert dies während die Indizes erstellt werden, wird zwar auch nach einer gewissen Zeit das ganze wiederholt. Jedoch kommt dann der Fehler, dass der Client nicht Connectet ist. Demzufolge hat die DB die Session geschlossen. Leider merkt der Client dies nicht und versucht immer wieder die geschlossenen Session zu verwenden.

    Wie kann ich dieses Problem umgehen? (Oracle 10g)
    Offene Sessions auf dem Client finden/killen?

    Vielen Dank für eure Hilfe.

  • #2
    Das kannst Du nicht auf Datenbankseite lösen. Der Client muss in diesem Fall eine neue Connection öffnen.

    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
      Das Problem ist das der Client nicht erkennt das die Session nicht mehr existiert und demzufolge auch keine neue öffnet. Gibt es Clientseite irgendeine Möglichkeit, sich die "aktiven" Sessions bzw. generell die Verbinungen zur OracleDB anzeigen zu lassen und manuell zu killen?

      Marcel

      Comment


      • #4
        sich die "aktiven" Sessions bzw. generell die Verbinungen zur OracleDB anzeigen zu lassen
        View V$SESSION könnte hier helfen

        manuell zu killen
        ALTER SYSTEM KILL SESSION ...

        kuemmelchen

        Comment


        • #5
          über die View V$SESSION wird die Session nicht mehr angezeigt. Für die DB existiert sie auch nicht mehr, da die DB zum Beispiel heruntergefahren wurde, gesichert und anschließend neu gestartet wird. Das Merkt aber der Client (anderer Rechner im Netz) nicht. Er versucht noch immer die nicht mehr existierende Session zu nutzen. Und genau an diesem Punkt ist das Problem. Wie sage ich den Client, das er eine neue Session eröffnen soll und die alte (die in der DB nicht mehr existiert) verwirft?

          Comment


          • #6
            Wie sage ich den Client, das er eine neue Session eröffnen soll und die alte (die in der DB nicht mehr existiert) verwirft?
            Ja welchen Client denn? Da gibt es hunderte Möglichkeiten. Einen Appserver, einen webserver, einen Thickclient mit eigenem Connection Pooling einen Thickclient der das eingebaute Connectionpooling des Oracle JDBC Treibers verwendet...

            Du hast einen Bug in der Anwendung. Wenn Du Zugriff auf den Quelltext hast kannst Du den Fehler abfangen und darauf reagieren.
            Falls nicht, kannst Du versuchen über die Konfiguartion etwas zu erreichen. Hier ist die Doku oder der Herstellersupport dein Ansprechpartner bzw. ein geeignetes Forum.

            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

            Working...
            X