Datenbankprogrammierung (Oracle)

Werbung
Universität Augsburg, Institut für Informatik
Datenbanken u. Informationssysteme
Übungsblatt 1
Datenbankprogrammierung (Oracle)
Organisatorisches:
Alle wichtigen Informationen zur Vorlesung finden Sie unter
http://www.informatik.uni-augsburg.de/lehrstuehle/dbis/db/lectures/ws1112/oracle/
Aufgabe 1: Erstellen eines Datenbankaccounts
Damit Sie die SQL-Übungsaufgaben direkt auf der Oracle-Datenbank ausführen können, benötigen Sie einen Account. Gehen Sie zum Erstellen Ihres persönlichen Accounts wie folgt vor:
a) Laden Sie sich das Dokument Using SQL Developer von der Übungsseite der Vorlesung und
machen Sie sich mit dem Inhalt vertraut.
b) Öffnen Sie den Oracle SQL-Developer (installiert auf den PCs im Datenbankraum, 2056 N)
c) Neue Verbindung erstellen: Rechts-Klick auf Verbindungen.
d) Tragen Sie folgende Daten ein:
• Verbindungsname: OracleAccount
• Benutzername: student
• Kennwort: student
• Hostname: gemini.informatik.uni-augsburg.de
• Port: 1521
• SID: db
e) Stellen Sie eine Verbindung zur Datenbank her.
f) Führen Sie im SQL-Worksheet folgenden Befehl aus
CALL create oracle user(’BENUTZER’, ’PASSWORT’);
Dabei müssen Sie als Benutzer und Passwort ihre Matrikelnummer verwenden, z.B.
CALL create oracle user(’0815’, ’0815’);
g) Melden Sie sich wieder ab und erstellen Sie eine neue Verbindung, Schritt 3. Benutzen Sie jetzt
als Benutzername und Kennwort ihre Matrikelnummer.
h) Speichern Sie die Verbindung. Mit einem Doppelklick auf den Verbindungsnamen können Sie
sich nun zur Oracle Datenbank verbinden und Ihre Übungsaufgaben bearbeiten.
1
Aufgabe 2: Tablespaces (Oracle)
Bearbeiten Sie folgende Teilaufgaben:
a) Erarbeiten Sie ein Statement, das einen Tablespace mit den folgenden Eigenschaften erstellt:
• Verwendungszweck: temporäre Daten
• Dateiname: <MATRIKELNUMMER>.dbf
• Größe: 5MB
• Wenn der gesamte Platz aufgebraucht ist, soll der Tablespace automatisch in 1MB-Schritten
vergrößert werden.
Für nicht alle dieser Möglichkeiten finden Sie die Beschreibung im Skript. Suchen Sie die
restlichen Informationen im Internet.
Anmerkung: Sie haben keine Rechte zum Erstellen eines Tablespaces.
b) Bei der Angabe der Tablespace-Datei mittels ”datafile” ist der volle Pfad notwendig. Finden
Sie heraus, wie man mit einer SQL-Anweisung das Verzeichnis für die Tablespace-Dateien
ermitteln kann.
Hinweis: Systemtabelle sys.v_$datafile.
c) Finden Sie heraus, welchen Tablespace Ihr Benutzeraccount standardmäßig verwendet. Benutzen Sie dazu den bereits vorhandenen View USER_USERS.
d) Wie viel freier Platz ist in Ihrem Standard-Tablespace? Der View USER_FREE_SPACE kann
Ihnen dabei behilflich sein.
Die Struktur des Views erhalten Sie mit Hilfe des folgenden Statements im SQL Developer:
DESCRIBE USER_FREE_SPACE
Aufgabe 3: SGA (Oracle)
In der Vorlesung haben Sie die System Global Area (SGA) kennengelernt. Finden Sie heraus wieviel Speicher die am Lehrstuhl laufende Oracle 11g Datenbank für die SGA verwendet.
2
Aufgabe 4: SQL-Auffrischung (Standard-SQL)
Diese Aufgabe dient der Auffrischung Ihrer SQL-Kenntnisse aus der Datenbank-Vorlesung.
Der View CORRELATED enthält einige Zahlenwerte. Bearbeiten Sie die folgenden Problemstellungen:
a) Welche Spalten enthält der View und welchen Typ haben sie?
b) Wie viele Zeilen sind enthalten?
c) Was ist der minimale bzw. maximale Wert der verschiedenen Spalten?
d) Alle Einträge sollen als auf 0,5 gerundete Werte dargestellt werden.
e) Geben Sie für alle Tupel mit ID ≤ 100 diejenigen aus, deren ID ganzzahlig durch 3 teilbar ist.
f) Geben Sie die durchschnittlichen Werte der Spalten aus. Gruppieren Sie dabei die Tupel mit
den IDs 1 bis 99, 100 bis 199, usw.
Zur Kontrolle:
AVG 1
AVG 2
Bereich
0xxxxx 2,383114541 2,273816849
1xxxxx 2,5237447271 2,4649835173
2xxxxx 2,2100371769 2,4639782739
...
...
...
Hinweis: Die SQL-Funktionen ROUND und TRUNC können hilfreich sein.
Aufgabe 5: SQL Puzzle (Standard SQL)
Gegeben ist eine Relation, welche durch folgende Anweisung erstellt wurde:
CREATE TABLE Projekte (
Auftrag CHAR(5) NOT NULL,
Abschnitt INTEGER NOT NULL CHECK (Abschnitt BETWEEN 0 and 1000),
Status CHAR(1) NOT NULL CHECK (Status IN (’C’, ’R’)));
Die Beispieldaten können über das öffentlich verfügbare Synonym PROJEKTE abgefragt werden.
Projekte
Auftrag
’AA100’
’AA100’
’AA100’
’AA200’
’AA200’
’AA300’
’AA300’
Abschnitt
0
1
2
0
1
0
1
Status
’C’
’R’
’R’
’R’
’R’
’C’
’C’
Tabelle 1: default
Schreiben Sie eine SQL-Anweisung, die alle Aufträge ausgibt, für die der Abschnitt 0 und der
Status ’C’ ist, aber alle anderen Einträge für Abschnitt (1 ... 1000) für diesen Auftrag einen Status
’R’ haben. Die Anfrage soll also für obiges Beispiel nur ’AA100’ zurückgeben.
3
Herunterladen