• No results found

Accessing SQL Server Data from Oracle on Linux. for FREE!

N/A
N/A
Protected

Academic year: 2021

Share "Accessing SQL Server Data from Oracle on Linux. for FREE!"

Copied!
29
0
0

Loading.... (view fulltext now)

Full text

(1)
(2)

Accessing

SQL Server Data from Oracle on Linux

for FREE!

COUG 15-NOV-2012 Wayne Linton

(3)

Wayne Linton

OCP, I.S.P.

● Over 40 years in IT

● More than half that as an Oracle DBA

● 35 years at Shell Canada Limited

● SAIT Instructor

● Past-President COUG

● Presenter at OOW, Oracle Days, COUG

(4)

● Established 1999

● Remote and on-site DBA support

● Application Express Design/Development

● Training

(5)

Why do this?

● Companies may have a number of databases

on different platforms and DBMS offerings

● Vendor software might only run on MSSQL

● Want a central 'truth' of data to pull from

● Want a central warehouse to represent all data

(6)

Open Database Connectivity

● OS independent, vendor neutral API

● Mainly used to access Databases via SQL

● Built in early '90s by Microsoft, in concert with

Oracle, Apple, Sun, DEC, Sybase, Tandem, Lotus and others – ISO Standard

● Unix community picked up ODBC when MS

moved its focus to OLE-DB (JDBC is java equivalent )

(7)

ODBC

● Commonly used in Windows with Excel and

Access database

● OS provides driver manager (unixODBC)

● DBMS driver typically supplied by vendor

● Vendor drivers available at cost such as:

● Oracle gateway products (dg4msql) ● easysoft

(8)

ODBC Driver

● Translation layer between SQL and DBMS

● Large subset of standard SQL functionality

● 3rd Party vendors sell “better” drivers

● Available for Oracle, MySQL, MSSQL, DB2,

Progress, Sybase, etc.

(9)

ODBC Driver Manager

● Delivered with OS

● Loads ODBC Driver appropriate to DBMS data

source

● Free Open Source implementation on 'nix

(10)

SQL Server Driver

● Released in the spring of 2012

● Available on 64-bit Linux v5 or v6 only

● Free to use

● SQL Server 2008 R2, and SQL Server 2012

● Download at:

(11)

Demo Environment

● Laptop, 8gb, 64-bit, Windows 7

● VirtualBox, Win7, SQL Server 2012 (PC7C)

● VirtualBox, CentOS 5.8, 64-bit, Oracle

(12)

SQL Server (PC7C) ODBC Driver /opt/microsoft/sqlncli/lib64/libsqlncli-11.0.so.1790.0 /etc/odbcinst.ini ODBC Manager unixODBC v2.3.0 /etc/odbc.ini TCP/IP sqlcmd Oracle Oracle Net HS dg4odbc SQL*Plus

select * from <tab>@<alias> isql

(13)

● Database Gateway For ODBC

Oracle® Database Gateway for ODBC User's Guide 11g Release 2 (11.2)

● Comes installed with database

$ORACLE_HOME/hs/lib/dg4odbc.o

● Connects Oracle to ODBC via Heterogeneous

Services (HS)

Oracle® Database Heterogeneous Connectivity User’s Guide11g Release 2 (11.2) Oracle® Database Gateway Installation and Configuration Guide

● Other gateways available for cost (dg4mssql)

Oracle

Oracle Net

HS dg4odbc

SQL*Plus

(14)

Installation – Driver Manager

● Download the MS SQL Server ODBC file

(detailed instructions on the download site)

– Login as root

– tar xvf sqlncli-11.0.1790.0.tar.gz – yum remove unixODBC

– cd ./sqlncli-11.0.1790.0

(15)

Installation – ODBC Driver

● Still logged in as root ....

– cd ./sqlncli-11.0.1790.0 – ./install.sh verify

– ./install.sh install

– odbcinst -q -d -n "SQL Server Native Client 11.0"

● Test the driver against the SQL Server database:

(16)

SQL Server (PC7C) ODBC Driver /opt/microsoft/sqlncli/lib64/libsqlncli-11.0.so.1790.0 /etc/odbcinst.ini ODBC Manager unixODBC v2.3.0 /etc/odbc.ini TCP/IP sqlcmd isql (PC6VB2)

(17)

Configure odbcinst.ini

● Defines the ODBC Driver settings

● Should be created by the install process

● /etc/odbcinst.ini

[SQL Server Native Client 11.0]

