Aufgabenstellung - Hochschule Darmstadt
Aufgabenstellung - Hochschule Darmstadt
Aufgabenstellung - Hochschule Darmstadt
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
HOCHSCHULE DARMSTADT, FB INFORMATIK<br />
DATENBANKEN - PRAKTIKUM<br />
INGE SCHESTAG WS 2013/14<br />
Praktikum 6 – Teil I: JDBC, Explains und Statistics (Optimizerstrategien)<br />
Vorbereitung zum Praktikum:<br />
Erstellung der lauffähigen Java-Applikation für Teil I, 1. - 3.<br />
Hinweis: Als Basis für Ihre Java-Applikation können Sie die Beispielklasse MyJdbcStatement.java<br />
(s. Materialien zu Kapitel 6) verwenden.<br />
Der Besitzer des Bootsverleihs hat im Neujahrs-Lotto gewonnen! <br />
Deshalb kann er sich zu jedem seiner vier Bootstypen neue Boote kaufen wie folgt:<br />
Bootstyp Royal Magnifique : 100 neue Boote<br />
Bootstyp Calypso:<br />
300 neue Boote<br />
Bootstyp Clipper :<br />
500 neue Boote<br />
Bootstyp Cirrus:<br />
800 neue Boote<br />
Schreiben Sie eine Java-Applikation, die das Anlegen der neuen Boote in der Datenbank<br />
ausführt. Die Anzahl der Boote pro Bootstyp soll über die Console parametrisierbar sein:<br />
1. Bauen Sie eine Connection zur Ihrer Oracle-Datenbank „Bootsverleih“ auf. Setzen Sie in<br />
der Java-Applikation AutoCommit für diese Session auf „false“.<br />
2. Lesen Sie alle Bootstypen aus Ihrer Datenbank aus und ermöglichen Sie pro Bootstyp<br />
die Eingabe der Anzahl neuer Boote über die Console:<br />
BufferedReader bin = new BufferedReader(<br />
new InputStreamReader(System.in));<br />
System.out.println("Bitte Anzahl eingeben für … ");<br />
int a = Integer.parteInt(bin.readLine());<br />
3. Fügen Sie die angegebene Anzahl neuer Boots-Datensätze für den jeweiligen Bootstyp<br />
über ein PreparedStatement ein – commit nicht vergessen!<br />
Beispiel zur Übergabe von Datumskonstanten an ein PreparedStatement:<br />
pstmt.setDate(3, java.sql.Date.valueOf("2013-07-01"));<br />
4. Führen Sie das Java-Programm zum Einfügen der neuen Boote aus.<br />
5. Überprüfen Sie im SQL-Developer, ob die 1.700 neuen Boote zusätzlich zu den vorhandenen<br />
15 Booten eingefügt wurden.<br />
6. Überprüfen Sie mit einer Abfrage auf den Systemkatalog, welchen Wert die Spalte<br />
num_rows in der Tabelle user_tables für die Tabellen Boot bzw. Bootstyp hat:<br />
select num_rows from user_tables where table_name = ’BOOT’;<br />
7. Formulieren Sie einen Join zwischen den Tabellen Boot und Bootstyp und lassen Sie<br />
dafür den Ausführungsplan (Explain-Plan) ausführen.<br />
8. Aktualisieren Sie jetzt die Statistik für die Tabellen Boot bzw. Bootstyp wie folgt:<br />
execute DBMS_STATS.GATHER_TABLE_STATS('studxxx’, ’BOOT’);<br />
9. Wiederholen Sie Schritt 6. und 7. – welche Beobachtung machen Sie?<br />
Beachten Sie die „Hinweise zum Arbeiten mit JDBC“ auf Seite 3!<br />
Termine: 15.01. / 22.01. / 24.01.2014 1 / 3
HOCHSCHULE DARMSTADT, FB INFORMATIK<br />
DATENBANKEN - PRAKTIKUM<br />
INGE SCHESTAG WS 2013/14<br />
Praktikum 6 – Teil II: Transaktionsmanagement – Isolationlevel<br />
im konkurrierenden Zugriff zweier Oracle-Sessions<br />
1. Starten Sie zu Beginn zwei Oracle-Sessions auf Ihrem Arbeitsplatzrechner im Labor<br />
mit dem gewohnten Login über den SQL-Developer.<br />
2. Vergewissern Sie sich, dass der Autocommit-Status beider Sessions auf OFF gesetzt<br />
ist. Diese Einstellung finden Sie unter<br />
Extras Voreinstellungen Datenbank (Database) Erweitert: Autocommit <br />
nicht anchecken!<br />
3. Auf dem SQL-Arbeitsblatt können Sie dann jeweils mit der folgenden Anweisung den<br />
ISOLATION_LEVEL der aktuellen Session ändern:<br />
ALTER SESSION SET ISOLATION_LEVEL = ;<br />
4. Führen Sie die Operationen innerhalb der beiden offenen Oracle-Sessions auf Ihrer Datenbank<br />
„Bootsverleih“ entsprechend der nachfolgenden Tabelle interaktiv aus (Tabelle<br />
tab = Tabelle BOOTSTYP):<br />
SQL-Developer I<br />
SQL-Developer II<br />
1 BOT T1<br />
2 T1 liest tab<br />
3 T1 schreibt tab<br />
5 T1 liest tab<br />
6 BOT T2<br />
7 T2 liest tab<br />
8 T2 schreibt tab<br />
9 T1 liest tab<br />
10 Commit T1<br />
11 T2 liest tab<br />
12 Commit T2<br />
Protokollieren Sie die Ergebnisse der beiden Transaktionen auf der Oracle Datenbank<br />
unter folgenden Isolationleveln: Serializable und Read Committed.<br />
Welches Verhalten erwarten Sie jeweils? Erklären Sie das beobachtete, unterschiedliche<br />
Verhalten – entspricht es Ihren Erwartungen?<br />
5. Führen Sie zwei konkurrierende Transaktionen in zwei parallelen Oracle-Sessions<br />
(SQL-Developer) auf Ihrer Datenbank so aus, dass ein Dead Lock entsteht.<br />
Termine: 15.01. / 22.01. / 24.01.2014 2 / 3
HOCHSCHULE DARMSTADT, FB INFORMATIK<br />
DATENBANKEN - PRAKTIKUM<br />
INGE SCHESTAG WS 2013/14<br />
Hinweise zum Arbeiten mit JDBC<br />
<br />
<br />
<br />
Bereitstellung eines Oracle-JDBC-Treibers:<br />
Um auf eine Oracle-Datenbank per JDBC zugreifen zu können, muss ein entsprechender<br />
JDBC-Treiber verfügbar gemacht werden:<br />
- Den JDBC-Treiber ojdbc14.jar können Sie sich bei den Materialien zu Praktikum<br />
6 herunterladen.<br />
Treiberklassename für den Class.forName()-Methodenaufruf ist dann:<br />
"oracle.jdbc.OracleDriver"<br />
url: "jdbc:oracle:thin:@141.100.70.40:1521:orcl"<br />
- Falls Sie Oracle Express lokal auf ihrem Rechner installiert haben, müssen Sie<br />
die url des Connection-String folgendermaßen anpassen (vgl. auch Beispiel-<br />
Javaklasse):<br />
url: "jdbc:oracle:thin:@localhost:1521:XE"<br />
Sie können als IDE die im Labor verfügbaren IDE NetBeans oder Eclipse verwenden.<br />
Einbinden des jar-Files in die IDE:<br />
Eclipse<br />
Im Kontextmenü (rechte Maustaste) des Projektes:<br />
Build Path Add External Archives<br />
und dort den zuvor herunter geladenen JDBC-Treiber odbc14.jar auswählen.<br />
NetBeans<br />
Innerhalb des Projektes im Kontextmenü (rechte Maustaste) des Unterordners<br />
Libraries Add JAR/Folder<br />
und dort den zuvor herunter geladenen JDBC-Treiber odbc14.jar auswählen.<br />
Termine: 15.01. / 22.01. / 24.01.2014 3 / 3