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