Datenbank Oracle meets MS SQL Server – Zugriff von Oracle auf das Fremdsystem Vladimir Poliakov, AREVA NP GmbH Sind Sie ein Oracle DBA oder Entwickler? Läuft Ihre Datenbank auf Linux, aber Ihre Kunden oder Lieferanten arbeiten mit dem MS SQL Server auf Windows? Möchten Sie das Datentransfer-Verfahren und den Zugriff auf Fremdsysteme vereinfachen? Dann wären Oracle Heterogeneous Services eine mögliche Lösung. Abbildung 1: Server-Landschaft Oracle Heterogeneous Services [1] sind ein Bestandteil des Oracle DatenbankServers und wurden entwickelt, um auf die Daten in Fremdsystemen ohne großen Aufwand über eine ODBC-Schnittstelle zugreifen zu können. Der Artikel zeigt anhand eines Beispiels aus der Praxis, wie man von der Oracle Datenbank die Daten aus einer MS SQL Datenbank lesen beziehungsweise in diese schreiben kann (siehe Abbildung 1). Die Kommunikation zwischen Oracle Datenbank und MS SQL Server erfolgt über ODBC-Schnittstelle und Oracle Heterogeneous Agent, der vom Listener gestartet wird. Nach der Listener-Konfigurierung wird der Database Link zur MS SQL Datenbank erstellt, damit die Daten mit Oracle SQL-Mitteln bearbeitet werden können. Konfigurieren einer ODBC-Verbindung Wie schon gesagt, erfolgt die Kommunikation zwischen der Oracle Daten# # HS init parameters # HS_FDS_CONNECT_INFO = TESTHS HS_FDS_TRACE_LEVEL = OFF Listing 1: Konfigurationsdatei des Oracle Heterogeneous Agents 56 | www.doag.org bank und MS SQL Server über Oracle Heterogeneous Agent, der seinerseits die ODBC-Schnittstelle verwendet. Deswegen wurden erst auf einem separaten Server B (siehe Abbildung 1) die ODBC-Treiber installiert und danach eine ODBC-System-DSN zum MS SQL Server eingerichtet und getestet (siehe Abbildung 2). Da die Oracle Heterogeneous Services ein Bestandteil des Datenbank-Servers sind, muss man auf dem Server B entsprechende Oracle-Software ohne irgendeine Datenbank-Instanz installieren. Danach befindet sich die Konfigurationsbeispieldatei im Verzeichnis „$ORACLE_HOME\hs\admin\“ und heißt „inithsodbc.ora“. Für den Agent im Beispiel wurde noch der Name der Datei im Format „init<DNSODBC>. ora“ angepasst, wobei „DNSODBC“ mit dem ODBC-System-DSN-Namen übereinstimmen muss (siehe Abbildung 2). Der Inhalt der Konfigurationsdatei ist in Listing 1 dargestellt. Konfigurieren des Oracle Listeners Nachdem der Oracle Heterogeneous Agent konfiguriert worden ist, wird die Konfigurationsdatei des Oracle Listeners entsprechend angepasst (siehe Listing 2). Wichtig ist, dass der Listener auf dem gleichen Server läuft, auf dem der LISTENER = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) (HOST = <Server_B_Name>)(PORT = <Server_B_Listenerport>)) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (ORACLE_HOME = <Pfad_zum_ ORACLE_HOME_auf_dem_Server_B>) (SID_NAME = <ODBC_Name_ Abbildung_2>) (PROGRAM = HSODBC) ) ) Listing 2: Konfigurationsdatei des Oracle Listeners TESTHS_SERVER_B = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) (HOST = <Server_B_Name>) (PORT = <listenerport_on_ Server_B>) ) (CONNECT_DATA = (SID = <SID_ NAME_LISTENER.ORA_Listing_2>)) (HS=OK) ) Listing 3: Ausschnitt aus der TNSNAMES. ORA-Datei Datenbank Oracle Heterogeneous Agent gestartet werden soll. In unserem Beispiel ist das der Server B (siehe Abbildung 1). Konfigurieren der TNSNAME.ORA-Datei Der letzte Schritt vor dem Erstellen des Database-Links ist das Konfigurieren der „TNSNAMES.ORA“. Diese Datei liegt auf dem Datenbank-Server, in unserem Beispiel Server A (siehe Abbildung 1). Sie wird, wie in Listing 3 gezeigt, angepasst. Der Eintrag (HS=OK) bezeichnet die Heterogeneous-ServiceVerbindung. Sollte etwas nicht stimmen, kann man das Protokollieren der Zugriffe (HS_FDS_TRACE_LEVEL = ON in Listing 1) aktivieren. Die Trace-Dateien findet man dann auf dem Server B (siehe Listing 1) im Verzeichnis „$ORACLE_HOME\hs\trace\“. Erstellen des Database-Links Nachdem Oracle Heterogeneous Services, Listener und TNSNAMES.ORA-Da- tei konfiguriert sind, können der Database-Link erstellt und die Verbindung zum MS SQL Server aus SQL*Plus getestet werden (siehe Listing 4). CREATE DATABASE LINK „TESTHS_ DBLINK“ CONNECT TO „<username>“ IDENTIFIED BY „<password>“ USING ‚TESTHS_SERVER_B‘; SELECT count(*) FROM table_ name@TESTHS_DBLINK; Listing 4: Erstellen des Database-Links und Test der Verbindung Fazit Abbildung 2: Einrichten der ODBCSystem-DSN Referenzen Oracle Heterogeneous Services vereinfachen die Kommunikation zwischen Oracle und Fremdsystemen via ODBCSchnittstelle. Anstelle des MS SQL Servers können auch eine Excel-Datei oder eine MS Access Datenbank [2] verknüpft sein. Somit ist dieses Verfahren eine Alternative zum SQL*Loader (etwa beim Transfer der Daten). [1] Oracle Dokumentation zu Oracle Heterogeneous Services: http://download.oracle. com/docs/cd/E11882_01/appdev.112/ e10492/toc.htm [2] Heterogeneous Connectivity: http:// www.muniqsoft.de/tipps/monatstipps/ jahr-2004/januar-2004.htm Kontakt: Vladimir Poliakov [email protected] 2.0 1990 - 2010 | 20 Jahre bessere IT-Beratung Oracle Senior Consultant Ihre Aufgaben ■ ■ ■ ■ ■ Administration, Konfiguration und Support von komplexen Datenbanklösungen Monitoring bestehender DB-Systeme Backup/Recovery- und Hochverfügbarkeitslösungen Migrationen Referententätigkeit im Seminarumfeld Ihre Qualifikationen ■ ■ ■ ■ ■ Sehr gute Oracle-Kenntnisse (Unix/Windows) Gute Unix-/Windows-Kenntnisse Mindestens 5 Jahre Erfahrung in der Adminstration von Oracle Datenbanklösungen Perfektes Deutsch in Wort und Schrift Uneingeschränkte Reisebereitschaft innerhalb Deutschlands Das zeichnet ORDIX aus Interesse? ■ ■ ■ ■ ■ ■ Dann senden Sie Ihre Bewerbung mit Angabe Ihrer Gehaltsvorstellung und dem gewünschten Einstellungstermin an: Interessante Projekte bei namhaften Kunden Breites persönliches Aufgabenspektrum Ausgeprägtes, internes Know-how-Netzwerk Stetige Weiterbildung, persönliche Förderung Attraktive Vergütung, Firmen-PKW Soziale Absicherung ORDIX AG | Christoph Lafeld | Westernmauer 12 - 16 | 33098 Paderborn Tel.: 05251/1063-0 Weitere Infos unter www.ordix.de [email protected] DOAG News Q3-2010 | 57