Announcement

Collapse
No announcement yet.

Anmeldungszeit/dauer SQLPlus - Verbindung öffnen

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

  • Anmeldungszeit/dauer SQLPlus - Verbindung öffnen

    Hallo zusammen

    so mehr und mehr lerne ich was dazu und möchte eigentlich gar nicht weg von Oracle. D.h. ich habe zur Auswahl Oracle XE und MySQL.

    Eine Verbindung zu öffnen von MySQL dauert weniger als 1Sek. Allerdings habe ich noch umsetzungsschwierigkeiten in VB.Net und MySQL. Der benötigte Treiber für .Net steht nicht zur Softwareverteilung zur Verfügung. Nur der ODBC Treiber. Daher möchte ich schon gerne mit Oracle XE weiterarbeiten, auch wenn ich auf den .Net internen, bereits abgekündigten treiber von Microsoft setze. Der Oracle Treiber steht leider auch nicht zur Softwareverteilung zur Verfügung. Daher kommt mir der Microsoft interne Treiber gerade recht.

    ABER, die Verbdingunsdauer/Connection lässt mich ein bißchen frustrieren.

    Was heißt das? In diesem Forum wurde mir gesagt, das man ein Verbdingung nicht von Beginn bis zum Ende der Anwednugn offen lässt.

    Nur bei Bedarf wird die Verbindung geöffnet, bzgl. Ressourcen.

    Nun habe ich mir Oracle XE auf einen extra Client PC aufgespielt der im Netzwerk verbunden/angeschlossen ist. Die TNSNAMES war demzufolge auf dem Client auf Laufwerk C vorhanden. Via TNSPING zeigte er mir aber keinen ServiceName an, dennoch konnte ich mich aber von einem anderen PC connecten mit dem PC-Name/IP Adresse. Der Erste Connect dauerte ca. bis zu 25sek.

    Da im Unternehmen aber auch irgendwo oracle Datenbanken stehen, habe ich schnell gesehen das es noch eine TNSNAMES auf einem Serverlaufwerk gibt (X:\orant\net80\admin\tnsname.ora) Hier war meine XE Version nicht enthalten, diese habe ich aber nachtragen lassen, so das ich nun via tnsping xe anpingen kann.

    Nun zu meinem kleinen Problem:
    Wenn ich via sqlplus User/Passwort@Servicename eine Verbindung aufbaue, dann dauert es bis zu 15sek.

    Wenn ich diese Verbindung via Quit beendet und innerhalb von 30sek. eine neue aufbaue, bin ich in weniger als 1sek verbunden. Bei mehr als 30sek dauert es wieder 15sek. für den ersten Connect.

    Kann ich da noch irgendwas einstellen oder liegt das ggf. an der internen Netzwerkstruktur, das bsp. geprüft wird ob der User (Client) das überhaupt darf?

    Die sqlnet.ora hat den Wert SQLNET.EXPIRE_TIME = 0 , d.h. daran wird es nicht liegen oder?

    Über eure Hilfe würde ich mich freuen.

    Marja

  • #2
    auch wenn ich auf den .Net internen, bereits abgekündigten treiber von Microsoft setze.
    Dann solltest Du dich schon mal auf diverse Bugs vorbereiten. Die Qualität ist nicht unbedingt berauschend.

    Was heißt das? In diesem Forum wurde mir gesagt, das man ein Verbdingung nicht von Beginn bis zum Ende der Anwednugn offen lässt.
    Dann sollte dieser jemand sich mal mit dem Stichwort ConnectionPooling beschäftigen. Die Verbindungen können durchaus geöffnet und wiederverwendet werden, nur die Statements, ResultSets etc. müssen nach Gebrauch wieder geschlossen werden.

    Wenn ich via sqlplus User/Passwort@Servicename eine Verbindung aufbaue, dann dauert es bis zu 15sek.
    Das ist deutlich zu lang. Wie sehen die Zeiten aus, wenn Du folgendes auf der Kommandozeile machst:
    Code:
    set oracle_sid=XE
    sqlplus deinuser/deinpasswort
    Also ohne das @XE ausführen (funktioniert natürlich nur, wenn Du auf der gleichen Maschine bist wie die Datenbank).

    Die sqlnet.ora hat den Wert SQLNET.EXPIRE_TIME = 0 , d.h. daran wird es nicht liegen oder?
    Das hat damit gar nichts zu tun.

    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
      Dann solltest Du dich schon mal auf diverse Bugs vorbereiten. Die Qualität ist nicht unbedingt berauschend.
      Sind das so gravierende Bugs? Sorry aber bisher kenne ich nur Access und dort hole ich die Daten und lasse sie in der Form anzeigen und ändere ggf. den Datensatz und schreibe sie dann wieder in die Datenbank. Das müßte er doch auch können ohne Bugs. Wie gesagt ich kenne mich dabei noch nicht so 100% aus. Aber was kann ich den außer die Daten von der Datenbank holen und wieder reinschreiben?

      Wie bereits erwähnt, so wie es derzeit aussieht gibt es keinen Treiber der hier im Unternehmen für Oracle verteilt werden kann. Nur verstehe ich das nicht, da ich lt. tnsnames.ora mehere Oracle DB sehe und die müßten ja eigentlich auch irgendwie angeschlossen werden. Gibt es evtl. zu dem Microsofttreiber sonst noch einen anderen, jetzt nicht der direkte Oracle sondern über ODBC oder verwechsle ich da was? Oder kann ich den von Oracle irgendwie in das Programm integrieren, so das er beim Toolstart irgendwie mit berücksichtig wird?

      Dann sollte dieser jemand sich mal mit dem Stichwort ConnectionPooling beschäftigen. Die Verbindungen können durchaus geöffnet und wiederverwendet werden, nur die Statements, ResultSets etc. müssen nach Gebrauch wieder geschlossen werden.
      Ich hoffe ich habe das jetzt nicht falsch wiedergegeben. Es wurde auch was von Pooling erwähnt. Aber sobald ich .close mache, dann ist die Verbdinung doch nicht merh im Pool oder?

      set oracle_sid=XE
      sqlplus deinuser/deinpasswort
      ERROR:
      ORA-12560: TNS: Fehler beim Protokolladapter

      Wenn ich sqlplus Username/Password@ServiceName eingebe, dann dauert es vom anderen Client ca. 1-2 sek. Habe es gerade mal probiert.

      Komisch vorher konnte ich nie über den ServiceNamen mich anmelden, sondern nur über die IP oder den PC-Namen. Seit dem wir aber in der tnsnames.ora, die auf den Server liegt, den Eintrag manuell erstellt haben, brauchte er vorhin 15sec. und nun bin ich nur noch bei 1-2 sek.

      Schon interessant.

      Edit:
      ich habe nun gerade mal bei Access probiert, so wie es aussieht hat die Verbindung schnell funktioniert.
      ADODB Connection kann ich auch bei VB.Net verwenden oder? Wäre das ne Alternative oder verwechsle ich wieder was?

      Option Explicit
      Dim Cn As New ADODB.Connection

      Sub DatenLesen()

      Cn.Provider = "OraOLEDB.Oracle.1"

      With Cn
      .ConnectionString = "Data Source=BLNST;" _
      + "User ID = User;" _
      + "Password = Password;" _
      + "Pooling=true;" _
      + "Min Pool Size=10;" _
      + "Max Pool Size=100;" _
      + "Connection Lifetime=0"
      .Open

      MsgBox .Version

      .Close
      End With
      End Sub
      LG Marja
      Zuletzt editiert von marja; 03.03.2010, 18:44.

      Comment


      • #4
        komisch, heute früh hat es wieder 15sec gedauert. Vielleicht muß ich aber noch dazu erzählen, das es ja kein reiner Server ist sondern ein Client PC ist auf dem Oracle installiert wurde, der im Netz wie jeder andere Client hängt.

        Somit erreiche ich vom "Server" wenn ich dort eine Verbindung aufrufe eine schnelle Connection und von einem anderen PC dann die etwas langsame Connection. Somit gehe ich nun langsam davon aus, das im Netzwerk geprüft wird, ob der entsprechende User die Aktion ausführen darf, das dies dadurch verzögert wird. Das habe ich zumindest damals auch bei den Access DB so erlebt.

        Nachtrag: Nun habe ich mich von MySQL verabschiedet, aufgrund das ich den User nicht den entsprechenden Treiber zur Verfügung stellen kann. Es gibt zwar einen ODBC Treiber der per Softwareverteilung installiert werden kann, aber ich konnte die MySQL DB nicht via VB Code connecten.

        LG Marja

        Comment

        Working...
        X