Oracle GW / MSSQL Linked Server - doag.org€¦ · Agenda 2 9/6/2018 Oracle RDBMS vs. SQL Server 1....

Preview:

Citation preview

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

Rainer.klomps@trivadis.com

9/6/2018 Oracle RDBMS vs. SQL Server47

Recommended