ORA-02019: connection description for remote database not found
Wednesday, 27.02.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…