DISKUSE
Agent log 
20.07.2020 07:18

Traveler se nepřipojí (2)
25.06.2020 08:20

Výběr lidí z AK tiskne jen 3 (2)
22.05.2020 07:41

Sametime 8.0.2 
20.05.2020 15:22

Access to data denied (4)
20.04.2020 15:49

IBM zastavilo provoz knowledge center 
27.03.2020 12:55

Zjištění frontendu/backendu agenta v LotusScriptu (1)
17.03.2020 20:51

export ACL do csv (1)
20.02.2020 09:54


ŠKOLENÍ


REKLAMA


KOMENTÁŘE

UNK table - po prvé.

Vytisknout článek

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:
» 

UNK table - po tretie a naposledy...

 (Tipy a triky, 21.11.2002)

» 

UNK table - po druhé.

 (Tipy a triky, 19.11.2002)

» 

Lotus vsadil na Wiki

 (Odkazy, 13.01.2010)

» 

Programujeme servlety 2

 (Programování, 26.02.2004)

» 

Programujeme servlety 1

 (Programování, 25.11.2003)

» 

Počet webů na Dominu roste

 (Události, 16.10.2003)

» 

Kalendár českých a slovenských mien

 (Kalendář, 20.08.2003)