ORA-02019: connection description for remote database not found

Wednesday, 27.02.2008 – Dejan

Aaaaaargh… $§&%/*#

Koliko jedna “sitnica” može koštati vremena i živaca…

Kolega je instalirao jednu Oracle bazu za testiranje, u koju smo kasnije importovali našu production bazu. Međutim, ne lezi vraže… Nakon nekoliko sati rada, određene aplikacije su počele da javljaju grešku, a pojedini PL/SQL paketi se nisu mogli kompilirati.

Problem je pojavio prilikom korištenja objekata (tabele i views) iz druge baze preko database linka. Ukoliko u svom kôdu imate nešto slično kao npr.:

SELECT id, value
INTO lvID, lvValue
FROM remote_table@mssqlDB;

onda taj upit može javiti grešku:
ORA-00942 Table or View does not exist

ali pravi uzrok greške leži u nedostupnosti database linka, odnosno u grešci:
ORA-02019: connection description for remote database not found

E sad je trebalo pronaći uzrok te greške – kolega je odustao nakon nekoliko sati, pa sam ja preuzeo i takođe izgubio skoro 3 sata dok nisam pronašao u čemu je bio problem.

Provjerio sam 10-ak puta tnsnames.ora, dotične PL/SQL pakete nekoliko puta liniju po liniju, ali bez uspjeha…
Googleao sam, tražio na MetaLinku, ali bez uspjeha…
Rješenje sam otkrio sasvim slučajno – usporedio sam init-parametre u toj novoj testnoj bazi i u production bazi, pa mi je za oko zapao parametar “open_links“. U testnoj bazi je vrijednost iznosila 4, a u production bazi 8.

U dokumentaciji piše:
OPEN_LINKS specifies the maximum number of concurrent open connections to remote databases in one session.”

Standardno je vrijednost podešena na 4, a mi smo u nekoliko PL/SQL paketa koristili i po 7-8 database linkova, pa sam ja samo povećao tu vrijednost na 8, restartovao bazu i sve je funkcionisalo kako treba.

alter system set open_links=8 scope=spfile sid='*';

Nadam se da će ovo nekom pomoći i uštediti vrijeme i živce…

Post a Comment