zSeries Migrationskonzepte

Werbung
Donnerstag, 10. November 2005
11h00, Variohalle 6
Database
zSeries Migrationskonzepte
Thomas Niewel
ORACLE Deutschland GmbH, München
Schlüsselworte:
Datenbanktechnologie, Migration
1. Einleitung
Eine Vielzahl von operativen Systemen wird auf zSeries Mainframe-Systemen betrieben. Begründet durch
die Historie von Mainframes basieren diese Anwendungssysteme auf Softwaretechnologien, die aus heutiger Sicht wenig flexibel und teuer zu betreiben sind. Aus diesem Grunde besteht in vielen Unternehmen
der Wunsch diese Anwendungssysteme auf „moderne“ Plattformen zu portieren. Dieser Beitrag gibt eine
Übersicht über Migrationskonzepte für DB2- und IMS-Datenbestände. Des Weiteren werden Szenarien
beleuchtet, wie eine Migrationsstrategie von Anwendungssystemen gestaltet werden kann.
Klassische Anwendungen in der zSeries Welt haben folgende Architektur:
Abb. 1: Architektur von „klassischen“ z/OS Anwendungen
In der Vergangenheit war die klassische Schnittstelle zu Anwendern eine 3270 Oberfläche. In einer solchen Umgebung wird das Transaktions-Management durch TP Monitore wie IMS/TM oder CICS/TS
durchgeführt. In der Regel basiert die Datenhaltung auf folgenden Systemen:
• DB2 for z/OS
• IMS/DB , IDMS, ADABAS/C
• File Systeme wie z.B. VSAM (in Einzelfällen)
2. Migration von DB2 for z/OS Datenbeständen
DB2 for z/OS ist wie Oracle ein RDBMS. Aus diesem Grunde kann das Datenmodell problemlos in die
Oracle Welt übernommen werden. Die Datentypen von DB2 for z/OS können bis auf wenige Ausnahmen
in Oracle Datentypen überführt werden.
Database
DB-Entwicklung
18. Deutsche ORACLE-Anwenderkonferenz
2.1 Anlegen der Datenbankobjekte
Die folgende Tabelle beschreibt die Konvertierungsregeln für DB2-Feldtypen, die in die Oracle Welt überführt werden sollen.
DB2 Datentyp
CHAR(N)
VARCHAR(N)
LONG VARCHAR(N)
CHAR(N)
FOR BIT DATA
VARCHAR(N)
FOR BIT DATA
LONG VARCHAR(N)
FOR BIT DATA
DATE
TIME
TIMESTAMP
GRAPHIC(N)
VARGRAPHIC(N)
LONG VARGRAPHIC(N)
FLOAT(N) (single)
FLOAT(N) (double)
Decimal(P,S)
INTEGER
SMALLINT
ROWID
BLOB
CLOB
Oracle Datentyp
CHAR(N)
VARCHAR2(N)
CLOB
LONG
VARCHAR2(N)
CLOB
LONG
RAW(N)
BLOB
RAW(N)
LONG RAW
BLOB
RAW(N)
LONG RAW
BLOB
DATE
CHAR(8)
DATE
TIMESTAMP(0)
CHAR(2N+2)
VARCHAR2(2N+2)
VARCHAR(2N+2)
FLOAT(21)
FLOAT(53)
NUMBER(P,S)
NUMBER(10)
NUMBER(5)
RAW(40)
BLOB
CLOB
Bemerkung
N<=4000
N>4000
N>4000
N=<4000
N>4000
N>4000
1=<N=<2000
2000<=N<DB2 maximum long value
1=<N=<2000
2000<N=<DB2 maximum long value
1<=N<=21
22<=N<=53
Abb. 2: DB2 for z/OS und Oracle Datentypen
2.2 Migration der Datenbestände
Die Migration von DB2 Datenbeständen kann mit folgendem Verfahren durchgeführt werden:
1. Entladen der DB2 Daten / Laden der Daten in die Oracle Welt
2. Datentransfer durch ein Oracle Transparent Gateway
2.2.1 Entladen/Laden der DB2 Daten
Die DB2 Tabellen können durch das Programm DSNTIAUL entladen werden. Ab der Version 7 von DB2
for z/OS kann auch das DB2 Utility Unload verwendet werden. Das Programm DSNTIAUL erzeugt zwei
Ausgabedateien
• Loader Control Statements
• Datendateien
Es ist notwendig, die Loader Control Statements beim Transfer in ASCII zu konvertieren.
Die von DSNTIAUL erzeugten Datenbestände müssen im Binärformat übertragen werden.
2.2.1.1 Loader Control Statements
DSNTIAUL generiert Loader Control Statements im DB2-Loader Format. Diese Statements sind zu einem
großen Teil Oracle-kompatibel; sie müssen jedoch angepasst werden.
Das von DSNTIAUL generierte Load Control Statement muss um Oracle spezifische Zusatzinformationen
erweitert werden:
• Characterset
• Satzlänge des von DSNTIAUL erzeugten Datenbestandes
• Die Information, dass der Datenbestand von einer „Big Endian“ Maschine stammt
Ein derart modifiziertes Load Statement hat folgendes Format:
LOAD DATA CHARACTERSET D8EBCDIC273 byteorder big infile file location "FIX 59" REPLACE into
TABLE tablename.
Im nächsten Schritt ist es notwendig die Datentypen im Loader Control Statement anzupassen. Häufige
Anpassungen sind:
• Hinzufügen von Masken für Date und Timestamp Felder
– DATE „DD.MM.YYYY“ (Installationsabhängig)
– TIMESTAMP „YYYY-MM-DD.HH24.MI.SS.ff6“
• Nicht kompatible Datentypen (siehe Abbildung 2) sollten ebenfalls im Loader Script angepasst werden.
VARCHAR Spalten, mit einer Länge von mehr als 4000 Bytes müssen im Oracle Loader Format VARCHARC geladen werden. Das Format VARCHARC besteht aus einer Längeninformation (bei einem Datentyp VARCHAR(32000) ist diese Längeninformation 5 Bytes) und dem Datenteil. Da das DB2 Utility
DSNTIAUL diese Längeninformation nicht bereitstellt, muss DSNTIAUL die Daten mit Hilfe einer customized SQL Query entladen.
2.2.2 Datentransfer durch Transparent Gateways
Die Oracle Transparent Gateways (Transparent Gateway for DB2, Transparent Gateway for DRDA) bieten
die Möglichkeit, mit Hilfe von SQL auf DB2 Daten zuzugreifen. Die Konvertierung der Datentypen wird
von den Oracle Transparent Gateways vorgenommen. Die Tabellen-Daten-Migration von DB2 nach Oracle kann mit Hilfe von SQL*PLUS wie folgt durchgefürt werden:
o CREATE TABLE EMP AS SELECT * FROM SCOTT.EMP@DB2;
o INSERT INTO EMP SELECT * FROM SCOTT.EMP@DB2;
o COPY FROM SCOTT/TIGER@gateway INSERT EMP
USING SELECT * FROM SCOTT.EMP@DB2;
2.3 Migration von 3GL Anwendungen
3GL Anwendungen nutzen in fast allen Fällen statisches SQL, um auf DB2 Datenbanken zuzugreifen. Die
SQL Statements werden durch Nutzung des DB2 Precompilers(DSNHPHC) „kompiliert“. Durch einen
Bind Prozess werden diese SQL Statements dann in der DB2 Datenbank gespeichert.
Um mit 3GL Programmen auf Oracle Datenbanken zuzugreifen, ist es notwendig einen Oracle Precompiler zu nutzen. Dieser Precompiler ist für COBOL, PLI und Fortran verfügbar.
Grundsätzlich ist der DB2-SQL-Dialekt „relativ“ verträglich mit dem Oracle-SQL-Dialekt. Je nach genutzen SQL Funktionalitäten sind kleinere Änderungen erforderlich.
Bedingt durch das DB2 Locking- und Performance-Verhalten ist es notwendig DB2-SQL Erweiterungen zu
entfernen. Beispiele für solche Optionen sind:
• For Fetch Only
• With UR (Isolation Overriding)
In die allgemeinen Fehlerroutinen von DB2-Anwendungsprogrammen ist in der Regel das Programm
DSNTIAR eingebunden. Um den Migrationsaufwand gering zu halten stellt Oracle eine eigene Version
dieses Programmes zur Verfügung.
3 IMS/DB Datenbanken
IMS/DB Datenbanken sind hierarchische Datenbanken, auf die mit Hilfe von DL/1 Calls zugegriffen wird.
SQL wird als Abfragesprache für diese Datenbanken nicht standardmässig unterstützt.
Database
DB-Entwicklung
18. Deutsche ORACLE-Anwenderkonferenz
3.1 Überführen des IMS-Datenmodells in eine relationale Struktur
Eine IMS/DB Datenbank besteht aus sogenannten Segmenten. Diese Segmente sind durch hierarchische
Strukturen verbunden.
Abb. 3: IMS/DB Datenbank mit Segmenten Kunde, Auftrag, Adresse, Mahnung und Lieferung
Um solche abhängigen Segmente in ein relationales Oracle Schema zu überführen empfiehlt sich eine
Überführung von IMS-Segmenten in relationale Tabellen (1 Segment = 1 Tabelle). Die IMS-Segment-Hierarchie kann in der relationalen Welt durch „Referential Integrity“ abgebildet werden.
Beispiel einer IMS-Segmentbeschreibung:
Abb. 4: IMS Definitionen (SEGMENT Makro)
Die aus diesen Makro-Aufrufen abgeleitete Oracle-DDL sieht wie folgt aus:
Abb. 5: Überführtes Datenmodell
3.2 Migration der Datenbestände
Je nach Datenbankdesign können die Daten mit IMS Utilities(z.B. IMS Unload FABHURG1 oder 3rd Party
Tools) entladen werden. Je nach Komplexität des Datenbankdesigns kann es aber auch notwendig sein,
spezielle Entlade-Programme für IMS Datenbanken zu kodieren.
Die beim Entladevorgang entstandenen sequentiellen Dateien können dann mit dem SQL*Loader in die
Oracle Welt geladen werden. Es empfiehlt sich, Scripts für die Generierung der Oracle-Loader-ControlStatements zu nutzen.
3.2.1 Datentransfer durch das Transparent Gateway for iWay
Das Oracle Transparent Gateway for iWay bietet die Möglichkeit, mit Hilfe von SQL auf IMS/DB Daten
zuzugreifen. Die Konvertierung der Datentypen wird vom Oracle Transparent Gateway for iWay vorgenommen. Die IMS/DB Datenmigration kann wie bei den Transparent Gateways for DB2/DRDA mit Hilfe
von SQL*PLUS durchgeführt werden.
o CREATE TABLE EMP AS SELECT * FROM SCOTT.EMP@IMS;
o INSERT INTO EMP SELECT * FROM SCOTT.EMP@IMS;
o COPY FROM SCOTT/TIGER@IMS INSERT EMP
USING SELECT * FROM SCOTT.EMP@IMS;
Database
DB-Entwicklung
18. Deutsche ORACLE-Anwenderkonferenz
3.3 Anwendungsprogramme
Anwendungsprogramme, die auf IMS-Datenbestände zugreifen, nutzen DL/1-Aufrufe, die in 3GL-Programme eingebettet sind. Folgende DL/1-Funktionalitäten sind verfügbar, um auf IMS/DB-Datenbestände
zuzugreifen
Abb. 6: DL/1 Aufrufe
Wie aus der Abbildung 6 ersichtlich, sind DL/1 Calls nicht mit SQL vergleichbar. Aus diesem Grunde
müssen die DL/1 Aufrufe der bestehenden Anwendungen in entsprechende SQL Zugriffe umgewandelt
werden.
4. Migrationsstrategien
Klassische Hostumgebungen nutzen IMS/TM und CICS/TS als Transaktionsmonitor. Programme, die von
einem Transaktions-Monitor aufgerufen werden, greifen in der Regel auf z/OS Datenbestände zu. Oracle
bietet die Möglichkeit z/OS als Client Plattform für Oracle Datenbanken zu betreiben. Folgende z/OS
Applikationen können plattformunabhängig auf Oracle Datenbanken zugreifen:
• TSO Anwendungen
• z/OS Batches
• Anwendungen unter Unix System Services(USS)
• IMS Anwendungen (durch „Oracle Access Manager for IMS“)
• CICS/TS Anwendungen (durch „Oracle Access Manager for CICS“)
Diese Möglichkeiten erlauben eine phasenweise Migration von z/OS Anwendungen, um Risiken zu
begrenzen.
Die erste Phase einer solchen Migration ist die Datenmigration in die Oracle Welt. Durch die Oracle Integrationsprodukte können die Anwendungen weiterhin unter z/OS betrieben werden. Die zweite Phase des
Migrationsprojektes ist die Migration der Anwendungsysteme auf eine kostengünstigere Zielplattform.
Kontaktadresse:
Thomas Niewel
ORACLE Deutschland GmbH
Riesstr. 25
D-80992 München
Telefon:
Fax:
E-Mail :
Internet:
+49(89)1430-1899
+49(89)1430-1572
[email protected]
www.oracle.de
Herunterladen