Apinizer Oracle Connection – TNS ve Time Zone Hatalarının Çözümü
Oracle bağlantısı kurarken bazı ortamlarda TNS çözümleme hatası, listener tanıma sorunu veya zaman dilimi (timezone) hatası alınabilir. Bu durum genellikle JDBC URL biçiminin Oracle sunucusunun gerçek bağlantı bilgileriyle uyumlu olmamasından kaynaklanır.
Bu sayfada, Apinizer üzerinde Oracle bağlantısını doğru şekilde tanımlamak için gerekli olan DESCRIPTION formatlı JDBC URL yapısı ve oracle.jdbc.timezoneAsRegion=false parametresi açıklanmıştır.
1. TNS / Oracle Connection Hatası
Oracle bağlantısı eklenirken aşağıdaki gibi bir TNS veya bağlantı hatası alınıyorsa:
ORA-12154: TNS:could not resolve the connect identifier specifiedORA-12514: TNS:listener does not currently know of service requested in connect descriptorORA-12541: TNS:no listener- Oracle bağlantısında
TNSveyaconnect descriptorile ilgili hatalar
JDBC URL'nin DESCRIPTION formatında tanımlanması önerilir.
Kullanılması gereken JDBC URL formatı
jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<DB_IP_VEYA_HOST>)(PORT=<PORT>))(CONNECT_DATA=(SERVICE_NAME=<SERVIS_ADI>)))
Parametrelerin açıklaması
| Parametre | Açıklama | Örnek |
|---|---|---|
HOST | Oracle DB sunucusunun IP adresi veya hostname'i | 192.168.1.10 |
PORT | Oracle Listener portu | 1521 |
SERVICE_NAME | Oracle servis adı | ORCL |
Örnek
Oracle veritabanının;
- Host:
192.168.1.10 - Port:
1521 - Service Name:
ORCL
olması durumunda:
jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.10)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL)))
Not:
SERVICE_NAMEileSIDaynı şey değildir. Oracle bağlantı bilgileriniz SID üzerinden veriliyorsa JDBC URL formatı buna göre düzenlenmelidir.
2. Time Zone Hatası
Oracle bağlantısı başarıyla kuruluyor ancak bağlantı sırasında Time Zone / timezone ile ilgili bir hata alınıyorsa JDBC URL'ye:
oracle.jdbc.timezoneAsRegion=false
parametresi eklenmelidir.
Kullanılması gereken JDBC URL formatı
jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<DB_IP_VEYA_HOST>)(PORT=<PORT>))(CONNECT_DATA=(SERVICE_NAME=<SERVIS_ADI>)))?oracle.jdbc.timezoneAsRegion=false
Örnek
jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.10)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL)))?oracle.jdbc.timezoneAsRegion=false
Bu parametre, Oracle JDBC Driver'ın Time Zone bilgisini region formatında değerlendirmesinden kaynaklanan bazı bağlantı problemlerinin giderilmesini sağlar.
3. Hangi Durumda Hangi JDBC URL Kullanılmalı?
| Durum | Kullanılacak JDBC URL |
|---|---|
| Standart Oracle bağlantısı | Oracle'ın standart JDBC URL formatı |
| TNS / connect descriptor hatası | DESCRIPTION formatındaki JDBC URL |
| Time Zone hatası | DESCRIPTION formatındaki URL + oracle.jdbc.timezoneAsRegion=false |
| Hem TNS hem Time Zone problemi | DESCRIPTION formatındaki URL + oracle.jdbc.timezoneAsRegion=false |
TNS hatası için
jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<DB_IP_VEYA_HOST>)(PORT=<PORT>))(CONNECT_DATA=(SERVICE_NAME=<SERVIS_ADI>)))
Time Zone hatası için
jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<DB_IP_VEYA_HOST>)(PORT=<PORT>))(CONNECT_DATA=(SERVICE_NAME=<SERVIS_ADI>)))?oracle.jdbc.timezoneAsRegion=false
4. Dikkat Edilmesi Gerekenler
JDBC URL oluşturulurken aşağıdaki bilgilerin Oracle yöneticisinden veya mevcut Oracle bağlantı yapılandırmasından doğrulanması gerekir:
- HOST – Oracle DB sunucusunun IP adresi veya hostname'i
- PORT – Oracle Listener portu
- SERVICE_NAME – Oracle servis adı
- Oracle Listener'ın ilgili port üzerinden erişilebilir olması
- Apinizer'ın çalıştığı sunucu/pod üzerinden Oracle DB'ye ağ erişiminin bulunması