DB2 – EINE AUFLISTUNG

Werbung
DB2 – EINE AUFLISTUNG
1. INHALTSVERZEICHNIS
2.
Allgemeines ............................................................................................................................................... 1
3.
Anlage benötigter Datasets....................................................................................................................... 2
4.
Gliederung von DB2 .................................................................................................................................. 2
5.
Einmaliges Einstellen der Subsystem Identifier (SSID) .............................................................................. 2
6.
SPUFI ......................................................................................................................................................... 3
7.
Anlegen einer DB2-Datenbank (komplett) ................................................................................................ 3
8.
Anlegen einer STORAGE GROUP (von Rechten abhängig) ....................................................................... 3
9.
Anlegen einer Datenbank (von Rechten abhängig) .................................................................................. 3
10.
Definition eines Tablespace ...................................................................................................................... 4
11.
Definition einer Table................................................................................................................................ 4
12.
Füllen einer DB2-Tabelle ........................................................................................................................... 5
13.
SELECT in einer DB2-Tabelle mit SPUFI ..................................................................................................... 5
14.
Entfernen/Löschen DB2-Elementen mit SPUFI ......................................................................................... 6
15.
Transaktionsverarbeitung und DB2 .......................................................................................................... 6
16.
Stored Procedures (auch TP light) ............................................................................................................. 6
17.
Transaktionsmonitoren (TP Monitor) ....................................................................................................... 7
18.
Sperren (lock) ............................................................................................................................................ 7
19.
Interessante Video-Links ........................................................................................................................... 7
2. Allgemeines




DB2 gibt es als „DB2“ für z/OS und als „DB2 UDB“ für Linux, Unix und Windows.
„DB2 express“ läuft auf Windows und ist kostenlos.
„DB2 Everyplace“ ist ein kleiner Bruder von „DB2 UDB“ für Mobiltelefonie ecc.
DB2 hat viele Schnittstellen zu anderen Systemen (Programmiersprachen wie COBOL, PL/1, Java usw.
oder Skriptsprachen wie REXX).

DB2 greift zum Optimieren der Zugriffe u.a. auf ein Expertensystem zu. Dieses arbeitet mit
Tabellenstatistiken. Diese Statistiken können mit dem Tool „RUNSTATS“ aktualisiert werden.
3. Anlage benötigter Datasets


In ISPF die Option 3.2 „Data Set Utility“ auswählen.
Vier neue Partitioned Dataset (PDS) allokieren – mit „A“ – für:
o CICS (für Programmcode, BMS (Masken), JCL)
o SPUFI (für DB2-Befehle – Anlegen, Ändern,
Indizieren, Löschen, Dateneinfügung usw.)
o DBMOD (für alle Ergebnisse aus Zwischenschritten)
o LIB (ebenfalls für alle Ergebnisse aus
Zwischenschritten)
4. Gliederung von DB2

