Come installare un linked server ad Oracle (quasi) senza problemi

Datamaze
22.06.20 12:19 PM Comment(s)

Overview

Un paio di nostri clienti hanno la necessità di far comunicare SQL Server con un database Oracle tramite l’utilizzo di linked server. Ogni volta che dobbiamo configurare l’ambiente SQL Server per consentire questo collegamento scatta un riflesso incondizionato… diciamo che il livello di attenzione si alza a DEFCON 2 😊


A parte gli scherzi, l’installazione dei driver Oracle necessari per stabilire il collegamento non è tra i setup che filano lisci ogni volta: vuoi per come sono scritti gli applicativi Oracle, vuoi per i dettagli che occorre osservare. Proviamo a fare una lista degli ingredienti e della procedura per una installazione che riesce “quasi sempre” al primo tentativo.


Cosa preparare in anticipo

Prima di tutto, assicurarsi che sul server Windows sia installata la feature .NET Framework 3.5 (che contiene anche la versione 2.0 e 3.0). Se si tratta di un cluster SQL, installare su tutti i nodi (i driver Oracle sono legati al server Windows: in caso di failover di una istanza SQL devono necessariamente essere installati e configurati su tutti i nodi che compongono il cluster).


Avere a disposizione Oracle Client a 32 o 64 bit in base al vostro sistema operativo. Questo è molto importante: se installate i driver a 32 bit su un sistema a 64 bit, non funzioneranno. Potete scaricarlo da qui in base alla versione di Oracle che utilizzate, dopo aver effettuato la registrazione.


Avere a disposizione Oracle Data Access Components (ODAC). Potete scaricarlo da qui, in base alla versione di Oracle alla quale dovete collegarvi, dopo aver effettuato la registrazione. Anche qui, attenzione ai 32 e 64 bit.


Installazione

Dopo avere recitato un rito propiziatorio 😊 a scelta, installare Oracle Client utilizzando il tipo di installazione Personalizzato. I passaggi più interessanti sono quello relativo alla scelta del percorso di installazione. Solitamente installiamo il client all’interno di una cartella base c:\oracle\app.


Oracle client


Altro passaggio fondamentale è quello relativo alla scelta dei componenti da installare. Sotto sono indicati i componenti utili all'installazione.

Oracle database componenti

Se durante l’installazione ricevete dei messaggi relativi alla compatibilità del pacchetto con la versione di Windows installata, ignorateli: l’installazione prosegue comunque.


Per il nostro scopo, sarà richiesto di configurare Oracle Net indicando un e server Oracle al quale collegarsi. Questo passaggio può essere sostituito andando ad editare manualmente i file con estensione .ORA che andranno posizionati all’interno della cartella NETWORK (vedi più avanti per i dettagli). Il consiglio è quello di utilizzare il tool di configurazione in modo da testare subito il collegamento con il server Oracle.


Possiamo poi passare all’installazione di ODAC. Come prima cosa, dobbiamo scompattare il pacchetto in una directory temporanea. Da una command line con diritti amministrativi, eseguire il comando di installazione

install.bat all c:\oracle\ODAC odac

Potete cambiare il percorso C:\Oracle\ODAC in base alle vostre necessità ed il parametro all in base a cosa volete installare. Se eseguite il comando install.bat senza parametri, avete come risultato una sorta di help che vi può aiutare nella scelta.


Una volta installato ODAC, possiamo verificare se i driver OLEDB che ci servono per creare il linked server, sono stati registrati correttamente. Per fare questo, create un nuovo file di testo all’interno di una cartella e rinominatelo utilizzando l’estensione .UDL. Doppio click sul file e dovrebbe apparirvi questo:

Data Link Properties SQL Server Oracle

Come vedete, è presente il provider Oracle Provider for OLE DB.


Ultimo passaggio dell’installazione è quello di verificare che i file di configurazione di Oracle siano correttamente configurati. All’interno della cartella c:\oracle\odac\network\admin dovrete avere due file:

· sqlnet.ora

· tnsnames.ora


Sono gli stessi file che trovate all’interno della cartella C:\Oracle\app\product\11.2.0\client_1\NETWORK\ADMIN se avete utilizzato il programma Oracle Net Manager per la configurazione.


Oracle Net Manager


Il file sqlnet.ora ha questo contenuto:

SQLNET.AUTHENTICATION_SERVICES= (NTS)

NAMES.DIRECTORY_PATH= (TNSNAMES)


Il file tnsnames.ora ha questo contenuto:

<DESCRIZIONE SERVIZIO> =

    (DESCRIPTION =   

    (ADDRESS_LIST =   

      (ADDRESS = (PROTOCOL = TCP)(HOST = <NOME SERVER>)(PORT = 1521))

    )   

    (CONNECT_DATA =   

      (SERVICE_NAME = <NOME SERVIZIO>)

      )     

      

Prendete i due file e copiateli all’interno della cartella c:\oracle\odac\network\admin


Oracle odac network

Configurazione del linked server

Possiamo adesso creare il nostro linked server verso Oracle utilizzando SQL Server Management Studio. Prima però andiamo configurare una proprietà del provider che consente di caricare la DLL di tipo COM nello sazio di memoria riservato a SQL Server (questa impostazione NON è raccomandata ma purtroppo è necessaria per questo driver).

Ora OLEDDB Oracle
Oracle Provider for OLE DB


Creiamo il nostro linked server configurandolo in questo modo:

Configure new linked server

Nell'attributo Linked Server andiamo a specificare il nome che vogliamo dare al nostro oggetto e in Data Source il nome del servizio Oracle come specificato nel file tnsnames.ora.


Configuriamo ora la modalità di accesso al servizio Oracle utilizzando il security context definito da user name e password (che andranno ovviamente configurati anche all'interno di Oracle).

New Linked Server in SQL Server

Confermiamo la configurazione ed il linked server dovrebbe crearsi senza errori.


Se invece riceviamo un messaggio di questo tipo:

Linked Server connection test


Niente paura: riavviamo il servizio SQL e se il nostro rito propiziatorio iniziale ha avuto l’effetto sperato, un test del linked server (tasto destro-> Test Connection), dovrebbe ritornarci questo messaggio:

Linked Server Test Connection

In rete trovate documentazione sia per la creazione del linked server utilizzando TSQL sia per la risoluzione di alcuni problemi durante l’installazione dei driver Oracle.


Conclusioni

La configurazione di un linked server verso Oracle richiede un po’ di attenzione e non sempre fila tutto liscio. Purtroppo, i metodi di installazione utilizzati per il client e per i driver ODAC non sono il massimo.


Seguendo i passi indicati però non dovreste avere grossi problemi a configurare il tutto in breve tempo.


di Cristiano Gasparotto, pubblicato il 20 gennaio 2020