Steps-by-step: Connecting to Microsoft SQL Server database from Oracle using Database Gateway for SQL Server

Starting with 11g Oracle now provides a Database Gateway for MS SQL Server and various other databases.

The gateway is certified with Oracle database release 10.1.0.5, 10.2.0.3 after applying the gateway compatibility patch bug or you can directly use it with Oracle RDBMS 10.2.0.4, 10.2.0.5, 11.1 and 11.2

 

Following steps are involved. Please note that this steps are shown for Linux/Unix platform but for Windows also similar steps are to be followed.

  1. Download Oracle Database Gateways CD if you have not already installed it
  2. Install Oracle Database Gateway for Microsoft SQL Server
  3. Configure Database Gateway for Microsoft SQL Server (DG4MSQL)

 

Download the software

Download Oracle Database Gateways from Oracle eDelivery site.

dg4msql-1

 

Install Oracle Database Gateway for Microsoft SQL server

Unzip the downloaded zip file. It will create a directory named “gateways”

Change the directory to gateways and start installer.

 

-bash-3.00$ cd /software/11gR2-Gateways/gateways/

-bash-3.00$ ./runInstaller

 

 

 

Click Next

 

Select name for the Oracle Home. The Path defaults to Oracle Home. No need to change the same.

 

Select Oracle Database Gateway for Microsoft SQL Server and click Next

Provide any existing Microsoft SQL Server details where you are planning to connect. It actually writes this in a config file and does not really verify.

This can be changed later also in the configuration file. Click Next

Click Install

 

 

Once it prompts with above screen, open another shell and run the script as root

root@host # /app/oracle/product/11.2.0/dbhome_1/root.sh

Running Oracle 11g root.sh script…

 

The following environment variables are set as:

ORACLE_OWNER= ora11g

ORACLE_HOME= /app/oracle/product/11.2.0/dbhome_1

 

Enter the full pathname of the local bin directory: [/usr/local/bin]:

The file “dbhome” already exists in /usr/local/bin. Overwrite it? (y/n) [n]: y

Copying dbhome to /usr/local/bin …

The file “oraenv” already exists in /usr/local/bin. Overwrite it? (y/n) [n]: y

Copying oraenv to /usr/local/bin …

The file “coraenv” already exists in /usr/local/bin. Overwrite it? (y/n) [n]: y

Copying coraenv to /usr/local/bin …

 

Entries will be added to the /var/opt/oracle/oratab file as needed by

Database Configuration Assistant when a database is created

Finished running generic part of root.sh script.

Now product-specific root actions will be performed.

Finished product-specific root actions.

 

 

Click Exit to Finish the installation.

 

Configure Oracle Database Gateway for Microsoft SQL Server

 

Make sure that the MS SQL database details are correct in the dg4msql parameter file.

 

-bash-3.00$ more $ORACLE_HOME/dg4msql/admin/initdg4msql.ora

# 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=[SERVER127]:4076//NewCDP16

# alternate connect format is hostname/serverinstance/databasename

HS_FDS_TRACE_LEVEL=OFF

HS_FDS_RECOVERY_ACCOUNT=RECOVER

HS_FDS_RECOVERY_PWD=RECOVER

 

-bash-3.00$ cd $ORACLE_HOME/network/admin

Append following in existing listener.ora. Change the name, path and port as required.

 

LISTENER_dg4mssql=

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = <oracle host or IP>) (PORT = <any unused port>))

)

)

)

 

SID_LIST_LISTENER_dg4mssql=

(SID_LIST=

(SID_DESC=

(SID_NAME=dg4msql)

(ORACLE_HOME=/app/oracle/product/11.2.0/dbhome_1)

(ENV=”LD_LIBRARY_PATH=/app/oracle/product/11.2.0/dbhome_1/dg4msql/driver/lib:/app/oracle/product/11.2.0/dbhome_1/lib”)

(PROGRAM=dg4msql)

)

)

 

Start the newly created listener.

-bash-3.00$ lsnrctl start LISTENER_dg4mssql

 

Verify that the service is registered with the listener .

-bash-3.00$ lsnrctl status LISTENER_dg4mssql

Listening Endpoints Summary…

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=<oracle hostname or IP>)(PORT=1551)))

Services Summary…

Service “dg4msql” has 1 instance(s).

Instance “dg4msql”, status UNKNOWN, has 1 handler(s) for this service…

The command completed successfully

 

Append following in tnsnames.ora

 

dg4msql =

(DESCRIPTION=

(ADDRESS=(PROTOCOL=tcp)(HOST=< oracle hostname or IP >)(PORT=1551))

(CONNECT_DATA=(SID=dg4msql))

(HS=OK)

)

 

-bash-3.00$ tnsping dg4msql

 

TNS Ping Utility for Solaris: Version 11.2.0.1.0 – Production on 07-JAN-2014 12:30:08

 

Copyright (c) 1997, 2009, Oracle. All rights reserved.

 

Used parameter files:

/app/oracle/product/11.2.0/dbhome_1/network/admin/sqlnet.ora

 

 

Used TNSNAMES adapter to resolve the alias

Attempting to contact (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=<host>)(PORT=1551)) (CONNECT_DATA=(SID=dg4msql)) (HS=OK))

OK (0 msec)

 

Create a new database link pointing to this TNS using SQL Server login credentials. This username must be already created in the Microsoft SQL Server database.

 

SQL> CREATE DATABASE LINK sqlserver CONNECT TO “SQLUser” IDENTIFIED BY “SQLPass” USING ‘dg4msql’;

 

Database link created.

 

SQL> select count(1) from “SQLView”@sqlserver;

 

COUNT(1)

———-

24592

 

This concludes setup steps to Read data of Microsoft SQL server table from Oracle database.

Jan 7th, 2014 | Posted by Tushar Thakker | In Uncategorized
  1. Oracle DBA
    Aug 3rd, 2020 at 20:27 | #1

    How can I connect to more than one MSSQL Server

  2. Feb 11th, 2018 at 10:27 | #2

    How can I connect to more than one MSSQL Server

  3. jerry
    Sep 7th, 2017 at 16:00 | #3

    If I already have a gateway installed for 1 MSSQLSERVER instance and I want to connect to another MSSQLSERVER instance, do I need to create a 2nd gateway home and configure it?

  4. Yogesh
    Jan 21st, 2017 at 06:33 | #4

    Hi All,

    I have already oracle XE database(Oracle 11g express edition) install in my windows 7 machine and and i want to access sql server 2008 database through my Oracle XE database. Sql server database and Oracle database installed on same machine. Kindly guide me step by step configuration process. Thanks in advance.

  5. Arthur
    Aug 26th, 2016 at 10:38 | #5

    after installing gateway and folowing through the configs. am getting this error.

    Link : “MSSQLSERVER”
    Error : ORA-12537: TNS:connection closed

  6. aryan
    Jul 25th, 2016 at 12:27 | #6

    excellent !!!

  7. May 9th, 2016 at 08:03 | #7

    Thanks for the explanation . Please some one help me to create a database link from Oracle RAC ( 3 node RAC ) database to SQL .

    How to add the TNS and LISTENER entries in RAC database ?

  8. rajkishore
    Jul 14th, 2015 at 15:47 | #8

    Thanks a lot . I implemented this my project. Perfect article.

  9. Eugen
    Apr 8th, 2015 at 09:37 | #9

    Thanks a lot great instructions!

Leave a comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>