Oracle GW / MSSQL Linked Server - doag.org€¦ · Agenda 2 9/6/2018 Oracle RDBMS vs. SQL Server 1....
Transcript of Oracle GW / MSSQL Linked Server - doag.org€¦ · Agenda 2 9/6/2018 Oracle RDBMS vs. SQL Server 1....
BASEL BERN BRUGG DÜSSELDORF FRANKFURT A.M. FREIBURG I.BR. GENF
HAMBURG KOPENHAGEN LAUSANNE MÜNCHEN STUTTGART WIEN ZÜRICH
Oracle GW / MSSQL Linked ServerSetup und Besonderheiten
Rainer Klomps
Agenda
Oracle RDBMS vs. SQL Server2 9/6/2018
1. Oracle Gateway / MS SQL Linked Server, was ist das?
2. Motivation zum Einsatz
3. Setup
4. Verhalten / Features / Bugs
5. Demos
Oracle RDBMS vs. SQL Server3 9/6/2018
Oracle Gateway / MS SQL Linked
Server, was ist das?
Oracle Gateway / MS SQL Linked Server, was ist das?
Oracle RDBMS vs. SQL Server4 9/6/2018
Vergleichbar mit DB-Links in Oracle
Kommunikationsmittel zwischen Datenbanken unterschiedlicher Hersteller *
* Linked Server ist – wie einige andere SQL Server Features - unter Linux nicht
verfügbar
(vgl. https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-release-notes?view=sql-
server-2017) * *
* * Ausnahme: Linked Server zwischen zwei SQL Server DBs
Oracle Gateway / MS SQL Linked Server, was ist das?
Oracle RDBMS vs. SQL Server5 9/6/2018
Graphische Darstellung der Kommunikation MSSQL – Oracle DB
https://docs.microsoft.com/de-de/sql/relational-databases/linked-servers/linked-servers-database-engine
Oracle Gateway / MS SQL Linked Server, was ist das?
Oracle RDBMS vs. SQL Server6 9/6/2018
Graphische Darstellung der Kommunikation Oracle DB - MSSQL
Oracle DB NetzwerkOracle TNS Oracle Gateway für MSSQL MSSQL
Oracle RDBMS vs. SQL Server7 9/6/2018
Motivation zum Einsatz
Motivation zum Einsatz
Oracle RDBMS vs. SQL Server8 9/6/2018
DB Kommunikation
Integration
Migration
Lizenzkosteneinsparung
Datenkonsolidierung
Oracle RDBMS vs. SQL Server9 9/6/2018
Setup
Setup - Standard Linked Server
Oracle RDBMS vs. SQL Server10 9/6/2018
– Bestandteil der SQL Server Installation
• OLE DB Provider für Microsoft Directory Services (ADsDSOObject)
• OLE DB Simple Provider (MSDAOSP)
• Microsoft OLE DB Provider for ODBC Drivers (MSDASQL)
• Microsoft OLE DB Provider for Analysis Services 14.0 (MSOLAP)
• Microsoft OLE DB Provider for Search (Search.CollatorDSO)
• SQL Server Native Client 11.0 (SQLNCLI11)
• Microsoft OLE DB Provider for SQL Server (SQLOLEDB)
• OLE DB Provider for SQL Server Integration Services (SSISOLEDB)
Setup - Verfügbare Oracle Gateways
Oracle RDBMS vs. SQL Server11 9/6/2018
– Die folgenden Gateways sind im Rahmen der Oracle Gateway Installation
auswählbar
– Oracle Database Gateway für
▪ Informix
▪ Sybase
▪ MS SQL Server
▪ Teradata
▪ APPC (advanced program to
program communication IBM
mainframe)
▪ WebSphere MQ
▪ ODBC (keine Lizenzkosten,kein
Support)
▪ DRDA (Distributed Relational
Database Architecture)
▪ Oracle Provider for DRDA
Setup Linked Server (1)
Oracle RDBMS vs. SQL Server12 9/6/2018
– Aktivierung von Mixed Mode Authentifizierung in der DB-Instanz
Setup Linked Server (2)
Oracle RDBMS vs. SQL Server13 9/6/2018
– Installation des Oracle Provider for OLE DB 64 bit (Komponente der
benutzerdefinierten Oracle Client-Installation)
Setup Linked Server (3)
Oracle RDBMS vs. SQL Server14 9/6/2018
– Die Einstellung der Eigenschaft „InProcess“ für den Oracle OLE DB Provider ist
zwingend erforderlich.
Setup Linked Server (4)
Oracle RDBMS vs. SQL Server15 9/6/2018
– Neuen Linked Server / „Verbindungsserver“ anlegen
Setup Linked Server (5)
Oracle RDBMS vs. SQL Server16 9/6/2018
– Informationen zur Anmeldung der SQL Server Session bei Oracle im Menü
„Sicherheit“
Setup Linked Server (6)
Oracle RDBMS vs. SQL Server17 9/6/2018
– Konfiguration der Serveroptionen
Setup Linked Server (6)
Oracle RDBMS vs. SQL Server18 9/6/2018
USE [master]
GO
EXEC master.dbo.sp_addlinkedserver @server =
N'MSSQL_2_P_GWDEMO', @srvproduct=N'',
@provider=N'OraOLEDB.Oracle‘,
@datasrc=N'RKLs-Datenquirl/p_gwdemo'
GO
EXEC master.dbo.sp_serveroption @server=N'MSSQL_2_P_GWDEMO',
@optname=N'collation compatible', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'MSSQL_2_P_GWDEMO',
@optname=N'data access', @optvalue=N'true'
GO
Setup Linked Server (7)
Oracle RDBMS vs. SQL Server19 9/6/2018
EXEC master.dbo.sp_serveroption @server=N'MSSQL_2_P_GWDEMO',
@optname=N'dist', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'MSSQL_2_P_GWDEMO',
@optname=N'pub', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'MSSQL_2_P_GWDEMO',
@optname=N'rpc', @optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption @server=N'MSSQL_2_P_GWDEMO',
@optname=N'rpc out', @optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption @server=N'MSSQL_2_P_GWDEMO',
@optname=N'sub', @optvalue=N'false'
GO
Setup Linked Server (8)
Oracle RDBMS vs. SQL Server20 9/6/2018
EXEC master.dbo.sp_serveroption @server=N'MSSQL_2_P_GWDEMO',
@optname=N'connect timeout', @optvalue=N'0'
GO
EXEC master.dbo.sp_serveroption @server=N'MSSQL_2_P_GWDEMO',
@optname=N'collation name', @optvalue=null
GO
EXEC master.dbo.sp_serveroption @server=N'MSSQL_2_P_GWDEMO',
@optname=N'lazy schema validation', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'MSSQL_2_P_GWDEMO',
@optname=N'query timeout', @optvalue=N'0'
GO
Setup Linked Server (9)
Oracle RDBMS vs. SQL Server21 9/6/2018
EXEC master.dbo.sp_serveroption @server=N'MSSQL_2_P_GWDEMO',
@optname=N'use remote collation', @optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption @server=N'MSSQL_2_P_GWDEMO',
@optname=N'remote proc transaction promotion', @optvalue=N'true'
GO
USE [master]
GO
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname =
N'MSSQL_2_P_GWDEMO', @locallogin = NULL , @useself = N'False',
@rmtuser = N‘scott', @rmtpassword = N‘tiger'
GO
Setup Oracle Gateway (1)
Oracle RDBMS vs. SQL Server22 9/6/2018
Installationsverzeichnis
Setup Oracle Gateway (2)
Oracle RDBMS vs. SQL Server23 9/6/2018
Produkte
Setup Oracle Gateway (3)
Oracle RDBMS vs. SQL Server24 9/6/2018
Informationen zur SQL Server DB
Setup Oracle Gateway (4)
Oracle RDBMS vs. SQL Server25 9/6/2018
Listener / Tnsnames-Konfiguration
Setup Oracle Gateway (6)
Oracle RDBMS vs. SQL Server26 9/6/2018
Listener Name / Protokoll
Setup Oracle Gateway (7)
Oracle RDBMS vs. SQL Server27 9/6/2018
Listener Port
Setup Oracle Gateway (8)
Oracle RDBMS vs. SQL Server28 9/6/2018
Für das Gateway muss eine Oracle SID eingerichtet werden (Default: dg4msql)
Für jede Verbindung und für jede Kombination von Gateway-Parametern muss es
eine separate SID („GWSID“) geben.
Die zu einer GWSID gehörenden Konfigurationsdateien befinden sich unter
<GW_HOME>\<GWSID>, also beispielsweise
C:\app\oragw\product\18.0.0\tghome_1\dg4msql
<GW_HOME>\<GWSID>\admin\dg4msql_cvw.sql (Views)
<GW_HOME>\<GWSID>\admin\dg4msql_tx.sql (TX-Log)
<GW_HOME>\<GWSID>\admin\ initdg4msql.ora (Parameter)
Ausnahme: TNS-Dateien
<GW_HOME>\network\admin\listener.ora, tnsnames.ora, sqlnet.ora
Setup Oracle Gateway (9)
Oracle RDBMS vs. SQL Server29 9/6/2018
Die 12c Gateway-Installation änderte die TNS-Einstellungen, so dass der Listener
aus dem neuen GW_HOME verwendet wurde (18c OK)
Pflege der Dateien listener.ora, tnsnames.ora und sqlnet.ora damit bei 12c in
GW_HOME
In der master-DB von SQL Server muss eine Tabelle zur Unterstützung des Two-
Phase-Commit angelegt werden (<TG_HOME>\<GW_SID>\admin\dg4msql_tx.sql)
Im Zielschema des DB-Links müssen Views zum Zugriff auf Spalten-Informationen
angelegt werden (<TG_HOME>\<GW_SID>\admin\dg4msql_cvw.sql)
– "dbo"."ALL/USER_CONS_COLUMNS_vw“
– "dbo"."ALL /USER _IND_COLUMNS_vw“
Setup Oracle Gateway (10)
Oracle RDBMS vs. SQL Server30 9/6/2018
listener.ora ($GW_HOME\network\admin)
LISTENER_GW =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = RKLs-Datenquirl)(PORT = 1522))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1522))
)
)
Setup Oracle Gateway (11)
Oracle RDBMS vs. SQL Server31 9/6/2018
listener.ora ($GW_HOME\network\admin)
SID_LIST_LISTENER_GW =
(SID_LIST =
(SID_DESC =
(SID_NAME = dg4msql)
(PROGRAM = dg4msql)
(ORACLE_HOME = C:\app\oragw\product\18.0.0\tghome_1)
)
)
# ohne Endung .exe
Konfiguration
Oracle RDBMS vs. SQL Server32 9/6/2018
Zur Konfiguration der Dateien listener.ora, tnsnames.ora, init<GW_SID>.ora und des
DB-Links bietet Oracle Support unter Doc ID 1351616.1 ein Tool an, das nach
Eingabe der benötigten Parameter die entsprechenden Dateien / das Statement für
den DB-Link generiert.
Konfiguration
Oracle RDBMS vs. SQL Server33 9/6/2018
Oracle RDBMS vs. SQL Server34 9/6/2018
Verhalten / Features / Bugs
Verhalten / Features / Bugs
Oracle / Gateway (1)
Oracle RDBMS vs. SQL Server35 9/6/2018
(<TG_HOME>\<GW_SID>\admin\initdg4msql.ora
– HS_FDS_CONNECT_INFO=RKLS-DATENQUIRL/RKLS-
DATENQUIRL/AdventureWorks2012
– select user from dual@sqlsrv
– FEHLER in Zeile 1:
– ORA-28500: Verbindung von ORACLE zu Fremdsystem gab diese Nachricht zurück:
– HS_FDS_CONNECT_INFO='RKLS-DATENQUIRL'/'RKLS-DATENQUIRL'/AdventureWorks2012
– [Oracle][ODBC SQL Server Wire Protocol driver]General error. select failed: 0
– {HY000}
– ORA-02063: vorherige 2 lines von SQLSRV
In 12c
Verhalten / Features / Bugs
Oracle / Gateway (2)
Oracle RDBMS vs. SQL Server36 9/6/2018
(<TG_HOME>\<GW_SID>\admin\initdg4msql.ora
– HS_FDS_CONNECT_INFO=RKLS-DATENQUIRL//AdventureWorks2012
behebt das Problem
Unix-Pfad bei HS_FDS_TRACE_FILE_NAME
– HS_FDS_TRACE_FILE_NAME=C:/app/oracle/product/12.1.0/tghome_1/hs/trace/
dblink_trace.txt
HS_FDS_RECOVERY_ACCOUNT / HS_FDS_RECOVERY_PWD
– Default: Password unverschlüsselt
HS_FDS_RECOVERY_PWD = * Verschlüsselungstool
<TG_HOME>\BIN\dg4pwd.exe
In 12c
In 12c
Verhalten / Features / Bugs
Oracle / Gateway (3)
Oracle RDBMS vs. SQL Server37 9/6/2018
Oracle puffert die Metadaten verwendeter Objekte
Wird ein Objekt nach der Verwendung von Oracle auf SQL Server Seite strukturell
geändert, ist die alte Struktur weiter präsent und es kommt zu Fehlermeldungen
Abhilfe: Rollback!!!
Transaktionen werden durch explizites commit abgeschlossen
Verhalten / Features / Bugs
Oracle / Gateway (4)
Oracle RDBMS vs. SQL Server38 9/6/2018
Die Gateway-Installation ändert die TNS Umgebung, so dass der Listener aus dem
neuen GW_HOME verwendet wird (12c, 18c OK)
Dem entsprechend müssen Konfigurationen der TNS-Parameterdateien im GW-
Home durchgeführt werden (12c, 18c OK)
Default Authentifizierung: DB
Verhalten / Features / Bugs
MSSQL / Linked Server (1)
Oracle RDBMS vs. SQL Server39 9/6/2018
Transaktionen werden implizit nach jedem DML-Statement abgeschlossen
Transaktionsverhalten entsprechend Oracle möglich mit
• set xact_abort on
• begin distributed transaction
• …
• go
Für alle OLE DB Provider inkl. SQL Server erforderlich, außer, wenn der OLE DB
Provider geschachtelte Transaktionen zulässt
Verhalten / Features / Bugs
MSSQL / Linked Server (2)
Oracle RDBMS vs. SQL Server40 9/6/2018
Default Authentifizierung: OS
Mengendifferenz „except“ statt „minus“
Oracle RDBMS vs. SQL Server41 9/6/2018
Demos
Demo 1: SQL Statements SQL Server Oracle
Oracle RDBMS vs. SQL Server42 9/6/2018
Demo: Benutzung der üblichen SQL-Server Syntax
Vorteil: relativ einfach
Nachteil: SQL Server holt sich die Daten vom Linked Server (hier Oracle) und führt
die Abfrage aus relativ langsam, insbesondere bei Joins
insert into [MSSQL_2_P_GWDEMO]..[RKL].[DEMO_1] values(1,'Erste Zeile')
Demo 2: SQL Statements SQL Server Oracle
Oracle RDBMS vs. SQL Server43 9/6/2018
Demo: Benutzung der openquery Syntax
Vorteil: pass-through query, Abfragen werden auf dem Linked Server ausgeführt,
schneller, insbesondere bei größeren Joins oder relativ kleiner Ergebnismenge
Nutzung existierender Indizes auf dem Linked Server
Es werden nur die Ergebnisse der Abfrage zurückgeliefert
insert into openquery ( MSSQL_2_P_GWDEMO, 'select * from DEMO_2 where 0=1')
values (1,'Erste Zeile')
Demo 3: SQL Statements SQL Server Oracle
Oracle RDBMS vs. SQL Server44 9/6/2018
Demo: Direktes Übertragen von Statements an Oracle mittels exec()
Vorteil: Der komplette in der exec-Klammer stehende String wird 1:1 an Oracle zur
Bearbeitung übergeben
– Performance
Keine Einschränkung auf DML-Statements, auch DDL, DCL, TCL sind möglich
PL/SQL ist ebenfalls möglich
exec ('create table demo_3( id number, contents varchar2(20))') at
MSSQL_2_P_GWDEMO;
SQL Statements Oracle MSSQL Server
Oracle RDBMS vs. SQL Server45 9/6/2018
Übliche, von der Verwendung von Datenbank-Links her bekannte Syntax
Einige von Oracle her bekannte Tabellen/Views werden vom Gateway simuliert
Beispiele:
– dual
– all/dba_users
– user/all/dba_cons_columns
Demo 4: SQL Statements Oracle SQL Server
Oracle RDBMS vs. SQL Server46 9/6/2018
Demo: Anlegen einer lokalen Kopie einer SQL Server Tabelle
Mengendifferenzbildung SQLSRV Datensätze - kopierte Datensätze
Timing Mengendifferenzbildung
Rainer Klomps
Senior Consultant
Tel. +49 162 292 34 36
9/6/2018 Oracle RDBMS vs. SQL Server47