Announcement

Collapse
No announcement yet.

Netzwerktraffic berechnen/überwachen

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

  • Netzwerktraffic berechnen/überwachen

    Hi Leute!

    Ich wollte fragen, wie man in Oracle 9i den Netzwerktraffic überwachen kann, z.B. für bestimmte Procedures etc. Beispielsweise ein Teil der Datenbank wird wo anders "hinverlagert". Ab diesem Zeitpunkt wäre ja von großer Relevanz, wie viel Daten durch das Netzwerk übetragen werden, zumindest möchte ich es herausfinden.

    Hätte jemand eine Idee? Einen Ansatz?

    Wäre super toll, wenn sich jemand melden würde.

    Liebe Grüße

  • #2
    Ab diesem Zeitpunkt wäre ja von großer Relevanz, wie viel Daten durch das Netzwerk übetragen werden
    Eigentlich nicht, es wird das geschickt was benötigt wird.
    Wichter für die Performance sind die Anzahl der Roundtrips, die Latenzzeit und die verfügbare Bandbreite.
    Am besten mißt Du das nicht über Oracle Bordmittel (man könnte es mit Traces herausfinden, das ist aber für den Dauerbetrieb eher ungeeignet), sondern mit entsprechenden externen Tools.

    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
      Hallo!

      1.)
      Originally posted by dimitri View Post
      sondern mit entsprechenden externen Tools.

      Dim
      Welche externe Tools gäbe es da bzw. kannst du mir welche empfehlen?

      2.)
      Ich denke mir, es muss doch möglich sein, mittels SQL Abfragen, irgendwie herauszufinden, wie oft diese Procedure (oder etwas anderes) aufgerufen wird und wie viel MB/GB Daten bearbeitet bzw. übertragen werden. Was Roundtrips sind, weiß ich nicht. Aber anhand der Bandbreite und ungefährer Abschätzung wie viel Daten in Zunkunft "fließen" werden, kann ich jedoch sagen, ob eine "Umsiedlung" problematisch wäre oder nicht.

      Sind performenstechnisch meine Überlegungen richtig? Oder geht es überhaupt nicht um die Datenmenge, was ich mir nicht vorstellen kann.

      Wenn ihr mich aufklären könnt, wäre ich vieeel dankbar.

      Liebe Grüße

      Comment


      • #4
        Welche externe Tools gäbe es da bzw. kannst du mir welche empfehlen?
        Zum Beispiel Ethereal Benutze Netzwerksniffern aber nur in vorheriger Absprache mit evtl. vorhandenen Admins, denn damit kannst Du auch Daten auf TCP Ebene mitlesen und protokollieren. Das könnte ggf. durchaus auch als Angriff ausgelegt werden. Des weiteren sind solche Tools in einer rechtlichen Grauzone, da uns die fachlich kompetente Bundesregierung den sog. Hackerparagraphen beschert hat.

        Ich denke mir, es muss doch möglich sein, mittels SQL Abfragen, irgendwie herauszufinden, wie oft diese Procedure (oder etwas anderes) aufgerufen wird und wie viel MB/GB Daten bearbeitet bzw. übertragen werden.
        Hmm nein nicht so direkt. Es gibt diverse Views, die Wartezustände aufzeichnen u.a. auch Wartezeiten die Netzwerkbedingt sind. v$system_event ist so eine. Das korrekte interpretieren dieser Werte erfordert aber schon etwas tieferes Wissen über Oracle Waits.

        Mit folgendem SQL kannst Du die Waits für einen bestimmten User herausfinden:
        Code:
        select sid,
               event,
               total_waits,
               time_waited,
               average_wait 
          from v$session_event
        where sid in (select sid from v$session where username='DIMITRI');
        Die Erklärung der SQL*Net Waits findest Du hier.

        Hiermit bekommst Du die Top 10 Statements, die am meisten Zeilen (wobei Zeilen nicht unbedingt äquivalent zur Datenmenge sein müssen) pro Statement liefern.

        Code:
          select * from
          (select b.username ,
                  executions "Ausführungen",
                  fetches/executions "Zeilen pro Ausführung", 
                  round((rows_processed/executions)/15)
                  roundtrips,
                  sql_text sql
            from v$sqlarea a,
                 dba_users b
           where b.user_Id=a.parsing_user_id
             and executions>0
          order by rows_processed/executions desc)
        where rownum <= 10;
        Die Aussagekraft ist allerdings eher gering, denn es sagt rein gar nichts darüber aus, ob es jetzt schnell genug oder nicht war.

        Was Roundtrips sind, weiß ich nicht.
        Wie oft im Netzwerk "hin- und her" gegangen werden musste um die Daten zu bekommen. Je mehr Roundtrips, desto mehr Overhead, verändern kann man das Applikationsseitig über die fetchsize (anderer Name Arraysize), in der sqlnet.ora oder auch direkt auf Betriebssystemebene. Vor allem letzteres ist nichts, was man mal so eben machen sollte.

        Sind performenstechnisch meine Überlegungen richtig? Oder geht es überhaupt nicht um die Datenmenge, was ich mir nicht vorstellen kann.
        Ich gehe mal davon aus, dass die DB über ein normales 100MBit Ethernet angebunden ist und nicht 10 Router und 20 Switches dazwischen stehen. Dann sollte die Netzwerkperformance erstmal kein Flaschenhals sein. Werden extrem viele Daten abgerufen, dann muss eben eine GB Ethernet Anbindung her.

        Meiner Erfahrung nach ist ein normal konfiguriertes Netzwerk in der heutigen Zeit keine Performancebremse mehr (Ausnahme RAC hier kann viel gewonnen oder verloren werden, aber das verwendest Du ja nicht).
        Werden viele Zeilen vom Client geholt, kann über die Arraysize effektiv getunt werden (in Java ist das z.B. die Methode setFetchSize eines Statement bzw. ResultSet Objekts).
        Wichtiger sind eher die Verwendung von Bindvariablen in einem OLTP System, aktuelle Tabellenstatistiken, schnelle Platten und ausreichend Speicher.
        Last but not least kann das alles natürlich zunichte gemacht werden, wenn die SQLs schlecht geschrieben wurden oder die fachlichen Anforderungen große Verenkungen erforderlich machen.

        Von wo nach wohin wird die Instance denn verlagert?

        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


        • #5
          Zuerst möchte ich mich vielmals, für den informativen Beitrag bedanken!!!!! Nun zu deiner Frage:

          Von wo nach wohin wird die Instance denn verlagert?
          Das einzige was ich weiß ist, dass ein Teil der Datenbank, bei einer anderen Firma rennen soll. Schön langsam wird mir bewusst, dass diese Art von "Problemen" eher Verständnis auf Hardwareebene vorraussetzt und ich über das Netzwerk selbst recht wenig weiß.

          Liebe Grüße
          Eukalyptus

          Comment

          Working...
          X