Daniel's Tech Blog

Cloud Computing, Cloud Native & Kubernetes

Erstes DB2 und BS1 Praktikum

Die ersten Praktikaabnahmen in den Fächern DB2 und BS1 liegen erfolgreich hinter mir. Die Aufgaben der Praktika und die entsprechenden Lösungen präsentiere ich euch in diesem Artikel.

Das erste Datenbank 2 Praktikum beinhaltete insgesamt 6 Aufgaben, die jeweils wieder Teilaufgaben enthielten. Die erste Aufgabe in diesem Zusammenhang bezog sich noch auf den Themeninhalt der im letzten Semester statt gefundenen Vorlesung Datenbanken 1.

  • 1. Transaktionen
    1. Einfügen von zwei Datensätzen mittels SQL-DML-Befehlen in zwei Tabellen.
    2. Verändern von gespeicherten Daten, so dass ein Integritätsfehler für den Primärschlüssel auftritt.
    3. Prüfzeitpunkt eines anderen Primärschlüssels auf INITIALLY DEFERRED ändern.
    4. Mittels SQL-DML-Befehlen Testdaten erstellen und sich jeweils nach der Aktion die Tabellen ausgeben lassen.
    5. Datensätze in der Reihenfolge Subtyp dann Supertyp hinzufügen / Datensätze in der Reihenfolge Supertyp dann Subtyp löschen.

Die Zusammenhänge und die jeweiligen Reaktionen/Aktionen des Systems/der Befehle müssen dabei erklärt werden können

  • 2. PL/SQL-Funktion: Datumsfunktion
    1. Das aktuelle Tagesdatum soll entweder in deutscher oder amerikanischer Schreibweise ausgegeben werden. Das Kennzeichen wird dabei an die Funktion beim Aufruf übergeben.
  • 3. PL/SQL-Prozedur im Theater: Namen trennen
    1. Ein an die Prozedur übergebener Name soll getrennt nach Vorname, 2. Vorname und Nachname zurückgegeben werden. (Der Name besteht wenigstens aus zwei Teilen und maximal aus drei Teilen.)
  • 4. PL/SQL-Prozedur im Theater: Dichter ohne Inszenierung
    1. Es sollen dabei folgende Daten aus der Datenbank ermittelt werden:
      1. Dichter und zugehörigen Dramen, für die es keine Inszenierung gibt.
      2. Dichter für die kein Drama in der Datenbank hinterlegt ist.
    2. Die Sortierung soll aufsteigend nach dem Namen der Dichter und der Titel erfolgen.
  • 5. PL/SQL-Prozedur im Theater: Dichter mit den meisten Inszenierungen
    1. Die Dichter mit den meisten Inszenierungen in dem angegebenen Suchintervall (z.B. 2008-2009) sollen ausgegeben werden. Fehlt die erste Jahreszahl, so wird automatisch die kleinste Jahreszahl einer Inszenierung gesetzt. Genau umgekehrt verhält es sich für die letzte Jahreszahl.
  • 6. PL/SQL-Prozedur im Theater: Package-Prozeduren
    1. Es soll ein Package aus den Aufgaben 3, 4 und 5 erstellt werden.
    2. Aufgabe 3 soll eine private Prozedur im Package sein.
    3. Aufgabe 4 soll so angepasst werden, dass die private Prozedur zur Namensausgabe der Dichter verwendet wird.

Praktikum_1_DB_2

Das Praktikum in Betriebssysteme und verteilte Systeme 1 bestand im Gegensatz zum Datenbank 2 Praktikum nur aus 4 Aufgaben. Zu der ersten Aufgabe existieren einige Lösungen im Internet, so dass ich auf diese schriftliche Ausarbeitung nicht weiter eingehen werde. Sondern mich direkt den Aufgaben 2, 3 und 4 widme.

Aufgabe 2:
Hier sollte ein Shell-Script und ein C-Programm implementiert werden. Das C-Programm soll dabei nach einer bestimmten Anzahl Sekunden folgenden Text ausgeben: “./p1 nach der 1. Schlafzeit” und nochmals “./p1 nach der 2. Schlafzeit”. Dabei werden der Name des C-Programms (p1) und die Anzahl der Sekunden über das Shell-Script eingelesen und dann an das Programm übergeben. Mittels symbolischen Link soll der zweite Aufrufname p2 erzeugt werden. Beide Programmaufrufe sollen durch die Shell in den Hintergrund geschickt und zusätzlich  eine ausführliche Prozessliste ausgegeben werden.

C-Programm: p1

#include<stdio.h>
#include<stdlib.h>

void main(int argc, char* argv[]) {
int x = 0,
i = 1;
if (argc==1)
printf(“ERROR: Kein Paramter!n”);
else {
x = atoi(argv[1]);
while(i<3) {
sleep(x);
printf(“%s nach der %d. Schlafzeit. n”, argv[0], i++);
}
}
}

Der symbolische Link wird mittels ln –s ./p1 ./p2 auf der Konsole erzeugt.

Shell-Script:

#! /usr/bin/sh
echo “Programm?”
read progr
echo “Zeit?”
read zeit
./$progr $zeit &
jobs -l
ps -ef | grep $USER

Aufgabe 3:
Bei Aufgabe 3 sollte ein Shell-Script implementiert werden, welches Dateien aus einem Verzeichnis löscht. Die zu löschenden Dateien werden als Parameter an das Script übergeben. Das Script fragt bei jeder Datei, ob diese gelöscht werden soll oder nicht. Eine entsprechende Rückmeldung sowie Fehlermeldungen, wenn die Datei nicht exitiert, müssen auch implementiert werden. Die Verarbeitung der Parameterliste soll dabei nicht unterbrochen werden.

#! /usr/bin/sh
for i in $*
do if test -r $i
then echo “Delete $i? (y/n)”
read a
if [$a == y]
then rm $i
echo –Datei $i wurde geloescht.–
else echo –Datei $i nicht geloescht.–
fi
else echo –Datei $i nicht gefunden.–
fi
done
echo DONE.

Aufgabe 4:
Hier erfolgt die Ausgabe der 10 häufigsten Vornamen der Benutzer auf dem Rechner advbs08.

#! /usr/bin/sh
ypcat passwd |
cut -d : -f 5 |
cut -d ‘ ‘ -f 1 |
sort |
uniq -c |
sort |
grep -v Samba |
grep -v Dr. |
sort -r |
head

 

Die Praktika wurden zusammen von meinen Kommilitionen und mir bearbeitet.

Posted

in

WordPress Cookie Notice by Real Cookie Banner