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.
- Download Oracle Database Gateways CD if you have not already installed it
- Install Oracle Database Gateway for Microsoft SQL Server
- Configure Database Gateway for Microsoft SQL Server (DG4MSQL)
Download the software
Download Oracle Database Gateways from Oracle eDelivery site.
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.
How can I connect to more than one MSSQL Server
How can I connect to more than one MSSQL Server
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?
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.
after installing gateway and folowing through the configs. am getting this error.
Link : “MSSQLSERVER”
Error : ORA-12537: TNS:connection closed
excellent !!!
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 ?
Thanks a lot . I implemented this my project. Perfect article.
Thanks a lot great instructions!