DB2 besitzt eine vierteilige Hierarchie:
o Storage Group: ist die oberste Stufe (enthält physische Angaben zur Größe, Art und Ort der
benötigten Speichers im Speichermedium).
o Database: Jede Storage Group nimmt eine DB2-Database auf (Definition des
Datenbanknamens, des Caches (fixe Datenabbildung im Hauptspeicher, =Bufferpool).
o Table Space: Jede Database besitzt einen oder mehrere Table Spaces (Reservierung von
physischem Speicherplatz für die Tabelle).
o Table: Jeder Table Space enthält exakt eine Tabelle (Definition der Tabellenstruktur,
Tabellenname usw.).
o
5. Einmaliges Einstellen der Subsystem Identifier (SSID)




Folgendes ist nur bei erstmaliger Verwendung des DB2-Subsystems notwendig:
In ISPF folgendes Eingabepanel aufrufen: 1. „MORE“, 2. „DB2 V8“, 3. „DB2 DEFAULTS“.
Den „DB2 NAME“ (zu erfragen) und „DB2 CONNECTION RETRIES = 0“ eingeben (Rest unverändert).
Das Panel sollte ähnlich dem folgenden aussehen:
COMMAND ===>
Change defaults as desired:
1
2
3
4
5
6
7
8
9
10
DB2 NAME ............. ===>
DB2 CONNECTION RETRIES ===>
APPLICATION LANGUAGE
===>
LINES/PAGE OF LISTING ===>
MESSAGE LEVEL ........ ===>
SQL STRING DELIMITER
===>
DECIMAL POINT ........ ===>
STOP IF RETURN CODE >= ===>
NUMBER OF ROWS ....... ===>
CHANGE HELP BOOK NAMES?===>

BEZ-SSID
0
IBMCOB
60
I
DEFAULT
.
8
20
NO
Mit „ENTER“ weitere Panels abhaken.
(Subsystem identifier)
(How many retries for DB2 connection)
(ASM, C, CPP, IBMCOB, FORTRAN, PLI)
(A number from 5 to 999)
(Information, Warning, Error, Severe)
(DEFAULT, ' or ")
(. or ,)
(Lowest terminating return code)
(For ISPF Tables)
(YES to change HELP data set names)
6. SPUFI



SPUFI = SQL Processing Using File Input.
Die SQL-Befehle in einem Programm werden mit diesem übersetzt und ausgeführt. Mit SPUFI kann
man SQL-Befehle auch außerhalb eines Programms schreiben, übersetzen und ausführen.
Die SQL-Befehle werden dazu eingebettet in einer Datei abgesetzt.
7. Anlegen einer DB2-Datenbank (komplett)

4 Member anlegen (siehe auch „Gliederung von DB2“):
o xxx.xxx.111 - Zur Anlage von Speicherplatz für die DB2-Datenbank (Erlaubnis dazu? ->
Benutzerrechte)
o xxx.xxx.222 - Zur Anlage der Datenbank (Erlaubnis dazu? -> Benutzerrechte)
o xxx.xxx.333 - Zur Anlage des Speicherplatzes für eine Tabelle
o xxx.xxx.444 - Zur Anlage der Tabelle
8. Anlegen einer STORAGE GROUP (von Rechten abhängig)

SPUFI aufrufen:
SPUFI
===>
SSID: D931
Enter the input data set name:
(Can be sequential or partitioned)
1 DATA SET NAME ... ===> xxx.xxx.IN(STOR1) (Wird autom. angelegt . Hier wird die Eingabe gespeichert)
2 VOLUME SERIAL ... ===>
(Enter if not cataloged)
3 DATA SET PASSWORD ===>
(Enter if password protected)
Enter the output data set name:
4 DATA SET NAME ... ===> xxx.xxx.OUT
Specify processing options:
5 CHANGE DEFAULTS
===> YES
6 EDIT INPUT ......
===> YES
7 EXECUTE .........
===> YES
8 AUTOCOMMIT ......
===> YES
9 BROWSE OUTPUT ...
===> YES
(Must be a sequential data set)
(Wird automatisch angelegt)
(Y/N
(Y/N
(Y/N
(Y/N
(Y/N
-
Display SPUFI defaults panel?)
Enter SQL statements?)
Execute SQL statements?)
Commit after successful run?)
Browse output data set?)
For remote SQL processing:
10 CONNECT LOCATION
===>


Die Standardwerte des nächsten Panels mit „ENTER“ übernehmen.
Es wird nun ein leeres Eingabe-Panel angezeigt. Hier folgenden SQL-Befehl eingeben:
CREATE STOGROUP STO01
VOLUMES (SCPMV5)
VCAT DSN510;



STOGROUP = Interner SPUFI-Name / STO01 = Symbolischer Name
F3-Taste + ENTER drücken.
Im Output-Member (output data set name)steht das Ergebnis von SPUFI.
9. Anlegen einer Datenbank (von Rechten abhängig)

SPUFI aufrufen:
SPUFI
===>
SSID: D931
Enter the input data set name:
(Can be sequential or partitioned)
1 DATA SET NAME ... ===> xxx.xxx.IN(DAT1) (Wird autom. angelegt . Hier wird die Eingabe gespeichert)
2 VOLUME SERIAL ... ===>
(Enter if not cataloged)
3 DATA SET PASSWORD ===>
(Enter if password protected)
...
10 CONNECT LOCATION


===>
Die Standardwerte des nächsten Panels mit „ENTER“ übernehmen.
Es wird nun ein leeres Eingabe-Panel angezeigt. Hier folgenden SQL-Befehl eingeben:
CREATE DATABASE DATBA01
STOGROUP STO01
BUFFERPOOL BP0;


F3-Taste + ENTER drücken.
Im Output-Member (output data set name)steht das Ergebnis von SPUFI.
10. Definition eines Tablespace

SPUFI aufrufen:
SPUFI
===>
SSID: D931
Enter the input data set name:
(Can be sequential or partitioned)
1 DATA SET NAME ... ===> xxx.xxx.IN(TABSP1) (Wird autom. angelegt . Hier wird die Eingabe gespeichert)
2 VOLUME SERIAL ... ===>
(Enter if not cataloged)
3 DATA SET PASSWORD ===>
(Enter if password protected)
...
10 CONNECT LOCATION


===>
Die Standardwerte des nächsten Panels mit „ENTER“ übernehmen.
Es wird nun ein leeres Eingabe-Panel angezeigt. Hier folgenden SQL-Befehl eingeben:
CREATE TABLESPACE SPACE01
IN DATBA01
USING STOGROUP STO01
PRIQTY 60
SECQTY 60
ERASE NO
BUFFERPOOL
CLOSE NO;


F3-Taste + ENTER drücken.
Im Output-Member (output data set name)steht das Ergebnis von SPUFI.
11. Definition einer Table

SPUFI
SPUFI aufrufen:
SSID: D931
===>
Enter the input data set name:
(Can be sequential or partitioned)
1 DATA SET NAME ... ===> xxx.xxx.IN(TAB1) (Wird autom. angelegt . Hier wird die Eingabe gespeichert)
2 VOLUME SERIAL ... ===>
(Enter if not cataloged)
...
10 CONNECT LOCATION


===>
Die Standardwerte des nächsten Panels mit „ENTER“ übernehmen.
Es wird nun ein leeres Eingabe-Panel angezeigt. Hier folgenden SQL-Befehl eingeben:
CREATE TABLE TAB001
(
NAME CHAR(40) NOT NULL,
BERUF CHAR(40) NOT NULL
)
IN DATBA01.SPACE01;


F3-Taste + ENTER drücken.
Im Output-Member (output data set name)steht das Ergebnis von SPUFI.
12. Füllen einer DB2-Tabelle

SPUFI aufrufen:
SPUFI
===>
SSID: D931
Enter the input data set name:
(Can be sequential or partitioned)
1 DATA SET NAME ... ===> xxx.xxx.IN(EINFUEG) (Wird autom. angelegt . Hier wird die Eingabe gespeichert)
2 VOLUME SERIAL ... ===>
(Enter if not cataloged)
...
10 CONNECT LOCATION


===>
Die Standardwerte des nächsten Panels mit „ENTER“ übernehmen.
Es wird nun ein leeres Eingabe-Panel angezeigt. Hier folgenden SQL-Befehl eingeben:
INSERT
VALUES
INSERT
VALUES

INTO TAB001
('KARL', 'BLAUER');
INTO TAB001
('OTTO', 'HAFENKAMP');
F3-Taste + ENTER drücken.
Im Output-Member (output data set name)steht das Ergebnis von SPUFI.
13. SELECT in einer DB2-Tabelle mit SPUFI

SPUFI
SPUFI aufrufen:
SSID: D931
===>
Enter the input data set name:
(Can be sequential or partitioned)
1 DATA SET NAME ... ===> xxx.xxx.IN(SELECT) (Wird autom. angelegt . Hier wird die Eingabe gespeichert)
2 VOLUME SERIAL ... ===>
(Enter if not cataloged)
...
10 CONNECT LOCATION


===>
Die Standardwerte des nächsten Panels mit „ENTER“ übernehmen.
Es wird nun ein leeres Eingabe-Panel angezeigt. Hier folgenden SQL-Befehl eingeben:
SELECT * FROM DATABA01.TAB001;

F3-Taste + ENTER drücken.
Im Output-Member (output data set name)steht das Ergebnis von SPUFI.
14. Entfernen/Löschen DB2-Elementen mit SPUFI



Das System erlaubt die Löschung eines DB2-Elements nur dann, wenn keine anderen DB2-Elemente
mehr von dem zu löschenden Element abhängig sind. Sollte dies der Fall sein, listet die Fehlermeldung
des DROP-Befehls die abhängigen Elemente auf. Diese können/müssen vorab gelöscht werden.
SPUFI aufrufen und, wie vorab beschrieben, ein Member auswählen/neu anlegen:
Folgenden SQL-Befehl ausführen:
DROP STOGROUP STO01;
oder
DROP TABLESPACE SPACE01;
oder
DROP DATABASE DATABA01;
15. Transaktionsverarbeitung und DB2


Die Daten der DB2-Datenbank gilt es konsistent zu halten. Besonders bei Online-Zugriffen über
mehrere Ein-/Ausgabebildschirme ist dies wichtig.
DB2 stellt dafür Mittel zur Verfügung:
o exec sql begin_transaction
Eine Transaktion wird gestartet.
o exec sql commit
Der Datenbestand wird festgeschrieben.
o exec sql rollback
Der Datenbestand wird auf den Zustand bei
„begin_transaction“ zurückgesetzt.
16. Stored Procedures (auch TP light)



Durch Stored Procedures läuft das SQL-Statement nicht auf dem Klient sondern auf dem Server ab.
Dadurch wesentlich höhere Performance, da weniger Datenvolumen über das Netzwerk geht.
Der Klient stellt Verbindung mit Datenbank her: EXEC SQL CONNECT TO yyy_Datenbankname
Der Klient ruft das SQL-Statement in diesem Fall so auf: EXEC SQL CALL xxx_Prozedurname
(Parameter1, Parameter2)


o Parameter1 = SQLDA (bei DB2) für Datenaustausch
o Parameter2 = für Return-Codes und Meldungen an Klient
Der Server führt eine SQL-Gruppe unter Beachtung von ACID aus (acid oder akid für Atomarität,
Konsistenzerhaltung, Isolation und Dauerhaftigkeit), also mit commit und rollback.
Ein einziger Aufruf einer Stored Procedur kann zum Anlegen, Verändern, Löschen usw. vieler
Datenbanksätze führen, je nach Programm-/Anwendungslogik.
17. Transaktionsmonitoren (TP Monitor)


Anstelle von Stored Procedures laufen auf Mainframes überwiegend Transaktionsmonitoren. Sie sind
Stored Procedures überlegen.
Beispiele für Transaktionsmonitoren sind: CICS, SAP R/3, Transaction Server (MTS v. Microsoft) und,
für die objektorientierte Programmierung, EJB JTS (Java Bean).
18. Sperren (lock)

Das Prinzip der Locks gilt nicht nur für Datenbanken sondern ebenfalls für Transaktionen.
o GetReadLock reserviert S Lock (shared ),
o GetWriteLock reserviert E Lock (exclusive),
o PromoteReadtoWrite bewirkt Zustandswechsel S → E,
o Unlock gibt Lock frei.
19. Interessante Video-Links



Einführung in DB2: http://www.youtube.com/watch?v=6noAMY3PcB8
Installation von DB2: http://www.youtube.com/watch?v=LwhkvldombM
Videos der „Independent DB2 Users Group“ (idug):
o http://www.idug.org/p/cm/ld/fid=85
o http://www.idug.org/p/cm/ld/fid=86
Herunterladen