Πώς μπορούμε να συνδέσουμε Oracle Database με SQL Server με χρήση Oracle Gateway σε Windows

Πώς μπορούμε να συνδέσουμε Oracle Database με SQL Server με χρήση Oracle Gateway σε Windows
Πώς μπορούμε να συνδέσουμε Oracle Database με SQL Server με χρήση Oracle Gateway σε Windows

Σε προηγούμενο άρθρο είχαμε δει πως μπορούμε να εκτελούμε queries σε απομακρυσμένο SQL Server από Oracle Database που βρίσκεται σε Linux μέσω Oracle Database Gateway. Σε αυτό το άρθρο θα δούμε πως γίνεται η εγκατάσταση του Oracle Gateway αντίστοιχα σε Windows.

Η εγκατάσταση του Oracle Gateway μπορεί να γίνει είτε σε κάποιον από τους database servers είτε σε κάποιο τρίτο μηχάνημα που θα λειτουργεί ως ενδιάμεσος. Στο συγκεκριμένο παράδειγμα θα τον προχωρίσουμε την εγκατάσταση στον Windows SQL Server.

Προαπαιτούμενα

Θα πρέπει να έχουμε κατεβάσει στον Windows Server το software του Oracle Gateway για Windows από το επίσημο link εδώ.

Τα βήματα

Στο SQL Server Instance

Για αρχή θα πρέπει στο SQL Server Instance να φτιάξουμε ένα login που θα έχει πρόσβαση read στη βάση δεδομένων που θέλουμε να διαβάσουμε από την Oracle Database. Στο παράδειγμά μας θα φτιάξουμε έναν χρήστη που ονομάζεται oraclepw και θα έχει πρόσβαση στη βάση mig_db:

USE [master]
GO
CREATE LOGIN [oraclegw] WITH PASSWORD=N'password', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO
USE [mig_db]
GO
CREATE USER [oraclegw] FOR LOGIN [oraclegw]
GO
USE [mig_db]
GO
ALTER ROLE [db_datareader] ADD MEMBER [oraclegw]
GO

Έπειτα πάμε στον Windows Server που θα γίνει η εγκατάσταση ο Oracle Gateway και δημιουργούμε μία ODBC σύνδεση προς τον Oracle Database Server. Για να γίνει αυτό ψάχνουμε από την έναρξη ODBC Data Sources (64-bit) και επιλέγουμε –> System DSN –> Add… .

Στην καρτέλα System DSN ορίζουμε ένα όνομα και τον server που θα συνδεθούμε. Στο παράδειγμα το Oracle Gateway θα γίνει εγκατάσταση στο ίδιο μηχάνημα που υπάρχει ο target SQL Server οπότε γράφουμε στον πεδίο Server, localhost:

Πώς μπορούμε να συνδέσουμε Oracle Database με SQL Server με χρήση Oracle Gateway σε Windows
01

Στη συνέχεια συμπληρώνουμε τα login credentials που φτιάξαμε στην αρχή για να συνδεόμαστε στον SQL Server:

Πώς μπορούμε να συνδέσουμε Oracle Database με SQL Server με χρήση Oracle Gateway σε Windows
02

Αφού ολοκληρώσουμε την δημιουργεία του ODBC, μπορούμε να ξεκινήσουμε στην εγκατάσταση του software. Κάτα την εγκατάσταση θα μας ζητήσει να ορίσουμε την τοποθεσία που θα γινει η εγκατάσταση και με ποια components, στα components επιλέγουμε Oracle Database Gateway for ODBC:

Πώς μπορούμε να συνδέσουμε Oracle Database με SQL Server με χρήση Oracle Gateway σε Windows
03

Κατά την ολοκλήρωση της εγκατάστασης θα μας ζητήσει να φτιάξουμε τον listener, εκεί θα ορίσουμε την πόρτα που θα γίνεται επικοινωνία μετάξυ Oracle Gateway και Oracle Database:

Πώς μπορούμε να συνδέσουμε Oracle Database με SQL Server με χρήση Oracle Gateway σε Windows
04

Αφού ολοκληρωθεί και η δημιουργία του listener θα πρέπει να πάμε στο path που κάναμε εγκατάσταση το Oracle Gateway και να δημιουργήσουμε ένα κενό αρχείο init που περιέχει το όνομα του ODBC που θα το καλούμε όπως το παρακάτω:

