Adattárház rendszerek összehasonlító elemzése

Ma a neten böngészgetve a SZTAKI oldaláról eljutottam Sidló Csaba honlapjáig, ahol fent van a diplomamunkája is, melynek témája az adattárházak összefoglaló jellegű, általános bemutatása, valamint az Oracle és az SAP adattárház megoldásainak összehasonlítása.

A tartalomjegyzéket átfutva biztos vagyok benne, hogy hasznos olvasmány a téma iránt érdeklődők számára!

BIC2G és MS SQL Server

Ma ismét nekifutottam, hogy rávegyem az Oracle BI Server-t, hogy ugyan csatlakozzon már az én kis Microsoft SQL Server 2000-emhez, ugyanis ezt eddig még sehogy sem sikerült elérnem. A legnagyobb gondom az volt, hogy nem találtam olyan ODBC driver-t, amivel csatlakozni is lehet, és még a BIEE is szereti. Egész egyszerűen azért nem találtam, mert azt sem tudtam, hogy hol keressem.. Van ugyanis egy odbc.ini a /ora/biee/10.1.3.2/OracleBI/setup könyvtárban, de nem tudtam, hogy mit írjak a Driver=/ora/biee/10.1.3.2/OracleBI/server/Bin/libnqsodbc.so sor helyére.

Mivel tegnap sikerült az adatbázis szerverből csatlakozni a hs segítségével, gondoltam kipróbálom a FreeTDS driverét:

[ODBC Data Sources]
AnalyticsWeb=Oracle BI Server

Cluster=Oracle BI Server
SSL_Sample=Oracle BI Server
InFoRex=InFoRex Source


[InFoRex]

Driver=/usr/local/lib/libtdsodbc.so
Server=192.168.1.100

Description=InFoRex Data Source
UID=sa
PWD=sa

Database=InFoRex

Port=1433

TDS_Version=8.0


És láss csodát:


Nem csalás, nem ámítás, a Profiler-ből látszódik, valóban az SQL Server-ből szedte ki a nevemet :)

Csatlakozás Oracle adatbázisból MS SQL Server-hez Linux alatt

Előfordulhat, hogy valaki egy Oracle adatbázisból egy másik, külső adatbázis szerverhez szeretne csatlakozni. Például Oracle Warehouse Builder-ben szeretne adatforrásnak SQL Server-t használni. Ennek a megvalósítására számos (1 2 3) leírás létezik, én viszont szerettem volna kicsit komplikálni a szituációt (csesszünk ki magunkkal mozgalom): az Oracle adatbázis Linux alatt fut (VMware image-ben), és ingyenes drivereket szeretnék használni.

Oracle alól ODBC-vel (vagy JDBC-vel) lehet külső szerverekhez kapcsolódni a heterogeneous services segítségével. Tehát először is szükség van egy linuxos ODBC megvalósításra, legyen ez a unixODBC.

unixODBC-vel SQL Server-hez többféle módon is lehet kapcsolódni: vagy használjuk az EasySoft driver-ét (30 napos trial verzió, avagy 500 angol font), vagy FreeTDS segítségével, ami egy ingyenes TDS (Tabular Data Stream) implementáció. Én mindkettőt kipróbáltam, az EasySoft driverével szinte minden ment azonnal, viszont kicsit drága. A unixODBC + FreeTDS kombó habár ingyenes, közel sem annyira triviális a beállítása.

Első lépésben nem árt feltelepíteni mindkettőt:

# wget http://www.unixodbc.org/unixODBC-2.2.12.tar.gz
# tar zxvf unixODBC-2.2.12.tar.gz
# cd unixODBC-2.2.12
# ./configure –-enable-gui=no
# make
# make install
# wget http://ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz
# tar zxvf freetds-stable.tgz
# cd freetds-0.82
# ./configure --with-tdsver=8.0 --with-unixodbc=/usr/local
# make
# make install

Ezek után már indulhat a móka, vi-re fel!

# cd /usr/local/etc/
# vi odbcinst.ini

[FreeTDS]
Description = FreeTDS Driver
Driver = /usr/local/lib/libtdsodbc.so
UsageCount = 2
TDS_Version = 8.0


