Linking to SQL Server from Oracle 10g on 64bit Linux

I have this working, so I thought I would post my steps.
In versions 8 to 10 of Oracle, the software for making these connections was known as Heterogeneous Services. It was 32bit only software and the actual binary file that was executed when querying a non oracle database was $ORACLE_HOME/bin/hsodbc. When a query was made to the linked database, a process was started on the machine with the name of hsodbcXXX (where XXX is the name of the DSN).
In version 11g of Oracle this software is now referred to as Database Gateways and there is a 64bit version as well as a 32bit version. The binary file that is executed in this case is $ORACLE_HOME/bin/dg4odbc.
Fortunately the 64bit Database Gateway software can also be used with Oracle 10g databases as long as it is up to version 10.2.03 and has the odbc compatibility patch installed. (5965763).
To make use of this, we need to install the 11g ODBC Gateway into a separate ORACLE_HOME and start a listener from that environment. We can then make use of that listener from the 10g environment.
So here is what I did to get this working: (Note: DSN = MyDSN)
1.     Download and install 64bit ODBC driver with support for 64-bit ULEN from Easysoft. The file is named odbc-sqlserver-1.1.4-linux-x86-64-ul64.tar. You'll need to email Easysoft support for the URL. Create the DSN entry as part of the install. At the end of the process it can test the DSN. The query should come back with info about the SQL Server. Test the connection using isql from the /opt/easysoft/unixODBC/bin directory to verify that it works as well (/opt/easysoft/unixODBC/bin/isql –v MyDSN). Note, I installed easysoft driver under /opt rather than the /usr/local which is the default. /usr/local/easysoft is a symlink to /opt/easysoft.
2.     Install ODBC gateway via the 11g Gateways installer. You can do a custom install and deselect all but the ODBC Gateway component. (http://download.oracle.com/otn/linux/oracle11g/linux.x64_11gR1_gateways.zip)
3.     Create a /home/oracle/11g_environment.sh script that sets 11g ORACLE_HOME, PATH, and LD_LIBRARY_PATH variables. It should look something like this:
#set ORACLE ENV vars for 11g
ORACLE_HOME=/u01/app/oracle/product/11.1.0/tg_1 # (assuming that is where ODBC Gateway was installed)
PATH=/bin:/usr/bin:/u01/app/oracle/product/11.1.0/tg_1/bin:/opt/easysoft/bin:/opt/easysoft/unixODBC/bin
LD_LIBRARY_PATH=/opt/easysoft/lib:/opt/easysoft/unixODBC/lib:/u01/app/oracle/product/11.1.0/tg_1/lib
export ORACLE_HOME
export PATH
export LD_LIBRARY_PATH
4.     Create $ORACLE_HOME/hs/admin/initMyDSN.ora, $ORACLE_HOME/network/admin/listener.ora, and $ORACLE_HOME/network/admin/tnsnames.ora under 11g structure. They are as follows:
initMyDSN.ora:
# This is a sample agent init file that contains the HS parameters that are
# needed for an ODBC Agent.
# HS init parameters
HS_FDS_CONNECT_INFO=MyDSN
HS_FDS_TRACE_LEVEL=0
HS_FDS_TRACE_FILE_NAME=MyDSN.trc
HS_FDS_SHAREABLE_NAME=/opt/easysoft/unixODBC/lib/libodbc.so
HS_FDS_SUPPORT_STATISTICS=FALSE
# ODBC specific environment variables
#set ODBCINI=/etc/odbc.ini
#set ODBCINSTINI=/etc/odbcinst.ini
#set LD_LIBRARY_PATH=/opt/easysoft/lib:/opt/easysoft/unixODBC/lib:/u01/app/oracle/product/11.1.0/lib
#set PATH=$PATH:/opt/easysoft/unixODBC/bin:/opt/easysoft/bin/
# Environment variables required for the non-Oracle system
#set <envvar>=<value>
listener.ora
MyDSN =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1522))
SID_LIST_MyDSN =
(SID_LIST =
(SID_DESC=
(SID_NAME=MyDSN)
(ORACLE_HOME = /u01/app/oracle/product/11.1.0/tg_1)
(PROGRAM=dg4odbc)
(ENVS=LD_LIBRARY_PATH=/opt/easysoft/lib:/opt/easysoft/unixODBC/lib:/u01/app/oracle/product/11.1.0/tg_1/lib)
tnsnames.ora
# tnsnames.ora Network Configuration File:
# Generated by Oracle configuration tools.
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
MyDSN =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST=localhost)(PORT=1522))
(CONNECT_DATA=(SID=MyDSN))
(HS=OK)
5.     Add another entry for MyDSN in /u01/app/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora so tnsping works in 10g environment as well.
MyDSN =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST=localhost)(PORT=1522))
(CONNECT_DATA=(SID=MyDSN))
(HS=OK)
*** Notice that the MyDSN listener runs on a different port (1522) as it is a separate listener.
6.     Login to machine as user oracle and source the 11g environment script. “source ~/11g_environment.sh”. Now start the listener. “cd $ORACLE_HOME/bin”. “./lsnrctl start MyDSN”.
7.     Login to a new shell as user oracle with a 10g environment.
8.     Run sqlplus and create the database link. “CREATE PUBLIC DATABASE LINK SQLSERVER connect to “<someuser>” IDENTIFIED BY “<somepass>” USING ‘MyDSN’;”
9.     test the link. “select * from information_schema.tables@SQLSERVER;”
If it is successfull, you should see a system process named "dg4odbcMyDSN".