C:\app\tg\user\product\19.0.0\tghome_1\hs\admin\initMIG_DB.ora

Σε αυτό το αρχείο συμπληρώνουμε τα παρακάτω όπου HS_FDS_CONNECT_INFO ορίζουμε το όνομα του ODBC που φτιάξαμε και ως HS_LANGUAGE το encoding που έχει η destination Oracle Database:

# This is a customized agent init file that contains the HS parameters
# that are needed for the Database Gateway for Microsoft SQL Server

#
# HS init parameters
#
HS_FDS_CONNECT_INFO=MIG_DB
HS_FDS_TRACE_LEVEL=off
HS_NLS_NCHAR=UCS2
HS_LANGUAGE=AMERICAN_AMERICA.AL32UTF8
HS_FDS_FETCH_ROWS=1

Έπειτα πρέπει να τροποποιήσουμε τον listener.ora που βρίσκεται στο ανάλογο path που κάναμε την εγκατάσταση:

C:\app\tg\user\product\19.0.0\tghome_1\network\admin\listener.ora

Και να προσθέσουμε την παρακάτω εγραφή ορίζοντας ως SID_NAME το όνομα του ODBC που ορίσαμε να είναι ίδιο με το init του Gateway και ως ORACLE_HOME το αντίστοιχο path που έγινε η αρχική εγκατάσταση:

 SID_LIST_LISTENER=
   (SID_LIST=
      (SID_DESC= 
        (SID_NAME=MIG_DB)
         (ORACLE_HOME=C:\app\tg\user\product\19.0.0\tghome_1)
         (PROGRAM=dg4odbc)
      )
   )

Στο Oracle Database Linux Server

Στη συνέχεια στο Linux που βρίσκεται η Oracle Database πρέπει να προσθέσουμε στο tnsnames.ora εγγραφή που να κοιτάει τον Oracle Gateway που φτιάξαμε, ορίζοντας ως HOST το όνομα ή την IP του και ως CONNECT_DATA το όνομα του gateway που ορίσαμε στον listener:

vi $ORACLE_HOME/network/admin/tnsnames.ora

* Προσέχουμε ως host βάζουμε το όνομα / IP που είναι εγκαταστημένος ο Oracle Gateway.

MIG_DB =
  (DESCRIPTION=
    (ADDRESS=(PROTOCOL=tcp)(HOST=SMATZOURANISLP)(PORT=1521))
      (CONNECT_DATA=(SID=MIG_DB))
      (HS=OK)
    )

Τέλος φτιάχνουμε το Database Link, ορίζοντας ένα όνομα, το login του SQL Server, το password και τo όνομα της εγγραφής που προσθέσαμε στο tnsnames.ora:

sqlplus / as sysdba

CREATE DATABASE LINK SQLDBLINK CONNECT TO "oraclegw" IDENTIFIED BY "password" USING 'MIG_DB';

Η δοκιμή

Αφού φτιάξαμε το Database Link μπορούμε με query στην Oracle Database να καλούμε τους πίνακες της βάσης δεδομένων στον SQL Server όπως παρακάτω:

select * from dbo.customers@sqldblink;
Πώς μπορούμε να συνδέσουμε Oracle Database με SQL Server με χρήση Oracle Gateway σε Windows
05

Στην περίπτωση που μας εμφανίσει το παρακάτω σφάλμα:

ERROR at line 1:
ORA-02085: database link SQLDBLINK connects to HO.WORLD

Τότε πρέπει να απενεργοποιήσουμε τα global names με την παρακάτω εντολή:

alter system set global_names = false scope=both;

Στην περίπτωση που μας εμφανίσει το σφάλμα:

ERROR at line 1:
ORA-28545: error diagnosed by Net8 when connecting to an agent
Unable to retrieve text of NETWORK/NCR message 65535
ORA-02063: preceding 2 lines from <DBLINK>

Τότε προσθέτουμε την παρακάτω γραμμή στο SQLNET.ora file του Oracle Gateway:

C:\app\tg\user\product\19.0.0\tghome_1\network\admin\SQLNET.ora
SQLNET.NO_NTLM=FALSE

Πηγές:

Μοιράσου το

Αφήστε μία απάντηση