DB2 i FULL TEXT SEARCH

Szukajcie na znajdziecie powiada powiedzenie.
Wiec po nieudanej próbie włączenia full text search trzeba było znaleźć przyczyne błędu.

Okazało sie, że błąd SQL20427N (opis w pliku dokumentacji DB2MessageRefVol2-db2m2e970.pdf) posiada identyfikator błądu zaczynający się od liter ‘CIE’

Aby sprawdzić numer błądu należy z lini poleceń wykonać komende

db2ts help 00442N

Oto wynik:

CIE00442N Wlasciciel instancji nie ma uprawnien do wykonania komendy indeksu tekstowego dla bazy danych “%1″.Objasnienie:

Uzytkownik próbowal uruchomic komende dotyczaca indeksu tekstowego z ID wlasciela instancji,
do którego nie ma przypisanych odpowiednich uprawnien.
Aby uruchomia komendy dotyczace indeksu tekstowego, wymagane jest ID wlasciciela
 instancji z uprawnieniem DBADM i DATAACCESS.

Rózne komendy indeksu wyszukiwania tekstowego DB2 wymagaja róznych poziomów
uprawnien baz danych.  Liste wymaganych uprawnien dla komend indeksu wyszukiwania tekstowego
DB2 zawiera temat “Wymagania dotyczace uprawnien dla komendy indeksu wyszukiwania tekstowego DB2″
w Centrum informacyjnym DB2.

Reakcja uzytkownika:

Upewnij sie, ze wlasciciel instancji ma uprawnienia DBADM i DATAACCESS, aby uzytkownik mógl
wykonywac operacje na indeksie tekstowym.

A wiec w “Edytorze komend” wykonujemy:

CONNECT TO test;
GRANT DBADM, CREATETAB, BINDADD, CONNECT, CREATE_NOT_FENCED_ROUTINE,
IMPLICIT_SCHEMA, LOAD, CREATE_EXTERNAL_ROUTINE, QUIESCE_CONNECT, SECADM
ON DATABASE TO USER DB2ADMIN;
CONNECT RESET;

Komunikat pomocy sugeruje dodanie tylko uprawnien DBADM ale dla swietego spokoju (i poniewaz jest to baza testowa) dodalem wszystkie uprawnienia.

Teraz wystarczy uruchomic

db2ts "ENABLE DATABASE FOR TEXT"

a nastepnie uruchomic

db2ts start for text
CIE00001 Operacja zakonczona pomyslnie.

Utworzymy index

CALL SYSPROC.SYSTS_CREATE('ada4ko', 'idx_ts_wikitext', 'WIKIPEDIA (WIKI_TEXT)', '', 'pl_PL', ?)

i spróbujemy go wypełnić

set DB2DBDFT=WIKI
db2ts  "UPDATE  INDEX  idx_ts_wikitext  FOR  TEXT"

i pojawia się piękny błąd

SQL20427N  Podczas wykonywania procedury lub komendy administracyjnej wyszukiwan
ia tekstowego wystąpił błąd. Komunikat o błędzie to: "CIE00715 Wywołanie "db2DbD
irOpenScan()/db2DbDirGetNextEntry()/db2DbDirCloseScan()": kod_powrotu="0", SQLCO
DE="-5005". ". SQLSTATE=38H14

Szybki rzut oka na numer bledu

db2ts help 00715

i mamy komunikat

CIE00715 Wywołanie "%1": kod_powrotu="%2", SQLCODE="%3".

Objaśnienie:

Podczas wywoływania funkcji wewnętrznej wystąpił wewnętrzny błąd przetwarzania.

Reakcja użytkownika:

Jeśli błąd nie ustąpi, rozpocznij śledzenie i sprawdź dziennik db2diag.log.
Zgłoś błąd przedstawicielowi serwisu IBM.

Zapowiada się coraz ciekawiej.


Comments are closed.