Autor Thema: Probleme mit Notes C&S (busytime.nsf) lösen  (Gelesen 2989 mal)

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Probleme mit Notes C&S (busytime.nsf) lösen
« am: 15.02.02 - 17:08:11 »
Hallo zusammen,

ich glaube, jeder der mit C&S von Lotus Notes arbeitet, stand irgendeinmal vor dem Problem, daß Ressourcen als frei angezeit werden, in Wirklichkeit aber belegt sind.
Schuld ist hier eine inkonsistente busytime.nsf.
Nun was macht man in einem solchen fall. ???

Ran an die Konsole und den scheduler mit tell sched q
herunterfahren; anschließen die busytime.nsf löschen und mit load sched den scheduler wieder starten.

Da das bei uns 2 x am Tag nötig war  ;D, habe ich mir gedacht: warum kann Notes das denn nicht übernehmen.

Resultat ist ein Agent, der über ein paar Notes APIs die o.g. Aktionen ausführt. :D

Der Agent kann in jeder NotesDatenbank laufen; ich haben den Agenten einfach ins Domino Directory kopiert.

Bitte nicht vergessen mit der ServerID zu signieren !!

hier der Link zum Download der fertigen Agenten

http://www.eknori.de/downloads/killbusy.zip

für alle diejenigen unter euch, die lieber tippen hier der Quelltext. :D

'KillBusyTimeNsf:

Option Public
%REM
================================================================
(c) 2001  Heinz Ulrich Krause, Am Zaunbusch 8, 40822 Mettmann, ulrich-krause@web.de

Sometimes the busytime.nsf gets corrupt and you don't realize it before it's too late.
It especially happens with R5 servers.
This agent kills the corrupt  database.
A new busytime.nsf will be created when the scheduler task restarts
The code uses a few Notes API calls to send console commands to the server.

Run as a scheduled agent

%END REM

'===============================================================
' DECLARATION SECTION
'===============================================================


Const QUIT_SCHEDULER = "tell sched q"
Const LOAD_SCHEDULER = "load sched"
Const UNLOAD_CACHE = "dbcache flush"

'Replace the location of the busytime.nsf
Const KILL_BUSYTIME_NSF = "c:\notes\notesdat\busytime.nsf"

'Replace the value with your server'S name
Const SERVER = "YOUR_SERVER"


'===============================================================
' SUB INITIALIZE
'===============================================================


Declare Function NSFRemoteConsole Lib "NNotes.dll" Alias "NSFRemoteConsole" (Byval Server As String, Byval cmd As String, ret As Long) As Long
Declare Function OSLockObject Lib "NNotes.dll" Alias "OSLockObject" (Byval Handle) As String
Declare Sub OSUnlockObject Lib "NNotes.dll" Alias "OSUnlockObject" (Byval Handle)
Declare Sub OSMemFree Lib "NNotes.dll" Alias "OSMemFree" (Byval Handle)
Class remoteConsole
     Private IsError As Variant
     Private rc As Integer
     Private hBuffer As Long
     Private Server As String
     Private Command As String
     Private Result As String
     
     Sub New(inpServer As String)
           Dim server As New NotesSession
           If inpServer = "" Then
                 Me.IsError = True
           Else
                 Me.server=inpServer
                 Me.IsError = False
           End If
     End Sub
     
     Function Execute(inpCommand As String) As String
           If Me.Server = "" Then
                 Exit Function
           End If
           If inpCommand = "" Then
                 Me.execute="You must specify a command"
                 Me.iserror = True
                 Exit Function
           Else
                 Me.command = inpCommand
           End If
           
           Me.rc = NSFRemoteConsole(Me.server, Me.command, hBuffer)
           If Me.rc <> 0 Then
                 Me.iserror = True
                 Me.result= "ERROR"      
           Else
                 Me.result = OSLockObject(hBuffer)
                 Call OSUnlockObject(hBuffer)
                 Call OSMemFree(hBuffer)
                 Me.Iserror = False
           End If
           Me.execute = Me.result
     End Function
End Class

Sub Initialize
     On Error Resume Next
     Dim exec As String
     Dim dummy As Variant
     Dim remConsole As New RemoteConsole ( SERVER )
     dummy =  remConsole.Execute ( QUIT_SCHEDULER )
     dummy =  remConsole.Execute ( UNLOAD_CACHE )            
     Sleep ( 10 )
     Kill KILL_BUSYTIME_NSF
     dummy =  remConsole.Execute ( LOAD_SCHEDULER )
End Sub

Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline _Arne_

  • - Admin Section -
  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 992
  • Geschlecht: Männlich
  • Devops Because Even Developers Need Heroes
    • Das Lotus Notes Forum
Re: Probleme mit Notes C&S (busytime.nsf) lösen
« Antwort #1 am: 21.02.02 - 20:06:46 »
Gracias,

werd ich morgen mal testen!!

Gruß,
Arne  8)
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz