Fortuna Entwickler Blog

Hier wird Ihnen geholfen

Datenübername MV: OASIS/LIFE/COR_ADMIN

Im Rahmen des Projektes MV sind diverse Versicherungsdaten aus MV Systemen in myLife System zu übernehmen.

Tätigkeiten zur Übernahme von Personendaten:

OASIS, LIFE und COR_ADMIN werden benötigt. Das eigentliche 'Zusammentragen' der Daten geschieht auf Mig_MVR

Mig_MVR benötigt Zugriff auf COR_ADMIN, LIFE und OASIS:

-- Ausführen auf COR_ADMIN
select  'grant select on COR_ADMIN.'||object_name||' to Mig_MVR with Grant Option;'
from    all_objects 
where   object_type in ('VIEW','TABLE')
and     object_name not like 'BIN$%==$0'
and owner = 'COR_ADMIN'

UNION

select  'grant execute on COR_ADMIN.'||object_name||' to Mig_MVR with Grant Option;'
from    all_objects 
where   owner = 'COR_ADMIN'
and     object_name not like 'BIN$%==$0'
and object_type in ('FUNCTION', 'PROCEDURE', 'PACKAGE');


-- Ausführen auf OASIS
select  'grant select on OASIS.'||object_name||' to Mig_MVR with Grant Option;'
from    all_objects 
where   object_type in ('VIEW','TABLE')
and     object_name not like 'BIN$%==$0'
and owner = 'OASIS'

UNION

select  'grant execute on OASIS.'||object_name||' to Mig_MVR with Grant Option;'
from    all_objects 
where   owner = 'OASIS'
and     object_name not like 'BIN$%==$0'
and object_type in ('FUNCTION', 'PROCEDURE', 'PACKAGE');


-- Ausführen auf LIFE
select  'grant select on LIFE.'||object_name||' to Mig_MVR with Grant Option;'
from    all_objects 
where   object_type in ('VIEW','TABLE')
and     object_name not like 'BIN$%==$0'
and owner = 'LIFE'

UNION

select  'grant execute on LIFE.'||object_name||' to Mig_MVR with Grant Option;'
from    all_objects 
where   owner = 'LIFE'
and     object_name not like 'BIN$%==$0'
and object_type in ('FUNCTION', 'PROCEDURE', 'PACKAGE');

Die Ausgaben der Statements müssen wiederum jeweils auf den beschriebenen Servern ausgeführt werden.

Zusätzlich braucht Mig_MVR noch weitere Berechtigungen:

grant select on BANK to Mig_MVR with Grant Option;

Auf Mig_MVR werden anschliessend diverse Views angelegt (MYLIFE_Mig_MVR_VIEWS.sql (14,39 kb)).

 

Oracle als Linked Server in SQL Server eintragen

Um aus einem SQL Server heraus auf eine Oracle Datenbank zuzugreifen benötigt man auf dem SQL Server Rechner ein paar Einstellungen / Programme:

1: \\VCENTER2\Entwickler-Tools\Datenbank\Oracle\ODAC1120320_x64.zip entpacken und setup.exe ausführen

(bei 32bit Systemen verwendet man ODAC1120320Xcopy_32bit.zip im gleichen Verzeichnis)

2: Durch die Installation einfach durchklicken und Standard installieren

3: Im SQL Server Manager gibt es nun unter Serverobjekte -> Verbindungsserver -> Anbieter einen Eintrag OraOLEDB.Oracle. Bei diesem Eintrag in den Eigenschaften muss die Option In Process zulassen gesetzt werden.

4: tsnames.ora und sqlnet.ora anpassen. Beispiele:

sqlnet.ora:

# SQLNET.ORA Network Configuration File: C:\ora92\network\admin\sqlnet.ora
# Generated by Oracle configuration tools.
NAMES.DEFAULT_DOMAIN = gutingia.local
SQLNET.AUTHENTICATION_SERVICES= (NONE)
NAMES.DIRECTORY_PATH= (TNSNAMES, HOSTNAME)

tsnames.ora:

DBWEB1.gutingia.local =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = DBWEB1)(PORT = 1521)))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID = DBWEB1)))

DBWEBTESTDMZ1.gutingia.local =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = DBWEBTESTDMZ1)(PORT = 1521)))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID = DBWEBTESTDMZ1)))

