CREATDB(MUTOS) DABA16 CREATDB(MUTOS) NAME creatdb - Erstellen einer Datenbank UEBERSICHT creatdb [ -uname ] [ -e ] [ -m ] [ -/+c ] [ -/+q ] [ -1 | -2 | -4 | -8 ] dbname BESCHREIBUNG Creatdb erstellt eine neue DABA-Datenbank oder modifiziert den Status einer existierenden. Der dieses Kommando fuer das Erstellen einer neuen Datenbank ausfuehrende Nutzer wird zum Datenbankadministrator (DBA) fuer diese Datenbank. Das Modifizieren einer existierenden Datenbank ist nur dem DBA erlaubt. Der DBA hat spezielle Befugnisse, die dem gewoehnlichen Nutzer nicht erlaubt sind. Dbname ist der Name der zu erstellenden Datenbank. Dieser Name muss ueber die Datenbanknamen aller DABA-Nutzer eindeu- tig sein. Das Flag -u mit dem unmittelbar folgenden Login-Namen name gestattet es, sich als Nutzer mit dem Login-Namen name auszugeben. Die Flags -/+c und -/+q spezifizieren Optionen (Auswahlmo- eglichkeiten) fuer die Datenbank. Das Flag der Form +x schaltet eine Option "ein" und -x die Option "aus". Es gibt die Moeglichkeit, die Seitengroesse der Datenbank an das Betriebssystem anzupassen. Unterstuetzt werden Sei- tengroessen von 512, 1024, 2048 und 4096 Bytes (2048 und 4096 Byte nur bei 32-Bit-Rechnern). Durch die Angabe des Flags -1 wird eine Datenbank mit einer Seitengoesse von 512, durch das Flags -2 mit 1024, durch -4 mit 2048 und durch -8 mit 4096 Byte erstellt. Standard an einem 16-Bit-Rechner ist 1024. Die Formen koennen parallel in einem System angelegt wer- den. DABA verwaltet diesen Unterschied intern. Datenbanken bestimmter Seitengroesse koennen nicht in solche mit einer anderen Seitengroesse konvertiert werden, dazu muessen sie logisch auskopiert und wieder einkopiert werden (copydb(mutos)). Das -c Flag schaltet die sogenannte "Gleichzeitigkeitssteue- rung" aus (Standard : "ein"). Das +q Flag schaltet die sogenannte "Anfragenmodifikation" ein (Standard : "ein"). Die Gleichzeitigkeitssteuerung sollte niemals ausgeschaltet werden, es sei denn fuer Datenbanken, die nie von mehr als einem Anwender genutzt werden. Wenn mehrere Nutzer die Nutzer-Relationen niemals geteilt (shared) anwenden, so darf die Gleichzeitigkeitskontrolle dennoch niemals ausgeschaltet werden, da die System-Relationen immer noch geteilt genutzt werden. Wenn die Gleichzeitigkeitssteuerung nicht instal- liert wurde, wird die Gleichzeitigkeitssteuerung genauso reagieren, als waere sie ausgeschaltet. Die Anfragenmodifikation muss eingeschaltet sein, wenn die Schutz-, die Integritaets- und Sichten-Subsysteme genutzt werden sollen. Das Schutz-Subsystem ueberwacht, dass die Befugnisse nicht uebertreten werden, das Integritaets-Subsystem die Einhal- tung der Integritaetsbedingungen und das Sichten-Subsystem gestattet das Definieren und Handhaben der Sichten. Es ist zu bemerken, dass mit eingeschalteter Anfragenmodifi- kation DABA in einigen Faellen leicht verlangsamt arbeitet. Es ist moeglich, fuer eine existierende Datenbank die Anfra- genmodifikation einzuschalten, wenn sie ausgeschaltet war. Sie kann aber nicht ausgeschaltet werden, wenn sie "ein" war. In Datenbanken, fuer die die Anfragenmodifikation ausge- schaltet wurde, werden neue Relationen mit allen Befugnissen fuer alle Nutzer erstellt. Fuer Datenbanken mit anwendbarer Anfragenmodifikation werden neue Relationen standardmaessig ohne Zugriffsbefugnis, ausser fuer den Eigentuemer, er- stellt. Datenbank-Optionen fuer eine existierend Datenbank koennen durch die Spezifikation des -e Flag modifiziert werden. Die Datenbank wird entsprechend den spezifizierten Flags an- gepasst. Beispielsweise schaltet : creatdb -e +q meine_db die Anfragenmodifikation fuer die Datenbank "meine_db" ein (Die Gleichzeitigkeitssteuerung bleibt entsprechend der vor- herigen Spezifikation erhalten). Nur der Datenbankadmini- strator (DBA) darf das -e Flag nutzen. Wenn die Anfragenmodifikation eingeschaltet wurde, werden danach neue Relationen ohne Zugriffsbefugnis erstellt. Die vorher erstellten Relationen besitzen jedoch noch die Befug- nis fuer jedermann. Die destroy Anweisung kann benutzt werden, um die globalen Befugnisse zu entfernen, nachdem selektive Befugnisse mit der permit Anweisung spezifiziert wurden. Der DABA-Systemverantwortliche kann das -u Flag verwenden, um einen anderen DBA und nicht sich selbst, anzugeben. Das Flag muss unmittelbar vom Login-Namen des zukuenftigen DBA gefolgt werden. Das -m Flag zeigt an, dass das MUTOS-Directory, in dem die Datenbank residieren soll, bereits existiert. Das wird nur benoetigt, wenn das Directory ein montiertes (mounted) File-System darstellt, was fuer sehr grosse Datenbanken der Fall sein kann. Das Directory muss existieren (als .../data/base/dbname ), muss den File-Modus 777 besitzen, und alle Files muessen leer sein (siehe BEISPIELE). Der DABA-Systemverantwortliche kann im Directory .../data/base ein File erstellen, das eine einzelne Zeile als vollstaendigen Pfadnamen der Lokalisation der Datenbank enthaelt. Das wird fuer ausgelagerte Datenbanken genutzt. Das File muss daba als Eigentuemer und einen File-Modus 600 besitzen. Wenn die Datenbank erstellt wird, wird sie nicht im Directory .../data/base sondern entsprechend dem Pfadnamen erzeugt. Wenn beispielsweise das File .../data/base/peterdb die Zeile /mnt/peter/database enthaelt, wird die Datenbank "peterdb" im Directory /mnt/peter/database und nicht in .../data/base/peterdb erstellt. BEISPIEL[E] creatdb demo creatdb -upeter +q peters_db creatdb -e +q +c -upeter peters_db creatdb -upeter -c peters_db creatdb -e +c peters_db Montiertes Filesystem im DABA-DB-Pfad .../data/base Soll eine Datenbank z.B. db_in_mount auf einem separaten Filesystem, das im DABA-Datenbankpfad .../data/base mit mount montiert wird, erstellt werden, ist das Folgendes zu tun. Der DABA-Systemverantwortliche daba (login: daba) richtet das Datenbank-Directory ein und setzt den richtigen File- Modus: mkdir .../data/base/db_in_mount chmod 777 .../data/base/db_in_mount Der MUTOS-Systemverantwortliche root (login: root) montiert im Directory .../data/base/db_in_mount das Filesystem, auf dem die Datenbank residieren soll. Der DBA der Datenbank fuehrt folgendes Kommando aus: creatdb -m db_in_mount Vor jeder Benutzung der Datenbank db_in_mount ist dafuer zu sorgen, dass das Filesystem montiert worden ist. Das Anlegen von ausgelagerten Datenbanken Als ausgelagerte Datenbanken werden solche bezeichnet, die nicht, wie ueblich, im Datenbankpfad .../data/base angelegt werden. Das kann sinnvoll sein, wenn z.B. mehrere Datenban- ken als ein Komplex auf einem separaten Datentraegern an- gelegt werden muessen. Ausgelagerte Datenbanken koennen ausschliesslich vom DABA- Systemverantwortlichen daba im Auftrage eines anderen Nut- zers angelegt werden! Wenn die Datenbank db_aus_mount im Directory /mount/peters_dbs existieren, der Nutzer peter der DBA die- ser Datenbank sein wird, die mit Anfragenmodifikation und Gleichzeitigkeitssteuerung arbeiten soll, ist das Folgende zu tun: Der DABA-Systemverantwortliche daba (Login: daba) gibt die folgenden Kommandos: login: daba passwd: cd data/base creatdb -upeter +c +q db_aus_mount In "/mount/peters_dbs" koennte ein Datentaeger montiert werden. mkdir /mount/peters_dbs/dbs_a chmod 700 /mount/peters_dbs/dbs_a Der File-Name "dbs_a" ist ein beliebiger. In "/mount/peters_dbs/dbs_a" koennte ein Datentraeger montiert werden. mkdir /mount/peters_dbs/dbs_a/db_a chmod 777 /mount/peters_dbs/dbs_a/db_a Der Name "db_a" ist ein beliebiger. Hier eine Datentraeger zu montieren ist nicht sinnvoll. mv db_aus_mount/* /mount/peters_dbs/dbs_a/db_a rmdir db_aus_mount echo /mount/peters_dbs/dbs_a/db_a >db_aus_mount chmod 600 db_aus_mount FILES .../sys/etc/dbtmplt6.3 .../data/base/* SIEHE AUCH destroydb(mutos), permit(ql), users(files)