Connectar ORACLE i SQL Server
Objectiu final: Accedir mitjançant un DBLINK d'Oracle a una altra bbdd SQLServer.
Material:
- Fedora Core 5 o superior
- Oracle 10g (10.2.0) per a Linux
- SQL Server 2000
Instal·lar el unixODBC
- Baixar el unixODBC d'aquesta adreça
- copiar el fitxer unixODBC*.tar.gz a un directori de treball /home/oracle per exemple
- # gunzip unixODBC*.tar.gz
- # tar xvf unixODBC*.tar
- # cd unixODBC*
- # ./configure –prefix=/usr/local –enable-gui=no
- # make
- # make install
- Baixar el driver de www.freetds.org. download
- copiar el fitxer a un directori de treball
- # tar -xvzf freetds-stable.tgz
- # ./configure –with-tdsver=8.0 –with-unixODBC=/usr/local
- # make
- # make install
- Afegir al fitxer freetds.conf que es trobarà segurament a /usr/local/etc:
host =
port =
tds version = 8.0 (SQL Server 2000 és el 8.0 http://www.freetds.org/userguide/choosingtdsprotocol.htm)
Configurar el unixODBC
- Obrir el fitxer obdcinst.ini que hauria d'estar a /usr/local/etc i modificar-lo:
[TDS]
Description = FreeTDS driver
Driver = /usr/local/lib/libtdsodbc.so
Setup = /usr/local/lib/libtdsodbc.so
Trace = Yes
TraceFile = /tmp/freetds.log
FileUsage = 1 - Obrir el fitxer odbc.ini que també hauria d'estar a /usr/local/etc i modificar-lo:
[test]
Driver = TDS
Description = MS SQL Test
Trace = Yes
TraceFile = /tmp/mstest.log
Servername = test
Database =
Port = 1433
- Executar al shell la següent comanda:
# isql -v
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL> select * from "sysObjects";
Si això funciona vol dir que ens hem connectat correctament
- Crear un fitxer init
.ora al directori $ORACLE_HOME/hs/admin onseria el nom de la connexió nova. Afegim en aquest fitxer les dades que apunten a la nostra connexió: - HS_FDS_CONNECT_INFO = el nom de la font de dades odbc (en el nostre cas test). Ha de coincidir amb el DSN
- HS_FDS_SHAREABLE_NAME = el nom i la ruta del driver manager o driver
- ODBCINI = el nom i ruta del fitxer de configuració del ODBC
# needed for an ODBC Agent.
#
# HS init parameters
#
HS_FDS_CONNECT_INFO = test
HS_FDS_TRACE_LEVEL = 4
HS_FDS_TRACE_FILE_NAME = /tmp/freetds.trc
HS_FDS_SHAREABLE_NAME = /usr/local/lib/libodbc.so
#
# ODBC specific environment variables
#
set ODBCINI=/usr/local/etc/odbc.ini
#
# Environment variables required for the non-Oracle system
# - HS_FDS_CONNECT_INFO = el nom de la font de dades odbc (en el nostre cas test). Ha de coincidir amb el DSN
- Afegir un listener al fitxer de configuració listener.ora que trobem al directori $ORACLE_HOME/network/admin:
SID_LIST_test =
(SID_LIST =
(SID_DESC =
(SID_NAME = test)
(ORACLE_HOME =)
(PROGRAM = hsodbc)
(ENVS=LD_LIBRARY_PATH=/lib: )
)
)
test =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1522))
)
(ADDRESS_LIST =
(ADDRESS=(PROTOCOL=ipc)(KEY=PNPKEY))
)
)
) - Desprès de modificar el fitxer. Engenguem el nou listener amb la comanda:
# lsnrctl start test
- Afegir la entrada nova també al tnsnames.ora:
test =
(DESCRIPTION=
(ADDRESS = (PROTOCOL = TCP)(HOST =)(PORT=1522))
(CONNECT_DATA=
(SERVICE_NAME=test)
)
(HS=OK)
) - Proveu la nova connexió amb la comanda:
# tnsping test
- Connectar-se a Oracle amb un usuari
# sqlplus system@ - SQL> create database link sqlserverdb connect to user identified by password using 'test';
- I per a comprovar que ha funcionat:
SQL> select * from sysobjects@sqlserverdb; - Si la select retorna resultats és que ho hem fet correctament, evidentment.
M'apunto al teu blog, encara que no sàpiga res d'oracle i no l'usi, assegurança que caurà informació sobre altres llenguatges de programació i aniré aprenent.
Publicar un comentario