[ Petar_Veliki @ 09.11.2005. 13:24 ] @
Pozdrav svima
Problem: na dve identicne DB (Oracle 9i2) se izvodi jedan prilicno komplikovan select napisan pomocu OWB-a (OWB 9,2). U stvari je komplet Package napisan u OWB pa ja onda samo kopiram select statement u TOAD i izvedem ga na obe DB. Jedna DB je Clone od druge, tako da su svi podatci isti INIT.ORA takodje.
Rezultat na 1 DB traje 33 sec a na drugoj preko 9000 sec (nije greska devet hiljada). Donose naravno isti broj datarows na kraju.
Explain Plan je potpuno razlicit i sto je najbolje ovaj koji traje duze ima manje Table Acess Full (ali zato vise nested loop)
Postoji li mogucnost da uticem na Optimiser kroz OWB (na zalost kao programer nemam admin role ) ili nekako drugacije?
[ Dejan Topalovic @ 09.11.2005. 13:42 ] @
Cini mi se da u drugoj bazi nisi dobro postavio indexe...
[ Damjan S. Vujnovic @ 09.11.2005. 13:48 ] @
Ili mozda statistika nije up2date...

DSV
[ Petar_Veliki @ 09.11.2005. 14:40 ] @
Baza je klonirana samim tim su tabele indexi , trigeri i sve ostale stvari iste.
OWB izvodi statistiku sam svaki put kada startuje proces.
To na zalost nije resenje

[Ovu poruku je menjao Petar_Veliki dana 09.11.2005. u 15:40 GMT+1]
[ Raspucin @ 09.11.2005. 15:59 ] @
Prvo, ne mozes tek tako da poredis statistike upite (mozda zvuci ludo ali je tako) iz vrlo prostog razloga. Kada gledas statistiku koju ti Oracle da na neki nacin, tada se u obzir uzimaju svi detalji na tom sistemu u tom trenutku, vec posle nekog vremena to nece da bude isto a razloga je vise (broj korisnika se promenio, pokrenula se jos neka aplikacija na serveru, neki korisnik ubacuje mnogo podataka u bazu i sl.).
Ovde mozes da pogledas podesavanja na serveru da li su ista, na performanse utice i hardver (ali ovde sada ne verujem da je to u pitanju).

Ne znam sta radis i kakva je statistika koji ti daje Warehouse Builder, ali ono sto mozes da proveris je da upotrebis CBO iz obicnog SQL-a i da vidis sta ce da ti vrati kao rezultat. Inace ti u svakom SQL-u koji izvrsavas mozes da uputis Oracle sta ce od indeksa da koristi i kako ce da izvede upit (to se obicno upotrebljava za testiranje i tuning), mada Oracle uvek bira najoptimalnije trenutno resenje. To mozes da nadjes u dokumentaciji ovde:

http://download-uk.oracle.com/...2/b14211/hintsref.htm#CHDJDIAH

mada mozes da pogledas i ovo:

http://download-uk.oracle.com/...b14211/optimops.htm#sthref1298

pa sam pogledaj koji se indeksi koriste i koji je Access Path za izvrsenje upita. Ako mozes postuj upit i statistike koje imas (nemoj da posaljes samo brojeve, nego izlaz za tkprof-a, EXPLAIN_PLAN-a...).

Pozdrav
[ Petar_Veliki @ 11.11.2005. 14:51 ] @
Izveo sam ANALYZE_TABLE na obe DB na svim tabelama koje su ukljucene u proces. tj select (OWB radi proces cita iz tabela i pise u neke druge)
Time su se rezultati za isti select priblizili , prva je ostala na 33 sec a druga je dosla na nekih 60 sec sto je prilicno zadovoljavajuce ( ma u stvari super sa prethodnih 9000 sec) sto opet upucuje da OWB ne izvrsava one zadatke koje bi trebalo ( morao bi sam da pravi analyze_table kod starta procesa svaki put) jer mu je tako postavljeno u default. Moracu da proverim zasto, al puno bitije je da sad mogu konacno da koristim Db koja mi je za programiranje namenjena.
Havala na pomoci i trudu.
pozdrav iz Minhena
[ Raspucin @ 12.11.2005. 09:27 ] @
Nema problema ;)