světNotes.cz

UNK table - po prvé.
Novinky
14.11.2002 - Miroslav Uhlár

Najčastejšie problém indikuje chybová správa "Database has too many unique field names", no nepriamo môže spôsobiť pád súvisiacich úloh (full-text, replikácia, SMTP routing). Jednoducho vie narobiť dosť škody. Správca Domino databáz by mal byť preto pripravený na zodpovedanie troch základných otázok:

A. Ako zistím veľkosť UNK table v databáze?
B. Ako viem znížiť jej veľkosť?
C. Ako viem zvýšiť limit UNK table?

V tomto tipe preberiem prvú otázku, zvyšné budú nasledovať v samostatných dokumentoch. Ako teda zistím veľkosť UNK table?
Bohužiaľ, k tejto informácii sa nedostanete žiadnym štandardným spôsobom. Márne budete túto informáciu hľadať vo vlastnostiach databázy klienta Notes alebo Domino Administrator. Podľa akútnosti problému odporúčam tri spôsoby:

1/ Použite tento jednoduchý script , ktorý ráta počet všetkých polí v aktuálnej databáze na základe obsahu formulárov. Musím však upozorniť, že táto informácia nemusí byť presná, pretože do UNK sa zapíšu i polia, ktoré v istej fáze života aplikácie zmizli z formulárov.

Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Set db=session.CurrentDatabase
Dim coll As NotesDocumentCollection
Set coll= db.UnprocessedDocuments
Set db = session.CurrentDatabase

Dim count As Double
count= 0

Print "Začínam rátať polia v databáze "+db.Title
Forall form In db.Forms

Print "Spracovávam formulár: " form.Name
If Not(Isempty(form.Fields)) Then
Forall field In form.Fields
pocet = pocet + 1
End Forall
End If
End Forall

Print "Počet polí v databáze "+db.Title+" : "+Cstr(pocet)
Messagebox "Počet polí v databáze "+db.Title+" : "+Cstr(pocet)+Chr$(10)+Chr$(10)+ "3000 je limit, kedy by ste už nemali pokojne spávať ...",0,"Podklady pre UNK analýzu"

End Sub

2/ Použite analytickú utilitku NotesPeek, ktorá v časti Item Def Table obsahuje informáciu o počte UNK záznamov.
NotesPeek je možné stiahnuť na adrese ftp://ftp.software.ibm.com/software/lotus/tools/notes/NotesPeek_151.zip

3/ Použite utilitku ItemDef, ktorú uvoľnil IBM support a ktorá informuje presne o veľkosti UNK tabuľky i počte záznamov.
Spúšťa sa z príkazového riadku v tvare: itemdef servername!!path (napríklad POLUX!!names.nsf)
Utilitka je dostupná na vyžiadanie z IBM supportu - zrejme preto, že pri nesprávnom použití dokáže poškodiť databázu. S uvedeným varovaním vám ju viem na požiadanie poskytnúť.

Nakoniec ešte jedna "pikoška" z nedávnej histórie:
Problém s UNK limitom sa "globálne" prejavil pri migrácii R4 prostredia na R5 v samotnej IBM, pretože vtedy nová R5 adresná kniha obsahovala oveľa viac polí ako jej R4 verzia. Za určitých okolností (podrobnejšie popísané v nasledovnom tipe) došlo k prekročeniu limitu a zrúteniu systému. Aj preto bolo potrebné znížiť počet polí na rozumnejšiu úroveň (vo verzii 5.0.10 je to okolo 1550 polí).