Oracle Database Gateway for SQL Server 19c Kurulumu (Adım Adım Rehber)

YUNUS EMRE ATAY

gateway

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ımAçıklamaİndirme
Oracle Database Gateway 19cOracle ile SQL Server arasında bağlantıyı sağlar.Oracle Software Delivery Cloud
Microsoft ODBC Driver 18 for SQL ServerGateway’in SQL Server’a bağlanmasını sağlayan ODBC sürücüsüdür.Microsoft ODBC Driver for SQL Server
unixODBCLinux ü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 dnf yerine yum kullanabilirsiniz.

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.

ParametreAçıklama
HS_FDS_CONNECT_INFO/etc/odbc.ini dosyasında tanımlanan DSN adıdır.
HS_FDS_TRACE_LEVELGateway log seviyesini belirler. Normal kullanımda OFF önerilir.
HS_LANGUAGEOracle karakter setini belirtir.
HS_NLS_NCHARUnicode 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 HOST değ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_user ve password bilgilerini 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_LINKUSERNAMEHOST
MSSQL_LINKsql_userMSSQL

Bu adımla Oracle Database ve SQL Server arasındaki bağlantı tamamlanmış olur.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Hey!

Merhaba! Ben EMRE, teknoloji, yazılım veri tabanı ve veri analitiği alanlarına tutkuluyum. Bu blogda, öğrendiklerimi ve tecrübelerimi paylaşarak faydalı içerikler sunmayı hedefliyorum. Boş zamanlarımda yeni teknolojiler keşfetmeyi, yazmayı ve kendimi geliştirmeyi seviyorum.

ıletısım adreslerım