Description=Microsoft SQL Server ODBC Driver V1.0 for Linux Driver=/opt/microsoft/sqlncli/lib64/libsqlncli-11.0.so.1790.0

Threading=1 UsageCount=1

(18)

Configure odbc.ini

● Defines Data Source Name connection

● /etc/odbc.ini (local ~/.odbc.ini)

[<dsn>]

Driver = SQL Server Native Client 11.0

Server = tcp:<mssql hostname or IP address>,1433

● Test the odbc settings:

isql <dsn> <user> <passwd>

select * from information_schema.schemata; quit;

(19)

SQL Server (PC7C) ODBC Driver /opt/microsoft/sqlncli/lib64/libsqlncli-11.0.so.1790.0 /etc/odbcinst.ini ODBC Manager unixODBC v2.3.0 /etc/odbc.ini TCP/IP sqlcmd Oracle Oracle Net HS dg4odbc SQL*Plus

select * from <tab>@<alias> isql

(20)

● Configure HS in $ORACLE_HOME/hs/admin ● Filename init<dsn>.ora (case matters!)

# Database Gateway for ODBC # # HS init parameters # HS_FDS_CONNECT_INFO = <dsn> HS_FDS_SHAREABLE_NAME = /usr/lib64/libodbc.so HS_LANGUAGE=AMERICAN_AMERICA.WE8ISO8859P15 HS_FDS_PROC_IS_FUNC = TRUE HS_FDS_RESULTSET_SUPPORT = TRUE

# Environment variables required for the non-Oracle system # set LD_LIBRARY_PATH=/opt/microsoft/sqlncli/lib64:/usr/lib64: Oracle Oracle Net HS dg4odbc SQL*Plus

(21)

● Connection to database HS is done via Oracle

Net

● Oracle Listener configured like:

(SID_DESC = (ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1) (SID_NAME = <dsn>) (PROGRAM = dg4odbc) (ENVS = "LD_LIBRARY_PATH=/opt/microsoft/sqlncli/lib64:/usr/lib64: /u01/app/oracle/product/11.2.0/dbhome_1/lib") ) Oracle Oracle Net HS dg4odbc SQL*Plus

(22)

● Tnsnames entry such as:

<alias> =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)

(HOST = <oracle db host>) (PORT = 1521)) (CONNECT_DATA = (SID = <dsn>)) (HS = OK) Oracle Oracle Net HS dg4odbc SQL*Plus

select * from <tab>@<alias>

(23)

Database Link

create public database link <dblink>

connect to <user> identified by <pswd> using '<alias>';

● You can not connect directly to SQL Server via

Oracle Net

(24)

Demos ...

● isql, sqlcmd

● DML and some functions

● DDL handling

● HS views

(25)
(26)

Dynamic Performance Views

● V$HS_PARAMETER

● V$HS_SESSION

(27)

Some Gotchas

● DDL

● Datatype conversion issues

● Special variables like SYSDATE

● Date arithmetic, different functions

● Optimizer statistics, execution plans

(28)

Summary

● ODBC-compliant databases can exchange data

● Free drivers available

● Doesn't do everything, but probably 'good

enough'!

● Viable solution for bringing in data from other

sources into one central database/warehouse (oh, and yes it works with 11gXE)

(29)

Questions?

Accessing

SQL Server Data from Oracle on Linux

for FREE!

COUG 15-NOV-2012 Wayne Linton

References

Related documents

This chapter provides instructions and tips on installing and configuring Microsoft Access, Microsoft SQL Server, and Oracle data sources for use with iFIX ODBC.. It includes

SSMA for Oracle V6.0 converts Oracle database objects (including stored procedures) to SQL Server database objects, loads those objects into SQL Server, migrates data from Oracle

SQL Server Integration Services (SSIS) – pump data from Oracle into SQL Server databases2. Linked server – run queries directly from SQL Server to

The Siemens Teamcenter® Oracle®-to-SQL Server 2008 Migration Guide describes how to migrate Teamcenter data from an Oracle database to a Microsoft SQL Server 2008 database.. This

To access the non- -Oracle data source using Generic Connectivity, the agent works Oracle data source using Generic Connectivity, the agent works with an ODBC driver1. The ODBC

• Execution time differences are negligible when running SQL queries using DataDirect Connect for ODBC wire protocol drivers or Oracle Call Interface with Net8. There is no

Microsoft ODBC Driver 11 for SQL Server is a single dynamic-link library (DLL) containing run-time support for applications using native-code APIs to connect to Microsoft SQL

Physical and Logical Structure 1.2 Data Types/Storage (Cont.).