[ suadhm @ 08.12.2009. 14:22 ] @

Imam problem sa jednim izvjestajem.

Kada se izvjestaj pokrene sa jedne forme sve radi OK.
A ako se taj isti izvjestaj pokrene sa druge forme, iste aplikacije i sa istim parametrima, dobijam grešku:


REP-1247: There exist uncompiled program unit(s).
REP-1247: Report contains uncompiled PL/SQL.


Koristim Oracle 10g R2 AS (Forms&Reports service), OS je RHEL5.

Izveštaj se iz Reports Buildera kompajlira bez problema.
Takodje, to je novi izvještaj, nije migriran sa starije verzije.

Šta može biti uzrok za ovu grešku?
[ djoka_l @ 08.12.2009. 14:53 ] @
A ti nikada nemaš neki jednostavan problem?

1. Da li se obe forme nalaze u istom katalogu?
2. Da li u oba slučaja report poziva isti user?
3. Da li report koristi eksterne PL/SQL biblioteke?
4. Ako koristi eksterne biblioteke, da li postoji i PLL i PLX verzija biblioteke u istom katalogu?
5. Da li neka od formi ili report rade u debug modu?
[ suadhm @ 09.12.2009. 07:30 ] @

A šta ću, kad mi je takav horoskop

Ja sam DB administrator, i ovo je problem koji mi je prijavio programer. Ja nešto i nemam preteranog iskustva u radu sa report builder-om.

1. Forme se ne nalaze u istom katalogu.
2. Ne poziva isti user.
3. Koristi.
4. Postoji poseban katalog sa bibliotekama kojima sve forme i izvjestaji pristupaju.
5. Ne, da ja znam.

Čudno je i to što je i URL izveštaja identičan u oba slučaja. U prvom slučaju izvještaj radi u drugom ne.

Programer kaže da je izvještaj kompajlirao i kao jedan i kao drugi user na bazi.



[ djoka_l @ 09.12.2009. 08:10 ] @
OK,
prvo pitanje sam postavio da bih bio siguran da se u oba slučaja izvršava isti report i da je u istom okruženju (iste PL/SQL biblioteke).

Ovde je problem definitivno sa grantovima nad objektima u tabeli koje imaju user1 i user2. To što obojica mogu da kompajliraju report ne mora ništa da znači. Ako report koristi atačovane procedure i funkcije iz eksterne biblioteke (koja je kompajlirana, znači postoji PLX verzija), on neće prilikom generisanja izveštaja da parsira atačovane objekte.

Za debug mode sam pitao zato što sam imao slučaj da mi je jedna forma ispravno radila u debug modu, a nije radila u run-time. Ispostavilo se da sam imao noviju verziju PLLa od PLXa. U debug modu, da bi mogao da radi trace, uvek se koristi nekompajlirana verzija (PLL), a u run-time, forma ili report će koristiti PLX ako postoji, inče može da radi i sa PLL (sporije, zbog run-time parsiranja).

Probaj da identifikuješ biblioteke iz kojih se koriste procedure i funkcije i da ih kompajliraš kao user koji ne može da izvrši report.
[ suadhm @ 10.12.2009. 13:09 ] @

Problem je otklonjen.

Problem je bio što ovaj drugi korisnik nije imao pravo pristupa nekoj tabeli prvog korisnika.

Ipak hvala na pomoći.

Pozdrav.