DBWEBENTW3.gutingia.local =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = DBWEBENTW3)(PORT = 1521)))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID = DBWEBENTW3)))

DBPROD1.gutingia.local =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = DBPROD1)(PORT = 1521)))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID = DBPROD1)))

TWDB.gutingia.local =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = TWDB)(PORT = 1521)))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID = ventaDB)))

5: einen Linked Server erstellen und Zugriff testen. Beispiel:

EXEC master.dbo.sp_addlinkedserver @server = N'ENTWWEB01', @srvproduct=N'OraOLEDB', @provider=N'OraOLEDB.Oracle', @datasrc=N'DBWEBENTW3'
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'ENTWWEB01',@useself=N'False',@locallogin=NULL,@rmtuser=N'WEBDATA',@rmtpassword='######'

EXEC master.dbo.sp_addlinkedserver @server = N'ENTWWEB02', @srvproduct=N'OraOLEDB', @provider=N'OraOLEDB.Oracle', @datasrc=N'DBWEBENTW3'
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'ENTWWEB02',@useself=N'False',@locallogin=NULL,@rmtuser=N'WEBFRW',@rmtpassword='######'

EXEC master.dbo.sp_addlinkedserver @server = N'ENTWWEB03', @srvproduct=N'OraOLEDB', @provider=N'OraOLEDB.Oracle', @datasrc=N'DBWEBENTW3'
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'ENTWWEB03',@useself=N'False',@locallogin=NULL,@rmtuser=N'WEBSERVICES',@rmtpassword='######'
GO


6: Erledigt. Jetzt ist z.B. Sowas möglich:

SELECT * 
    FROM ENTWWEB03..WEBSERVICES.ASPNET_USERS au
    INNER JOIN ENTWWEB03..WEBSERVICES.ASPNET_USER_EXTENSIONS aue ON au.USERID = aue.USERID
    INNER JOIN PRODDB01..GUTINGIA.P p ON aue.PNR = p.p_NR AND p.HIST_KZ = 2;

Also JOINs über verschiedene Users hinweg. Ohne Synonyme und Ähnliches.

Datenimport Münchener Verein

Aktuell werden zwei Excel-Tabellen zur Verfügung gestellt:

  • Attributkatalog.xslx enthält eine Beschreibung zu allen Attributen/Feldern für die Importtabellen
  • Daten.xslx enthält mit insgesamt 8 Sheets die eigentlichen Daten

Die Solution für den Datenimport findet man unter $/Fortuna/Tools/Fortuna.MuenchenerVerein. In der Solution sind auch die beiden o.a. Excel-Sheets hinzugefügt.

Der eigentliche Import läuft ohne eigenes interface/ohne Applikation, sondern man fürht in Visual Studio schlicht die in der Solution enthaltenen Tests durch. Diese holen sich je Tabelle aus dem Attributkatalog.xslx die relevanten Felder, suchen je Feld und Satz die zugehörigen Daten und Speichern diese - ggf. nach Tranformation - in die Datenbank ab.

 

Übersicht CZ Case

Für den Datenaustausch zwischen BCAS (Tschechien) und myLife wurde die DataExchangeServices erstellt. Die Services werden von BCAS aufgerufen, Daten übermittelt und ggf. Daten abgefragt.

Die Quellen zu den Services findet man im TFS unter $/Fortuna/Services/DataExchangeServices

Die Datenbanktabellen sind unter WEBDATA, sowohl in der Entwicklungsumgebung, der Testumgebung als auch der Produktivumgebung verfügbar. Innner halb des Projektes im TFS gibt es ein SQL-Script, in welches man Änderungen an den Tabellen einarbeiten kann, bei Ausführung werden dann bisherige Daten gespeichert, die geänderten Tabellen geschrieben und anschließend wieder ggf. mit des alten Daten gefüllt.

Aufrufbar sind die Services unter
http://test.mylife-leben.de/Services/DataExchangeServices/BCAS.asmx (Test)
https://fortuna.mylife-leben.de/services/dataexchangeservices/bcas.asmx (Produktiv)

Produktiv genutzt werden Stand 1.9. die Services für policies und payments. Hier weden von BCAS nun monatlich, immer um den 20. eines Monats, Daten geliefert.