# vi odbc.ini
[Northwind]
Driver = /usr/local/lib/libtdsodbc.so
Description = Northwind DSN
Trace = Yes
# ide fogunk logolni
TraceFile = /tmp/sql.log
ForceTrace = Yes
# az SQL Server IP cime ez
Server = 192.168.1.100
Database = Northwind
Port = 1433
# SQL Server 2000-t hasznalunk
TDS_Version = 8.0

# vi freetds.conf

# A typical Microsoft server
[TZ]
host = 192.168.1.100
port = 1433
tds version = 8.0

Akkor teszteljük is le azt, amit eddig műveltünk. Jár a FreeTDS-hez egy tsql nevű utility, ami tökéletesen megfelel diagnosztikai célokra:

# tsql -S TZ -U sa
locale is "en_US.UTF-8"
locale charset is "UTF-8"
Password:
1> select 1
2> go

1
(1 row affected)
1> quit
#

Juhé, a FreeTDS-st sikeresen beállítottuk, nézzük mi a helyzet az ODBC-vel:

# isql -v Northwind sa sa
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL> select 1
+------------+
| |
+------------+
| 1 |
+------------+
SQLRowCount returns 1
1 rows fetched
SQL> quit

Ez eddig már fél siker! Most már „csak” az Oracle db-t kell rávenni, hogy csatlakozzon ő is:

# cd $ORACLE_HOME/hs/admin
# vi tnsnames.ora

hsodbc =
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)
(HOST=localhost)
(PORT=1521))
(CONNECT_DATA=(SID=hsodbc))
(HS=OK)
)


# vi listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /ora/db/10.2.0)
(PROGRAM = extproc)
)
(SID_DESC=
(SID_NAME=hsodbc)
(ORACLE_HOME=/ora/db/10.2.0)
(PROGRAM=hsodbc)
)
)

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
)

HSODBC =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))
(ADDRESS=(PROTOCOL=ipc)(KEY=PNPKEY))
)
)

Ezek után szükség van egy inicializáló fájlra is, aminek a neve init.ora kell, hogy legyen. Ebben a példában inithsodbc.ora:

# vi inithsodbc.ora
# This is a sample agent init file that contains the HS parameters that are
# needed for an ODBC Agent.

#
# HS init parameters
#
HS_FDS_CONNECT_INFO = "DSN=Northwind;UID=sa;PWD=sa"
HS_FDS_SHAREABLE_NAME = /usr/lib/libodbc.so

#
# ODBC specific environment variables
#

#
# Environment variables required for the non-Oracle system
#
#set =


Ennél a pontnál nem tudom pontosan, hogy újra kell-e indítani valamit vagy sem, mindenesetre én újraindítottam az egész gépet :)
Jöjjön az utolsó ellenőrzés:

# cd $ORACLE_HOME/bin
# ./tnsping hsodbc

TNS Ping Utility for Linux: Version 10.2.0.3.0 - Production on 05-JUL-2008 07:48:23

Copyright (c) 1997, 2006, Oracle. All rights reserved.

Used parameter files:


Used TNSNAMES adapter to resolve the alias

Attempting to contact (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)) (CONNECT_DATA= (SID=hsodbc)) (HS=OK))
OK (20 msec)

Ez az OK mondja meg nekünk, hogy jók vagyunk! Akkor hozzuk létre az adatbázis linket, lépjünk be a kedvenc SQL konzolunkba:

# sqlplus tz@orcl
SQL*Plus: Release 10.2.0.3.0 - Production on Sat Jul 5 07:52:29 2008

Copyright (c) 1982, 2006, Oracle. All Rights Reserved.

Enter password:

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production
With the Partitioning, Oracle Label Security, OLAP and Data Mining Scoring Engine options

SQL> CREATE DATABASE LINK HSTEST CONNECT TO sa IDENTIFIED BY sa USING 'HSODBC';

Database link created.

SQL> SELECT COUNT(*) FROM Customers@hstest;

COUNT(*)
----------
91

Ezzel meg is volnánk, mostantól használhatjuk az előbb elkészített linket akár Warehouse Builder-ben, akár máshol.