ORA-02019: connection description for remote database not found
February 27, 2008 – DejanAaaaaargh… $§&%/*#
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…