10.05.2023 07:53

Co se děje ? Jak se pracuje v jazyce vzorců ? (2)
21.04.2023 14:15

Co se starou dokumentací k R3, R4, ...?
05.04.2023 14:41

Událost, při neexistenci přílohy. (2)
05.04.2023 11:51

Jak zjistit vložení přílohy. (4)
21.03.2023 11:14

Rámec nebo okno ? (10)
22.02.2023 10:14

Vylepseni designera 9.01 (3)
02.02.2023 20:27

Jak resit casove narocneho agent na frontendu (13)
25.01.2023 19:15

UNK tabuľka (UNique Key Table) je interná tabuľka v Notes databáze, v ktorej sú uvedené všetky jej polia (názvy). Problémom je však fakt, že jej implicitný limit je 64 kB. Pri jeho prekročení dochádza k mnohým až fatálnym problémom.
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í).
Autor: Miroslav Uhlár
Datum: 14.11.2002
Sdílet článek Seznam komentářů
Zatím nebyl přidán žádný komentář. Buďte první!
Související články: