Oracle Database Link (DB Link), Oracle veritabanları arasında veri alışverişi yapmak için kullanılan güçlü bir özelliktir. Ancak Oracle Database Link özelliği, Oracle dışındaki veritabanlarına (örneğin Microsoft SQL Server) doğrudan bağlantı sağlayamaz.
Bu noktada Oracle’ın Heterogeneous Services (HS) altyapısı ve Oracle Database Gateway for SQL Server (DG4MSQL) bileşeni devreye girer. Oracle Database Gateway, Oracle ile SQL Server arasında bir ara katman görevi görerek SQL Server üzerindeki tabloların Oracle tarafında standart bir Database Link üzerinden sorgulanabilmesini sağlar.
Bu makalede Oracle Database 19c ile Microsoft SQL Server arasında Oracle Database Gateway for SQL Server 19ckullanılarak güvenli ve kararlı bir bağlantının nasıl kurulacağı adım adım incelenecektir.
Kurulum tamamlandığında SQL Server tablolarına Oracle Database üzerinden aşağıdaki gibi erişilebilir:
SELECT *
FROM dbo.Employee@MSSQL_LINK;
Mimari
Oracle Database
│
Database Link
│
▼
Oracle Net Listener
│
▼
Oracle Database Gateway (DG4MSQL)
│
▼
Microsoft ODBC Driver
│
▼
Microsoft SQL Server
Bu mimaride Oracle Database, Microsoft SQL Server ile doğrudan iletişim kurmaz.
Bağlantı akışı aşağıdaki bileşenler üzerinden gerçekleşir:
- Oracle Database Link
- Oracle Net Listener
- Oracle Database Gateway for SQL Server
- Microsoft ODBC Driver
- Microsoft SQL Server
Gateway, Oracle SQL ifadelerini SQL Server’ın anlayabileceği formata dönüştürür ve SQL Server tarafından döndürülen sonuçları Oracle Database’in işleyebileceği yapıya çevirir.
Oracle Database Gateway kurulumu, mevcut Oracle Database Home üzerine değil, ayrı bir Oracle Home dizinine gerçekleştirilir.
1. Gerekli Kurulum Dosyalarının İndirilmesi
Kuruluma başlamadan önce aşağıdaki yazılımların hazır olması gerekmektedir.
| Yazılım | Açıklama | İndirme |
|---|---|---|
| Oracle Database Gateway 19c | Oracle ile SQL Server arasında bağlantıyı sağlar. | Oracle Software Delivery Cloud |
| Microsoft ODBC Driver 18 for SQL Server | Gateway’in SQL Server’a bağlanmasını sağlayan ODBC sürücüsüdür. | Microsoft ODBC Driver for SQL Server |
| unixODBC | Linux üzerinde ODBC sürücülerini yöneten bileşendir. | unixODBC Resmi Sitesi |
Bu makaledeki kurulum Oracle Linux / RHEL tabanlı bir Linux sunucu üzerinde gerçekleştirilmiştir.
Kurulum sırasında kullanılan bileşenler:
- Oracle Database Gateway 19c
- Microsoft ODBC Driver 18 for SQL Server
- unixODBC
Not: Oracle Database Gateway yazılımı, Oracle Database kurulum medyası içerisinde bulunmaz. Oracle lisansına sahip kullanıcılar, Gateway kurulum paketini Oracle Software Delivery Cloud veya My Oracle Support üzerinden indirebilir.
Gateway kurulumu mevcut Oracle Database Home üzerine yapılmamalıdır. Kurulum için ayrı bir Oracle Home dizini kullanılmalıdır.
2. Microsoft ODBC Driver Kurulumu
Oracle Database Gateway for SQL Server (DG4MSQL), Microsoft SQL Server ile doğrudan iletişim kurmaz. SQL Server bağlantısı için işletim sistemi üzerinde Microsoft ODBC Driver kullanır.
Bu nedenle Oracle Database Gateway kurulumu öncesinde Microsoft ODBC Driver’ın Oracle Gateway sunucusuna kurulması gerekmektedir.
Bu örnek kurulum Oracle Linux 7.9 / RHEL 7.9 işletim sistemi üzerinde gerçekleştirilmiştir.
2.1. Microsoft Repository’yi Ekleyin
sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
sudo curl -o /etc/yum.repos.d/mssql-release.repo \
https://packages.microsoft.com/config/rhel/7/prod.repo
2.2. ODBC Driver’ı Kurun
sudo ACCEPT_EULA=Y yum install -y msodbcsql18
RHEL 7 veya Oracle Linux 7 kullanıyorsanız dnf yerine yum komutunu kullanabilirsiniz.
2.3. Kurulumu Doğrulayın
odbcinst -q -d
Örnek çıktı:
[ODBC Driver 18 for SQL Server]
Bu çıktıyı alıyorsanız Microsoft ODBC Driver başarıyla kurulmuştur.
Driver kütüphane dosyasını doğrulamak için:
find /opt/microsoft -name "libmsodbcsql*.so"
3. unixODBC Kurulumu
unixODBC, Linux işletim sistemlerinde ODBC sürücülerini yöneten ve uygulamaların ODBC tabanlı bağlantılar kurmasını sağlayan katmandır.
Oracle Database Gateway for SQL Server (DG4MSQL), Microsoft ODBC Driver üzerinden SQL Server’a bağlanırken unixODBC altyapısını kullanır.
Bu nedenle Microsoft ODBC Driver kurulumundan sonra unixODBC paketlerinin kurulması gerekmektedir.
3.1. unixODBC Paketlerini Kurun
sudo yum install -y unixODBC unixODBC-devel
Oracle Linux 7 veya RHEL 7 kullanıyorsanız
dnfyerineyumkullanabilirsiniz.
3.2. Kurulumu Doğrulayın
Aşağıdaki komut ile kurulumun başarılı olduğunu doğrulayın.
odbcinst -j
Örnek çıktı:
unixODBC 2.3.7
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /home/oracle/.odbc.ini
Bu çıktı, unixODBC‘nin doğru şekilde kurulduğunu ve yapılandırma dosyalarının kullanılacağı yolları gösterir.
4. Oracle Database Gateway 19c Kurulumu (OUI)
Oracle Database Gateway for Microsoft SQL Server kurulumu, Oracle Universal Installer (OUI) kullanılarak gerçekleştirilir.
Gateway kurulumu mevcut Oracle Database Home üzerine yapılmamalıdır. Oracle Database ve Gateway için ayrı Oracle Home dizinleri kullanılmalıdır.
Örnek dizin yapısı:
Oracle Database Home: /u01/app/oracle/product/19.0.0/dbhome_1
Oracle Database Gateway Home: /u01/app/oracle/product/gateway
Oracle Database Gateway, SQL Server bağlantısı için kullanılan ayrı bir Oracle yazılım bileşenidir ve herhangi bir database instance oluşturmaz.
4.1. Gateway Kurulum Medyasının Hazırlanması
Oracle Database Gateway 19c kurulum dosyaları Oracle Software Delivery Cloud veya My Oracle Support üzerinden indirilir.
Kurulum dosyası Linux sunucu üzerinde uygun bir dizine aktarılır.
Örnek:
cd /stage
unzip LINUX.X64_193000_gateways.zip
cd gateways
./runInstaller
Kurulum adımları:
- Specify Installation Location
- Oracle Base: /u01/app/oracle
- Software location: /u01/app/oracle/product/gateway
- Available Product Components
- Component Name: Oracle Database Gateway for Microsoft SQL Server
- Oracle Database Gateway For Microsoft SQL Server
- Hostname: <sql_server_host_ip>
- Port: 1433 (default)
- Server Name: <sql_server_name>
- Database Name: <db_name>
4.2. Gateway Kurulum Kontrolü
Kurulum sonrası Gateway Oracle Home kontrol edilir:
ls -ltr /u01/app/oracle/product/gateway
Beklenen dizin yapısı:
bin
network
lib
dg4msql
...
5. Oracle Database Gateway Konfigürasyonu
Oracle Database Gateway kurulumu tamamlandıktan sonra Gateway’in Microsoft SQL Server ile iletişim kurabilmesi için initialization dosyasının yapılandırılması gerekir.
Gateway bağlantı ayarları aşağıdaki dosyada bulunur:
/u01/app/oracle/product/gateway/dg4msql/admin/initdg4msql.ora
5.1. ODBC Driver Bilgilerinin Kontrol Edilmesi
Gateway’in kullanacağı ODBC driver bilgileri kontrol edilir.
Öncelikle unixODBC yapılandırma yolları görüntülenir:
odbcinst -j
Örnek çıktı:
unixODBC 2.3.1
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
...
ODBC driver tanımı kontrol edilir:
cat /etc/odbcinst.ini
Örnek çıktı:
[ODBC Driver 18 for SQL Server]
Description=Microsoft ODBC Driver 18 for SQL Server Driver=/opt/microsoft/msodbcsql18/lib64/libmsodbcsql-18.so UsageCount=1
Buradaki Driver parametresinde belirtilen yol, Gateway yapılandırmasında kullanılacaktır.
5.2. Gateway Initialization Dosyasının Düzenlenmesi
Gateway bağlantı ayarları için dosya açılır:
vi /u01/app/oracle/product/gateway/dg4msql/admin/initdg4msql.ora
Aşağıdaki parametreler eklenir:
HS_FDS_CONNECT_INFO="100.100.100.101:1433//ERPDB"
HS_FDS_SHAREABLE_NAME=/opt/microsoft/msodbcsql18/lib64/libmsodbcsql-18.so
HS_FDS_TRACE_LEVEL=OFF
HS_LANGUAGE=AMERICAN_AMERICA.AL32UTF8
HS_NLS_NCHAR=UCS2
Note: /etc/odbcinst.ini dosyasındaki Driver parametresini burada HS_FDS_SHAREABLE_NAME parametresine yazılması gerekir.
| Parametre | Açıklama |
|---|---|
HS_FDS_CONNECT_INFO | /etc/odbc.ini dosyasında tanımlanan DSN adıdır. |
HS_FDS_TRACE_LEVEL | Gateway log seviyesini belirler. Normal kullanımda OFF önerilir. |
HS_LANGUAGE | Oracle karakter setini belirtir. |
HS_NLS_NCHAR | Unicode karakter desteğini sağlar. |
6. Oracle Listener Yapılandırması
Oracle Database Gateway servisinin Oracle Listener tarafından karşılanabilmesi için Gateway SID tanımının Listener yapılandırmasına eklenmesi gerekir.
Bu işlem ile Oracle Database, Gateway servisine Oracle Net üzerinden ulaşabilir.
6.1. listener.ora Dosyasının Düzenlenmesi
Aşağıdaki dosyayı açın:
vi $ORACLE_HOME/network/admin/listener.ora
Mevcut SID_LIST_LISTENER içerisine Gateway için yeni bir SID_DESC eklenir.
Örnek:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SDU=32767)
(SID_NAME = EXA01)
(ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
(PROGRAM = EXA01)
)
(SID_DESC =
(SID_NAME = dg4msql)
(ORACLE_HOME = /u01/app/oracle/product/gateway)
(PROGRAM = dg4msql)
)
)
6.2. Listener’ı Yeniden Başlatın
Yapılan değişikliklerin aktif olması için Listener yeniden başlatılır:
lsnrctl stop
lsnrctl start
6.3. Listener Durumunu Kontrol Edin
Gateway servisinin Listener tarafından görüldüğü kontrol edilir:
lsnrctl status
Başarılı bir yapılandırmada aşağıdaki benzer çıktı görülür:
Service "dg4msql" has 1 instance(s).
Instance "dg4msql", status UNKNOWN, has 1 handler(s) for this service...
Not:
Oracle Database Gateway servislerinde status UNKNOWN görülmesi normaldir.
Gateway servisleri klasik Oracle database instance olmadığı için Listener tarafından otomatik instance durumu kontrol edilemez. Bu nedenle UNKNOWN hata anlamına gelmez.
Bu aşamadan sonra Oracle Database’in Gateway servisine ulaşabilmesi için TNS yapılandırması yapılacaktır.
7. TNS Yapılandırması
Oracle Database’in Gateway servisine bağlanabilmesi için tnsnames.ora dosyasına yeni bir servis tanımlayın.
7.1. tnsnames.ora Dosyasını Düzenleyin
vi $ORACLE_HOME/network/admin/tnsnames.ora
Aşağıdaki kaydı ekleyin:
DG4MSQL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SID = dg4msql)
)
(HS = OK)
)
Not: Gateway farklı bir sunucuda çalışıyorsa
HOSTdeğerini o sunucunun IP adresi veya hostname’i ile değiştirin.
7.2. TNS Kaydını Test Edin
Aşağıdaki komut ile TNS kaydının doğru tanımlandığını doğrulayın.
tnsping MSSQL
Örnek çıktı:
OK (20 msec)
Bu çıktıyı alıyorsanız Oracle Database, Gateway servisine başarıyla ulaşabiliyor demektir.
8. Database Link Oluşturma
Aşağıdaki komut ile SQL Server’a bağlanacak Database Link’i oluşturun.
CREATE DATABASE LINK MSSQL_LINK
CONNECT TO "sql_user"
IDENTIFIED BY "password"
USING 'DG4MSQL';
Not:
sql_uservepasswordbilgilerini SQL Server’da oluşturduğunuz kullanıcı bilgileri ile değiştirin.
8.1. Database Link’i Test Edin
Öncelikle bağlantının çalıştığını doğrulamak için basit bir sorgu çalıştırın.
SELECT 1
FROM dual@MSSQL_LINK;
Ardından SQL Server üzerindeki bir tabloyu sorgulayabilirsiniz.
SELECT *
FROM dbo.Employee@MSSQL_LINK;
Not: Oracle, SQL Server nesnelerine erişirken tablo ve şema adlarında büyük/küçük harf duyarlılığı ile ilgili davranışlar gösterebilir. Gerekirse nesne adlarını çift tırnak (
" ") içerisinde kullanabilirsiniz.
8.2. Bağlantıyı Kontrol Etme
Oluşturulan Database Link’i aşağıdaki sorgu ile görüntüleyebilirsiniz.
SELECT db_link, username, host
FROM user_db_links;
| DB_LINK | USERNAME | HOST |
|---|---|---|
| MSSQL_LINK | sql_user | MSSQL |
Bu adımla Oracle Database ve SQL Server arasındaki bağlantı tamamlanmış olur.







Bir yanıt yazın