Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Kadlec am 15.04.05 - 15:00:35
-
Eine Db wird immer langsammer und ich habe leider keine Vergleichswerte ob das Normal ist. Die Db hat eine grösse von 407 Mb (25 538 docs), und das öffnen dauert mitunter ca. 67 sec.
Als "Bremsen" habe ich evt. zwei Felder die Berechnet sind,
dort stecken auch einige Lookups drin.
Da die Felder aber nur Berechnet werden sollen wenn sich ein anderes Feld ändert, habe ich jetzt die Formel auf @If(@IsDocRecalculated;... erweitert, subjectiv betrachtet ändert sich aber nichts.
Wenn ich mir die Formel so ansehe (und die Lookups wären das Problem) müsste ich diese doch sowieso in die @If Abfrage einpacken, oder???
Aslo z.B. @If(@IsDocRecalculated;@Set("Temp1";@DbLookup(bla, bla...
Eine der Formeln:
REM "In diesem Feld wird geprüft ob ein Fehler vorliegt";
REM "Fehler sind: fehlender Mop-Code/Hazardous Indikator und falsche Vorgruppierung.";
REM "*Abschnitt zur Berechnung des Fehlers \'Vorgruppe/Katalo Nr.\'*";
REM "LU der Vorgruppen für die es keine Katalog Nummern gibt.";
TempLUView := "LUKeyword_V";
TempLUKey := "Keine Katalog Nummer";
TempLUNoCatNum := @DbLookup("Notes":"NoCache";"";TempLUView;TempLUKey;2);
TempNoCatNum := @If(@IsError(TempLUNoCatNum);"ERROR";TempLUNoCatNum);
TempNoCatNumForm := @Left(TempNoCatNum;2)+@Right(TempNoCatNum;2);
REM "LU der Vergleichswerte für die Prüfung Vorgruppierung zu Katalog Nummer.";
TempLUView1 := "LUAllCatalogGroups_V";
TempLUKey1 := @Left(CatNoGroup_T;2)+@Right(CatNoGroup_T;2);
TempLUCatGroup2 := @DbLookup("Notes":"NoCache";"";TempLUView1;TempLUKey1;2);
TempCatGroup2 := @If(@IsError(TempLUCatGroup2);"ERROR";TempLUCatGroup2);
TempLUCatGroup3 := @DbLookup("Notes":"NoCache";"";TempLUView1;TempLUKey1;3);
TempCatGroup3 := @If(@IsError(TempLUCatGroup3);"ERROR";TempLUCatGroup3);
REM "Der eine Vergleichswert ist die Vorgruppierung und die zwei zusätzlichen Werte die in der TempCatGroup2 und 3 gespeichert sind.";
REM "Der zweite Vergleichswert ist die TempCatNo.";
REM "****VERGLEICHSWERT **********************";
TempControl := TempLUKey1 : TempCatGroup2 : TempCatGroup3;
TempCatNo := @Left(CatalogNo_T;4);
REM "Zum entgültigen Vergleich muss ausserdem noch die TempNoCatNum herangezogen werden.";
REM "Die Prüfung sieht dann wie folgt aus:";
REM "1 - Wenn die Vorgruppe (TempLUKey1) gleich einem der Werte dieser Temp ist dann liegt kein Fehler vor.";
REM "2 - Wenn die TempCatNo gleich einem der Werte der TempControl ist dann liegt ebenfalls kein Fehler vor.";
REM "Die Prüfung wird aber Umgekehrt da ja geprüft wird ob NOK.";
TempCatNoOK := @If(@IsMember(TempLUKey1;TempNoCatNumForm) | @IsMember(TempCatNo;TempControl);"Yes";"No");
REM "Der zweite Bereich überprüft ob ein MOP Code eingegeben wurde";
TempMOPCodeNOK := @If(MopCode_T ="???");
REM "Der dritte Bereich überprüft ob ein Hazardous Indikator gesetzt ist.";
TempHazIndNOK := @If(@Explode(Process_T) = "Hazardous" & HazIndicator_T != "A") |
@If(@Explode(Process_T) != "Hazardous" & HazIndicator_T = "A") ;
TempZust1 := @If(TempCatNoOK = "No");
TempZust2 := @If(TempMOPCodeNOK);
TempZust3 := @If(TempHazIndNOK);
TempAusg1 := "Vorgruppe/Katalog Nr.";
TempAusg2 := "MOP Code";
TempAusg3 := "Hazard Indicator";
@If(@IsDocBeingRecalculated;@Explode(@If(TempZust1;TempAusg1;",") : @If(TempZust2;TempAusg2;",") : @If(TempZust3;TempAusg3;",");",");@Success)
-
Hi,
du schreibst, dass das Öffnen 67 sec. dauert. Welches Öffnen meinst du denn? Das Öffnen der DB oder eines Dokumentes?.
Wenn es um das Öffnen der DB geht, dann spielen die berechneten Felder erstmal keine Rolle. Dann liegt es an der Ansicht die beim Starten angezeigt wird.
Axel
-
glaube ich auch, dass das an den Ansichten liegt. Ist dort evtl eine Select-Formel, die die aktuelle Zeit/das aktuelle Datum berechnet und als Auswahlkriterium verwendet?
-
Ja es geht um das öffnen der Db.
Nein die Select Formel enthält kein Datum:
TempShowStatus := @If(@Contains(StatusDescr_T;"Distributed")) &
!@If(@Contains(StatusDescr_T;"Accepted")) &
!@If(@Contains(StatusDescr_T;"Rejected NOK"));
SELECT Form="CatalogAlertImport_D" & TempShowStatus
-
Hi,
wie ist denn die Ansicht aufgebaut? Hat sie viele Kategorien?
Axel
-
In dieser Ansicht gibt es zwei Kategorien.
Eine davon ist der Leseberechtigte.
-
Setz doch mal auf der Konsole nen "sh database <Pfad+Filename>" ab. Dann bekommst Du auch eine Liste aller Views mit Größe des Viewindex angezeigt.
-
Da komme ich nicht ran.
-
Hi,
du kannst auch im Notes-Protokoll (log.nsf) in der Ansicht Benutzung/Nach Größe schauen.
Dort werden die Größen der Ansichtne angezeigt.
Axel
-
In der Log.nsf finde ich keine Infos zur datenbank.
Muss ich da irgendwas tun??, sorry keinen blassen Dunst.
-
Hi,
eigentlich verwaltet Notes das selbst. In welcher Log.nsf hast du denn gesucht?
Axel
-
Ich habe nur eine gefunden "meine" Lokale,
auf dem Server müsste auch eine sein???
-
Aber Hallo, normalerweise direkt im Root des Servers.
-
Habe den ganzen Server durchsucht aber keine gefunden.
Macht es Sinn eine Kopie der Db auf Lokal zu speichern und dann die Lokale Log.nsf nochmal zu checken??
-
Nein, das macht keinerlei Sinn, Boris. Gerade die gewünschten Informationen werden vom Server und niemals vom Client in die LOG.NSF eingestellt.
Keine LOG.NSF (genauso muss die DB an sich heissen, wenn da niemand an der Server NOTES.INI gefeilt hat) auf dem Server ist an sich sehr ungewöhnlich und führt zu einem grossen Informationsdefizit. Was sagen Dir denn Eure Admins zu diesem Thema ?
Bernhard
-
Kann man (admin) eigentlich die Log.nsf irgendwie verbergen?
Oder kann man die infos die die db enthält, in eine Zentrale Log.nsf
speichern?
Ich könnte mir vorstellen das es da etwas "selbst gestricktes" bei uns gibt.
Ich werde morgen aber nochmal auf unseren Servern nachschauen evt. habe ich ja doch ein Verzeichniss nicht richtig durchgesehen.
-
man kann die ACL bearbeiten und anderen Leuten keinen Zugriff geben.
Für besonders intelligent halte ich das aber nicht.
Welche mega-geheimen Infos stehen in einer Log.nsf?
In die Log.nsf wird automatisch von Notes geschrieben.
Wenn die nicht da ist, wird nach der gesucht, nicht gefunden und irgendein interner Error-Handling Mechanismus tritt ein, der dafür sorgt, dass das System nicht ganz abstürzt. Letzterer wird auf jeden Fall Ressourcen beanspruchen und wir wissen alle nicht wie der aussieht.
-
@Axel:
Naja, jedem würde ich nicht Zugriff auf die LOG.NSF geben. Da kann auch mal etwas drin stehen, was ein Nasenbär missverstehen kann, weil er nicht alles weiss.
@Boris:
Meine wichtigste Frage blieb unbeantwortet: Was sagen Deine Admins ? Ohne die bist Du verloren oder hast zumindest einen schweren Stand.
Kleiner Tipp trotzdem: Was passiert, wenn Du den Datenbank-Öffnen-Dialog startest und dort Euren Server auswählst sowie dort im Feld "Dateiname" "LOG.NSF" eingibst ?
Bernhard
-
Ja. O.k. Allen nicht.
Aber der Entwicklergruppe auf jeden Fall.
Ich hatte mal einen Kunden, die argumentierten, dass ein Entwickler mit einem sauberen Entwicklungsprozeß keinen Zugriff auf den Logserver braucht.
Ich weiss immer noch nicht, welche Bücher solche Leute über Softwareentwicklungsprozeßmanagement lesen. In meinen steht das jedenfalls anders drin. Vermutlich verlassen sie sich auch auf ihren "gesunden Menschenverstand" (sprich: ihre Vorurteile).
Naja die Verantwortlichkeit für die Administration hat vor 2 Monaten gewechselt und nun habe ich dort Zugriff auf die log.nsf.
Ein gewisser Typ von Admins meint, dass es grundsätzlich professionell ist, wenn man Zugriffsrechte so restriktiv wie nur eben möglich regelt. Meist sind das die selben Leuten, die laut Softwarefehler schreien, ich bei denen vorbeifahre und wir dann gemeinsam feststellen, dass es an irgendwelchen neuen Release-Kombinationen liegt. Beliebt sind dabei gewisse LEI Releases und DWF auf OS/390.
Für einen Tomcat/Websphere Entwickler ist es völlig undenkbar, dass ihm Zugriff auf die Log-Files verwehrt wird...
-
@Bernhard
Deine Frage nach den Admins konnte ich nicht beantworten weil ich die nicht gefragt habe. Die Admins sind in einer "Fremd" Firma und dort jemanden zu bekommen ist nicht so einfach, deshalb habe ich erst mal probiert ob ich hier eine Antwort erhalte.
Die Log.nsf ist im Dialog nicht sichtbar, wenn ich den Dateinamen eingebe, bekomme ich die Meldung "das ich nicht authorisiert bin".
Mit den Admins ist es also so ne Sache, fühle mich auch hier besser aufgehoben.
Bringt es mich weiter wenn ich auf dem Test Server meine db und eine Log.nsf hätte??
-
Das bringt Dich auf jeden Fall weiter. Und Dein Testserver sollte auf jeden Fall eine LOG.NSF haben (sonst bräuchtest Du auch keinen Testserver, wenn Du dort beschränkte Rechte hast). Wenn die DB dort liegt, musst Du alle Ansichten der DB aufbauen lassen (am einfachsten mit Strg-Umsch-F9).
Die Fremdadmins haben offensichtlich in den DB-Eigenschaften der Log-DB eingestellt, dass diese nicht im Datenbank-öffnen-Dialog erscheinen soll. Dem Entwickler aber die Zugriffsrechte zu entziehen, halte ich - wie Axel J. - für äusserst bedenklich. Da solltest Du mal ein klärendes Gespräch mit den Verantwortlichen (den Auftraggebern der Fremdfirma) führen, vor allem, da die Leute für Dich so schlecht erreichbar sind. Das ist nicht gut.
Bernhard
-
Also, der Testserver hat die Log.nsf auf die ich allerdings auch nicht zugreifen kann. Habe dann mal in mein Verzeichnis eine kopiert.
Danach dann die Ansichten aufbauen lassen. Die Log datei ist aber leer. Muss ich noch etwas anderes tun, oder bedeutet die leere Log datei das alles OK ist??
Oder funkt. das so nicht??
-
Ihr habt gute Argumente, um bei besagter Fremdfirma gehörig Krach zu schlagen.
Wenn die das eingerichtet haben, muss sehr sichtbar dokumentiert werden, wie interne Entwickler an die log.nsf kommen.
Die haben das zwar eingerichtet. Offenbar sind sie aber nicht dafür beauftragt, um den Betrieb aufrecht zu erhalten (Administration). Das soll wohl irgendwie intern gemacht werden.
Das ist aber dann nicht ordnungsgemäss übergeben worden.
Informationen für den Zugriff auf die log.nsf ist definitiv Bestandteil der Übergabe Einrichtung/Administration.
Ich würd das einem Manager bei euch melden und versuchen mit ihm zusammen ein bischen Gas zu geben.
Die Log.nsf auf Testservern zu beschränken ist nun wirklich unsinnig.
-
Nun gut, dann werde ich mich morgen mal daran machen Zugriff auf die Log datei zu bekommen.
Habe allerdings keinen Plan was so alles in die db geschrieben wird, währe natürlich für eine "Diskussion" ganz Hilfreich.
Was könnte ich in diesem spez. Fall aus der db für Infos ziehen??
Die grösse der Ansicht war hier angesprochen worden, aber was dann, gibt es da einen Wert ab dem es Probleme gibt??
-
Hi,
einen bestimmten Wert, ab dem es Probleme gibt, gibt es nicht. Denn die Größe ist von vielen Faktoren abhängig.
Aber nochmal was anderes.
Dauert jedes Öffnen der DB solange, und wie sieht es den mit anderen Ansichten aus? Eventuell hat ein Ansichtenindex einen Schlag weg und er wird nicht sauber aktualisiert.
Versuch's doch mal mit einer anderen Startansicht.
Axel
-
OK werde dann mal noch ein paar Tests machen.