So what have you found out for yourself so far (considering the solution to this is easily found on the web)?
Have you looked up Heterogeneous Services?

Similar Messages

  • Connect to MS SQL SERVER FROM ORACLE 10G(OS- WIN XP)

    HI
    I NEED TO ACCESS MS SQL SERVER DATABASE FROM ORALCE 10G(OS -WIN XP)
    SOLUTION PLZ?
    Edited by: X7C7 on Nov 26, 2008 11:47 AM

    http://download.oracle.com/docs/cd/B19306_01/gateways.102/b14270/ch2.htm#sthref35
    HTH...

  • No suitable driver when connect MS SQL server from Oracle 10g using JTDS

    Hi,
    I have developed a java servlet application connection to MS SQL using jtds-1.2.jar. I have try to deploy this application to Oracle 9ias and it works fine.
    However, when I deploy the same application to Oracle 10g (10.1.2.0.2), I encounter this error - java.sql.SQLException: No suitable driver.
    I have copy the jtds-1.2.jar to Ora10g/jdbc/lib, Ora10g/j2ee/home/lib and also the Ora10g/j233/OC$J_GENERAL/applications/sampleApp/sampleApp/WEB-INF/lib folder, and also setup the data source via the EM interface. The data-source.xml entry is as follows:
    <data-source location="jdbc/ess" class="com.evermind.sql.DriverManagerDataSource" xa-location="jdbc/xa/essS" ejb-location="jdbc/ess" connection-driver="net.sourceforge.jtds.jdbc.Driver" username="scott" url="jdbc:jtds:sqlserver://202.xx.xx.xx:1433/sampleDB" inactivity-timeout="30" name="ess"/>
    </data-sources>
    Is there any configuration that I've forgotten to set?

    >
    I have developed a java servlet application
    connection to MS SQL using jtds-1.2.jar. I have try
    to deploy this application to Oracle 9ias and it
    works fine.
    However, when I deploy the same application to Oracle
    10g (10.1.2.0.2), I encounter this error -
    java.sql.SQLException: No suitable driver.
    I have copy the jtds-1.2.jar to Ora10g/jdbc/lib,
    Ora10g/j2ee/home/lib and also the
    Ora10g/j233/OC$J_GENERAL/applications/sampleApp/sample
    App/WEB-INF/lib folder, and also setup the data
    source via the EM interface.
    Is there any configuration that I've forgotten to set?The JAR file needs to be in a place the container can locate it correctly. This is the applib directory for your OC4J instance.
    Which I believe from what you have entered is:
    Ora10g/j2ee/OC4J_GENERAL/applib
    There's a general JDBC 3rd party driver set of documentation here:
    http://download.oracle.com/docs/cd/B14099_11/web.1012/b14012/datasrc.htm#sthref592
    This is not using jtds-1.2.jar but it shows how another set of 3rd party jdbc libs are used with the server.
    -steve-

  • How to connect to a Sql server from Oracle using db link

    Hi All,
    Does anybody have any idea about how to connect to a sql server from oracle database using db link to syncronize the data? I need to pull the data from Sql server table to Oracle tables and relay messages back to the sql server.
    Thank you,
    Praveen.

    we have 2 products - DG4MSQL and DG4ODBC.
    DG4ODBC is for free and requires a 3rd party ODBC driver and it can connect to any 3rd party database as long as you use a suitable ODBC driver
    DG4MSQL is more powerfull as it is designed for MS SQL Server databases and it supports many functions it can directly map to SQL Server equivalents - it can also call remote procedures or participtae in distributed transactions. Please be aware DG4MSQL requires a license - it is not for free.
    Check out Metalink and you'll find notes how to configure both products.
    For a generic overview:
    Note.233876.1 Options for Connecting to Foreign Data Stores and Non-Oracle Databases
    And the setup notes:
    DG4ODBC
    Note.561033.1 How to Setup DG4ODBC on 64bit Unix OS (Linux, Solaris, AIX, HP-UX) :
    Note.466225.1 How to Setup DG4ODBC (Oracle Database Gateway for ODBC) on Windows 32bit RDBMS.HS-3-2 :
    Note.109730.1 How to setup generic connectivity (HSODBC) for 32 bit Windows (Windows NT, Windows 2000, Windows XP, Windows 2003) V817:
    Note.466228.1 How to Setup DG4ODBC on Linux x86 32bit
    DG4MSQL
    Note.466267.1 How to Setup DG4MSQL (Database Gateway for MS SQL Server) on Windows 32bit
    Note.562509.1 How to Setup DG4MSQL (Oracle Database Gateway for MS SQL Server) 64bit Unix OS (Linux, Solaris, AIX,HP-UX)
    Note.437374.1 How to Setup DG4MSQL (Oracle Database Gateway for MS SQL Server) Release 11 on Linux

  • Migration from MS SQL Server to Oracle 10g

    Hi,
    In our application, we are planning to refresh data every one hour from MS SQL Server to Oracle 10g. Can anyone tell me what approach can be followed?
    Thanks & Regards,
    Faizal MK

    Hello,
    migrations can be done with the Migration Workbench that is included in the SQL Developer: http://www.oracle.com/technology/tech/migration//workbench/index_sqldev_omwb.html
    But your question sounds more like a replication of data than a migration. Please read as a starter the following note in My Oracle Support (former Metalink):
    Note 283700.1: How to replicate Data between Oracle and a Foreign Datasource
    That note describes ways for the replication in both directions. Please let me know whether this is helpful for you.
    Best regards
    Wolfgang Kobarg-Sachsse

  • How to connect to SQL Server from Forms 10g?

    Hello all,
    How do we connect to SQL Server database from Forms 10g?
    In Oracle Metalink site they have suggested using Transparent Gateway for SQL Server as a solution.
    But is there a way we can connect directly to SQL Server from Forms using an ODBC connection
    without installing anything on the database server?
    Pls help!
    Regards,
    Sam

    Hello all,
    I was able to connect to SQL Server from Oracle using Generic Connectivity (HSODBC).
    Transparent gateway was not required.
    Followed metalink note 109730.1
    So, after I created a dblink to SQL Server, I created a synonym for the dblinked SQL Server table.
    When I used the synonym as the table source in Oracle Forms, I got the following error while querying.
    "ORA-02070 - ROWID is not supported in this context."
    This is because Forms has an invisible ROWID field and when data is fetched from SQL Server table
    no Rowid is fetched since SQL Server table doesn't have one.
    Is there a way to overcome this issue or do we have populate the block manually using a SQL query ?
    Pls suggest.
    Regards,
    Sam

  • Regarding the tns-12541 error in connecting to sql server from oracle

    i need to create a database link from oracle on windows box to sql server.I configured everything but when i am trying to tnsping the sqlserver
    it throws me an TNS12541 no listener error.
    The listner status is up and the listener works

    little confusion here, are you trying to tnsping sql server? tnsping is an Oracle utulity.
    To acces sql server from Oracle you may use Transparent Gateway for Microsoft SQL - http://download.oracle.com/docs/cd/B19306_01/gateways.102/b14270/ch3.htm#sthref66 and Heterogeneous Connectivity - http://download.oracle.com/docs/cd/B19306_01/server.102/b14232/intro.htm#sthref33
    Best regards.

  • One way replication from MS sql server to Oracle 10g

    Hi,
    We are using Sql server 2005 windows 2003 32 bit and Oracle 10g 10.2.0.3 on linux 64 bit
    Is it possible to replcate table data on real time from sql server (2005 32 bit or sql server 2000 32 bit)to oracle 10g running on linux 64 bit?
    If yes then what are the steps.
    It will be one way replication from sql server to oracle.
    Which option is best sql server dts or Oracle Stream replication to replicate table data?
    Regards,

    If you want to push data from SqlServer, then ODBC, Linked tables, DTS etc.
    If you want to pull data from Oracle, then Heterogenous Services / Gateway.

  • Faster way to migrate data from SQL Server to Oracle 10g

    We have to migrate data from SQL Server to Oracle 10 g.
    One particular table on SQL Server has records around 1.25 millions.
    We tried moving data using DTS package, but looks it will take hours with current speed of 300 records/minute.
    This table has TEXT column, which has XML strings stored. I am not sure, if this is the reason for slow migration.
    Would you please suggest better options to migrate it faster?
    Thanks in advance !!!

    Have you tried Migration work bench?

  • Migration from SQL server to Oracle 10g

    Hi, I am new here,
    I would like to ask how to use SQL developer MWB to migration SQL Server to Oracle?
    I have go through the doc(s) like: getting start, user's guild, etc. and have following problems
    (1), where should the SQL developer installed? in SQL Server side? Oracle side? or any PC with connection to the databases?
    (2), do I need to get some plug-in(s) for MWB to work? If yes, which plug-in do I need and where are they?
    Thank you very much.

    Hi Chocobo,
    I put together a Quick Guide myself
    http://dermotoneill.blogspot.com/2008/06/sql-developer-migration-workbench-151_11.html
    I updated it to answer your questions.
    Hope that helps
    Dermot.

  • Connect SQL Server From Oracle

    Hi Experts,
    I want's to made connection from Oracle 10g to Ms SQL Server 2000. I made necessary entries in receptive file, but still getting an error...
    Setting info .....
    */hs/initMYSQLSERVERDSN.ora*
    HS_FDS_CONNECT_INFO = MYSQLSERVERDSN
    HS_FDS_TRACE_LEVEL = OFF
    LISTENER.ORA
    LISTENERMYSQLSERVERDSN =
    (ADDRESS_LIST=
    (ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1522))
    (ADDRESS=(PROTOCOL=ipc)(KEY=PNPKEY)(queuesize=80)))
    SID_LIST_LISTENERMYSQLSERVERDSN=
    (SID_LIST=
    (SID_DESC=
    (SID_NAME=MYSQLSERVERDSN)
    (ORACLE_HOME = E:\oracle\product\10.1.0\db_1)
    (PROGRAM=hsodbc)
    TNSNAME.ORA
    MYSQLSERVERDSN =
    (DESCRIPTION=
    (ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1522))
    (CONNECT_DATA=(SID=MYSQLSERVERDSN))
    (HS=OK)
    LISTENER start successfully, and tnsping working fine.
    But after createing db link , when i execute query desc spt_datatype_info@mysqlserverdsn;
    I am geting an error message in listenermysqlserverdsn.log file
    TNS-12518: TNS:listener could not hand off client connection
    TNS-12560: TNS:protocol adapter error
    Please help me out from this issue.
    Thanks in Advance
    Mani

    You OS ?
    I have also done the same.
    I did install SQL Server & Oracle on another machine with Windows.
    For more pls visit.
    http://www.dba-oracle.com/t_heterogeneous_database_connections_sql_server.htm
    Aqeel Nawaz

  • Connect to SQL Server from Oracle

    Does Oracle offer any connectivity to NON-Oracle databases such as SQL Server from within the Oracle database itself, similar to a database link ?

    Yes, it's called Heterogeneous Connectivity. Basically how it works is you set up an ODBC data source on the Oracle server
    and need to modify the tnsnames.ora and listener.ora files. Once you get it set up it works exactly like a dblink. You should be
    able to find information on it in the Oracle manuals or from Metalink. There's also a Heterogenous Connectivity forum on OTN. If
    you can't find anything let me know and I can send you some documents on how to set it up. I think the hardest part for you might
    be finding a SQL Server ODBC driver for HP-UX.

  • Load Data from SQL Server to Oracle 10g using Sql*loader utility

    I am trying to lod data from sql server 2005 to oracle 10g.
    What is the best way to do it?
    Can sql*loader utility do it?
    what is the difference of using sql*loader utility and migration tool fom sql developer ?
    Thanks
    Edited by: user11313758 on Sep 30, 2009 4:30 PM

    Hello:
    You could consider using Oracle Heterogeneous Services to do this. If your Oracle database is on a Windows platform the link below shows you how to make a connection to SqlServer from an Oracle database.
    http://www.databasejournal.com/features/oracle/article.php/3442661/Making-a-Connection-from-Oracle-to-SQL-Server.htm
    Varad

  • Connecting ms sql server from oracle using db link

    Hi,
    Source : Oracle 11g on linux
    destination : ms sql server 2005
    i need to create the db link from oracle to ms sql server to view the tables , is it posibble without configuring the gateways( as looks like it is licenced product)
    Please let me know any alternative to achive this
    Thanks
    PGR

    There are 2 gateway - the commercial Database Gateway for Ms SQl Server which requires a license and the Database Gateway for ODBC which is for free. The license for DG4ODBC is included in your database license. You only need to install a suitable ODBC driver on your Linux box (for example use the MS SQl Server ODBC driver for Linux - details can be found here: http://www.microsoft.com/en-gb/download/details.aspx?id=36437 ). and then configure the gateway using the My Oracle Support Note:
    How to Configure DG4ODBC on 64bit Unix OS (Linux, Solaris, AIX, HP-UX Itanium) to Connect to Non-Oracle Databases Post Install  
    [Article ID 561033.1]
    - Klaus

  • Reading milliseconds from Sql server into oracle 10g

    Hi,
    We have a very time sensitive pressing requirements to be addressed immediately.
    We need to read the date time column from sql server 2008 into oracle 10g.
    We have a dblink established between the two servers and have tried to use sql server and sql native client 10 driver to read the dates from sql into oracle.This we are able to do very successfully.
    The issue is in reading milliseconds stored in sql server.The millisecond part comes in as 00000 from sqlserver to oracle.These milliseconds are needed to identlfy the unique records.
    For instance
    SQL SERVER Oracle
    source_id source id
    01/01/2012 6:30:35:456 01/01/2012 6:30:35:000000.
    Im issuing my query through Toad via Oracle to remote sql server using a dblink which connects using HS ODBC connection to sql server 2008(remote).
    We have no control over sql server Db as this is remote third party DB.We just have select access to their tables to bring into our own oracle DB.
    Any insight or help will be much appreciated.

    Hi,
    Could you please send the following information -
    - what version of HSODBC are you using ? Is it a 10.2 version ?
    - what is the SQL*Server datatype of the column you are reading ?
    - from Oracle could you issue -
    describe sql_server_table@hsodbc
    - what is the Oracle datatype shown for the column ?
    Could you also run your tests using SQLPLUS instead of TOAD ? We don't support TOAD and need to know if the problem also happens when using SQLPLUS, to avoid it being a TOAD problem.
    Also, 10.2 HSODBC is now desupported and you should be using the 11g Database Gateway for ODBC (DG4ODBC) which is a direct replacement for HSODBC. To use DG4ODBC your RDBMS needs to be at 10.2.0.4 or higher and DG4ODBC should be installed in a completely separate ORACLE_HOME from the existing 10.2 install.
    Regards,
    Mike

Maybe you are looking for