Oracle TNS adlarını 32 ve 64 bit sürücüler için ayarlamak

Genellikle SSIS paketleri hazırlarken operasyonel sistemlerden veri çekmemiz gerekir. Özellikle banka ve telekom sektöründe operasyonel sistemler büyük ihtimalle Oracle tabanlıdır. Oracle veritabanından veri çekmek, SSIS için diğer veritabanlarından farklı değil fakat SSIS makinamızda Oracle’a veritabanlarına bağlantılarda karşılaştığımız birkaç sorun olabiliyor.

İlk yapmamız gereken, Oracle’dan veri çeken SSIS paketimizi çalıştıracağımız makinada hem 32 hem de 64 bit provider’ların yüklü olduğuna emin olmalıyız. Eğer Oracle provider’ları hiç yüklemediyseniz ilk olarak Oracle Instant Client for Windows sürücüsünü yüklemelisiniz. Bu link’den Instant Client’ın hem 32 hemde 64 bit versiyonlarını indirip yükleyebilirsiniz.

Bildiğiniz gibi BIDS veya SQL Server Data Tools geliştirme ortamlarında çalıştırdığınız SSIS paketleriniz her zaman 32 bit çalışacaktır bu sebeple de 32 bit provider kullanacaktır. Ancak dtexec veya SQL Agent Job ile çalıştırdığınız paketler 64 bit provider kullanırlar. Eğer SSIS paketiniz 4 GB üzeri RAM kullanması gerekiyorsa ve siz paketinizi geliştirme ortamında çalıştırdıysanız, paketiniz RAM yetersizliğinden hata verecektir.

Genel karşılaşılan sorun BIDS veya Data Tools ortamında sorunsuz bir şekilde çalışan SSIS paketleri, SQL Agent Job veya dtexec.exe kullanılarak çalıştırılmaya çalışıldığında “ORA 12541 – TNS: no listener” hatası alır. Bu hatanın sebebi , SQL Agent Job veya dtexec.exe SSIS paketini 64 bit modda çalıştırmaya çalışmasıdır. Bundan dolayı SSIS paketi kullandığı 64bit Oracle provider’ın Oracle yükleme klasörü altında olan  tnsnames.ora dosyasındaki TNS isimlerini bulamamalarıdır.

TNS (Transparent Network Subtrate) kısacası aynı DNS gibi herhangi bir IP adresine veya server name’ine bir isim atamamızı ve bu ismi SSIS connection string’lerde kullanmamıza sağlar. tnsnames.ora aynı HOST dosyası gibi çalışır diyebiliriz. Fakat bazı durumlarda bu tnsnames.ora dosyasını 32 bit Instant Client görürken, 64 bit Instant Client göremiyor ve SSIS paketimiz “ORA 12541 – TNS: no listener” hatası geri dönüyor.

tnsnames.ora dosyası her bilgisayarda bir tane bulunur, sisteme kaç tane Instant Client yüklemeniz önemli değildir. tnsnames.ora dosyasını Windows’da $ORACLE_HOME/network/admin lokasyonunda bulabilirsiniz. Windows’da TNSADMIN değişkeni tnsnames.ora dosyasının yerini gösterir. Windows’da yüklü olan bütün Instant Client’lar TNSADMIN değişkenini arar ve bu değişken üzerinden tnsnames.ora dosyasına ulaşıp connection string’de belirtilmiş olan TNS adını çözümlemeye çalışır.

TNSADMIN değişkenini bütün Instant Client’lara bağlamanın benim bulduğum en kolay yolu TNSADMIN değişkenini Global Variable olarak Windows’a tanımlamak. Böylece nereden aratılırsa aratılsın TNSADMIN bulunabilinecektir ve hem 32 bit hemde 64 bit Instant Client tnsnames.ora’yı rahatlıkla bulabilecektir.

Bir kaç adımda bunu nasıl yapacağımızı görelim;

  1. Administrator olarak Windows’a girdikten sonra Control Panel’e girin,
  2. SYSTEM’e iki kere tıklayarak System Properties’i açın ve açılan pencereden Enviroment tabına basın.
  3. Enviroment tabında Windows bazında tanımlanmış olan bütün değişkenleri görebiliriz, eğer Administator olarak login olduysanız bu değişkenleri değiştirebilirsiniz.
  4. List of Variable listesinde OS değişkenini bulun, değişkenin Variable kısmında “OS” yerine “TNS_ADMIN”, Value kısmında “Windows_NT” yerine tnsnames.ora’nın bulunduğu yeri yazıcaksınız. Örnek user1/oracle/product/network/admin.
  5. Apply yapın ve pencereyi kapatın.
  6. Bilgisayarı restart edin ve SSIS paketinizi çalıştırmayı tekrar deneyin.

Daha fazla bilgi için bu sorunu ve yazıyı yazarken kullandığım sayfa’dan yararlanabilirsiniz. Bu yazı içersinde konu hakkında daha detaylı bilgi ve farklı çözümlerde bulunuyor.

Ayrıca sisteme yüklenmiş olan Oracle Instant Client’ınızın 32 mi 64 bit mi olduğunu bulmanız için işinize yarayacağını düşündüğüm başka bir sayfa ise http://www.dba-oracle.com/t_client_32_bit_or_64_bit.htm

Ek olarak benim Oracle bağlantılarında kullandığım Attunity komponentler için hazırlanmış ve içersinde Oracle Instant client kurulumu ve gereksinimlerinide içeren güzel bir makaleyi sizinle paylaşmak istiyorum. http://technet.microsoft.com/en-us/library/ee470675(v=sql.100).aspx

Reklamlar

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s