############################################################################## #+--------------------------------------------------------------------------+# #| |# #| +----------------------------------------------------------------------+ |# #| | | |# #| | ||||||| | | ||||| |||||| |||||| | |# #| | | || | | | | | | | | |# #| | | | | | | | | | | | |# #| | | | | | | ||| | | |||||| | |# #| | | | | | | | | | | | | |# #| | | | || | | | | | | | |# #| | ||||||| | | ||||| |||||| |||||| | |# #| | ||||||| | |# #| | | |# #| +----------------------------------------------------------------------+ |# #| |# #| |# #| A relational database managment system |# #| |# #| |# #| VERSION 6.3 |# #| |# #| RELEASE 4 |# #| |# #+--------------------------------------------------------------------------+# ############################################################################## KONTAKTPARTNER: Akademie der Wissenschaften der DDR Zentralinstitut fuer Kybernetik und Informationsprozesse Koll. Wenzlaff Abteilung RS Kurstrasse 33 PSF 1298 BERLIN 1086 ############################################################################## #+--------------------------------------------------------------------------+# #| U E B E R P R U E F E N V O N F I L E S |# #+--------------------------------------------------------------------------+# ############################################################################## Folgende files sind auf ihren mode zu pruefen: /dev/null -rw-rw-rw- /etc/passwd -rw-r--r-- /etc/group -rw-r--r-- nicht PSU, XENIX /lib/libc.a bzw. /usr/lib/libc.a -rw-r--r-- nicht PSU, XENIX /lib/libm.a bzw. /usr/lib/libm.a -rw-r--r-- nur PSU /SYS/lib/libc.a bzw. /USR/lib/libc.a -rw-r--r-- nur PSU /SYS/lib/libm.a bzw. /USR/lib/libm.a -rw-r--r-- nur XENIX286 /lib/Slibc.a -rw-r--r-- nur XENIX286 /lib/Slibcfp.a -rw-r--r-- nur XENIX286 /lib/Slibm.a -rw-r--r-- nur XENIX286 /lib/Slibx.a -rw-r--r-- nur XENIX286 /lib/Scrt0.o -rw-r--r-- nur XENIX286 /lib/Sseg.o -rw-r--r-- nur XENIX386 /lib/386/Slibc.a -rw-r--r-- nur XENIX386 /lib/386/Slibcfp.a -rw-r--r-- nur XENIX386 /lib/386/Slibm.a -rw-r--r-- nur XENIX386 /lib/386/Slibx.a -rw-r--r-- nur XENIX386 /lib/386/Scrt0.o -rw-r--r-- nur XENIX386 /lib/386/Sseg.o -rw-r--r-- nur P8000, VENIX /lib/crt0.o -rw-r--r-- nicht P8000 /usr/include/setjmp.h -rw-r--r-- nur P8000 /usr/include/setret.h -rw-r--r-- /usr/include/sgtty.h -rw-r--r-- /usr/include/signal.h -rw-r--r-- /usr/include/stdio.h -rw-r--r-- nur LOCKING /usr/include/sys/dir.h -rw-r--r-- nur P8000-LOCKING /usr/include/sys/mmu.h -rw-r--r-- nur LOCKING /usr/include/sys/param.h -rw-r--r-- nur LOCKING /usr/include/sys/proc.h -rw-r--r-- nur P8000-LOCKING /usr/include/sys/s.out.h -rw-r--r-- /usr/include/sys/stat.h -rw-r--r-- nur P8000-LOCKING /usr/include/sys/state.h -rw-r--r-- /usr/include/sys/timeb.h -rw-r--r-- /usr/include/sys/types.h -rw-r--r-- nur LOCKING /usr/include/sys/user.h -rw-r--r-- /tmp -rwxrwxrwx Folgende Kommandos sind auf ihre Ausfuehrbarkeit durch ing_db zu pruefen: /bin/sh, /lib/cpp, ar as nur CM1420 CM4 CM52_11 I100 I102 I105 K1630 und PDP34 PDP70 cc, chmod, cp, echo, ed, grep ld nur P8000 VENIX XENIX ln, make, mkdir, mknod, mv ranlib nur A7150 EC1834 ESER_VMX K1820 K1840 PDP70 und PSU VENIX XENIX rm, rmdir scc nur P8000 sed, tar, touch nur VMX Bitte entfernen Sie `modf.o' aus `/lib/libm.a' und stellen den Modul nach `/lib/libc.a' und kontrollieren Sie das Vorhandensein des Moduls `ecvt.o' in `/lib/libc.a'. nur XENIX Eventuell ist der Modul `doprnt.o' sowohl in der Bibliothek `/lib/Slibcfp.a' als auch in `/lib/Slibc.a' vor- handen, bitte entfernen Sie ihn aus `/lib/Slibcfp.a'. ############################################################################## #+--------------------------------------------------------------------------+# #| |# #| E I N T R A G E N V O N N U T Z E R N |# #| |# #+--------------------------------------------------------------------------+# ############################################################################## Durch die Systeminstallation wird das Nutzerverzeichnis `.../sys/etc/users' automatisch eingerichtet. Bei der Anpassung sind folgende Punkte zu beachten: 1) Durch die Systeminstallation wurden alle im UNIX- Nutzerverzeichnis `/etc/passwd' stehenden Nutzer in das ING_DB 6.3/4 Nutzerverzeichnis uebernommen. 2) Alle nicht erwuenschten Nutzer sind zu streichen. Die UNIX superuser sind unbedingt aus dem Nutzerver- zeichnis zu entfernen ! 3) Bei den verbleibenden Nutzer koennen Modifikationen vorgenommen werden. Die folgende Zeile illustriert einen Eintrag: reserved:am:24:15:000000:::/tmp/.quel:: Der Wert `am' ist der ING_DB 6.3/4 Nutzerkode, er muss zwei Bytes lang und eineindeutig sein, er kann eigenen Vorstellungen entsprechen geaendert werden. Der Wert `000000' gibt die ING_DB 6.3/4 Berechtigung des Nutzers `reserved' an. Die Berechtigung kann in `000001' geaendert werden, um dem Nutzer die Erlaub- nis zum Erzeugen von Datenbanken zu geben. Der Nutzer `ing_db' muss die Berechtigung `177777' ein- getragen haben, um seine Systemfunktionen ausueben zu koennen. Der Wert `/tmp/.quel' stellt den Prototyp eines nutzerspezifischen ING_DB 6.3/4 startup-file dar. Fuere alle weiter Fragen siehe USERS(FILES). 4) Die neuen ING_DB 6.3/4 Nutzer sollten auf die Aende- rung ihres profile hingewiesen werden, damit sie die Datenbankkommandos aufrufen koennen: - fuer die `sh' das file `.profile' nach folgendem Muster: PATH=:/z/ing_db/bin:/bin:/usr/bin: export PATH - fuer die `csh' das file `.cshrc' nach folgendem Muster: set path=(. /z/ing_db/bin /bin /usr/bin) setenv PATH ":/z/ing_db/bin:/bin:/usr/bin:" Soll zu einem spaeteren Zeitpunkt ein neuer Nutzer in das das Nutzerverzeichnis aufgenommen werden, so kann das kann das folgendermassen erfolgen: make adduser USER=login_name Es werden zuerst alle verwendeten Nutzerkodes ausgegeben und anschliessend der Eintrag fuer den Nutzer `login' zur Korrektur angeboten. Nach Beendigung der Korrektur wird der neue Nutzer automatisch in das Nutzerverzeich- nis eingefuegt. ############################################################################## #+--------------------------------------------------------------------------+# #| |# #| V E R A E N D E R U N G E N |# #| |# #| i m R e l e a s e 4 |# #| |# #+--------------------------------------------------------------------------+# ############################################################################## Anlegen von gemounteten Datenbanken Eine gemountete Datenbank ist eine Datenbank, die sich auf einem seperaten Datentraeger befindet, d.h. genau ei- ne Datenbank auf einem Datentraeger. Gemountete Datenbanken koennen von allen Nutzern erzeugt werden. Das Anlegen wird anhand eines Beispiels dokumentiert: 1) creatdb mount_db 2) destroydb -m mount_db HINWEIS: Jetzt vom UNIX-superuser einen Datentraeger in `.../data/base/mount_db' mounten lassen. 3) creatdb -m [weiter Flags moeglich] mount_db In der Zukunft muss immer darauf geachtet werden, dass wenn die Datenbank mount_db angesprochen werden soll, auch der Datentraeger gemountet ist ! Anlegen von entfernten Datenbanken Entfernte Datenbanken sind Datenbanken, die nicht in dem vorgesehen Systempfad `.../data/base' angelegt werden sollen. Das kann sinnvoll sein, wenn z.B. mehrere Daten- banken auf einem seperaten Datentraeger angelegt werden sollen. Entfernte Datenbanken koennen nur vom Systemadministrator `ing_db' im Auftrag von Nutzern angelegt werden. Das Anlegen wird anhand eines Beispiels dokumentiert: Der Nutzer `ausserhalb' moechte die Datenbank `jwd' in dem directory `/irgendwo/janz' anlegen. Er teilt dem Systemadministrator `ing_db' mit, dass die Datenbank pri- vat und mit QRYMOD-Unterstuetzung erzeugt werden soll. 1) login: ing_db passwd: 2) cd data/base 3) creatdb -uausserhal -c +q jwd HINWEIS: In `/irgendwo/janz' koennte ein Datentraeger gemountet werden. 4) mkdir /irgendwo/janz/weit chmod 700 /irgendwo/janz/weit HINWEIS: weit ist ein beliebiger Name. In `/irgendwo/janz/weit' koennte ein Daten- traeger gemountet werden. 5) mkdir /irgendwo/janz/weit/weg chmod 777 /irgendwo/janz/weit/weg HINWEIS: weg ist ein beliebiger Name. In `/irgendwo/janz/weit/weg' einen Daten- traeger zu mounten ist nicht sinnvoll, da sie dann als mountbare Datenbank im System haette angelegt werden koennen. 6) mv jwd/* /irgendwo/janz/weit/weg 7) rmdir jwd 8) echo /irgendwo/janz/weit/weg > jwd chmod 600 jwd Nach dem die Datenbank entfernt angelegt ist, kann mit ihr wie mit normalen Datenbanken gearbeit werden. Das Kommando DESTROYDB(UNIX) traegt entfernt angelegte Daten- banken korrekt aus. Durch diese Form der Anlage wird der volle Schutz fuer entfernte Datenbanken garantiert ! COPYDB COPYDB(UNIX) funktioniert jetzt korrekt. COPYR Der file-Name muss kein voller Pfadname mehr sein. CREATDB Es gibt jetzt die Moeglichkeit, die Seitengroesse der Da- tenbank an das Betriebssystem anzupassen. Unterstuetzt werden Seitengroessen von 512 und 1024 Bytes. Durch die Angabe des Flags `-1' werden 512'er und durch die Angabe des Flags `-2' werden 1024'er Datenbanken erzeugt. Standard sind 1024'er Datenbanken. Beide Formen koennen parallel in einem System angelegt werden, ING_DB 6.3/4 verwaltet diesen Unterschied intern. 512'er koennen nicht in 1024'er Datenbanken konvertiert werden, dazu muessen sie logisch auskopiert und wieder einkopiert werden (siehe COPYDB(UNIX)). INDEXR INDEXR(UNIX) kennt folgende neuen Flags: -fillfactor:zahl -minpages:zahl -maxpages:zahl -nspeicher_struktur -tidp Die Flags entsprechen den Angaben FILLFACTOR = zahl MINPAGES = zahl MAXPAGES = zahl in der WHERE-Klausel von MODIFY(QUEL) bzw. -nspeicher_struktur von ING_DB(UNIX). Die Angabe von `-tidp' dient dazu, den Indexschluessel eindeutig zu machen. Diese Angabe sollte aber vermieden werden, da der AMX-Compiler falsche Daten- zugriffe generiert, ein Problem das zukuenftig abgestellt werden wird. ING_DB Das Kommando ING_DB(UNIX) heisst jetzt QUEL und kennt folgende neuen Flags: -Ipfadname zur Angabe eine \include-files fuer den Terminalmonitor. Es wird nur das file abgearbeitet, die Eingabe bleibt vom Terminal. -lzeichen zur Angabe eines Zeiches fuer die Umrahmung der Tabellen, bisher immer `-'. MANR Neues shell-Kommando zur Auslistung der online-Dokumenta- tion (analog \HELP-Kommando des Terminalmonitors). MODIFYR MODIFYR(UNIX) kennt folgende neuen Flags: -fillfactor:zahl -minpages:zahl -maxpages:zahl Die Flags entsprechen den Angaben FILLFACTOR = zahl MINPAGES = zahl MAXPAGES = zahl in der WHERE-Klausel von MODIFY(QUEL). REFR Neues shell-Kommando zur Auslistung der online-Dokumenta- tion (analog \help-Kommando des Terminalmonitors). -u:xx Das alter-ego-Flag in dieser Form ist ersatzlos aus allen Kommandos gestrichen, es gibt nur noch die Form -ulogin_name Demonstrationen Die Kommandos `demo_dt' und `demo_eng' zur Erstellung der Demonstrationsdatenbank heissen jetzt `quel_dt' bzw. `quel_eng'. Es gibt zusaetzlich die Kommandos `tut_dt' und `tut_eng' zum automatischen Ablauf der Anfragen, die in der Doku- mentation `Anwendung der QUEL' beschrieben sind. Zu den Kommandos muss eine Datenbankname angegeben werden. Alle Demonstrationen sind in dem directory `.../demo' zu- sammangefasst, sie koennen mit den Kommandos cd demo;make installiert werden. Sollen nur die deutschen Demonstrati- onen installiert werden, kann dies durch cd demo;make dt erreicht werden, entsprechend die englischen durch cd demo;make eng Datenbankcompiler AMX AMX-Programme laufen jetzt im current directory, d.h. file-Namen muessen nicht laenger als volle Pfadnamen an- gegeben werden. Der AMX-Compiler hat den C-Compiler als Untermenge inte- griert, d.h. die Benutzung von AMX(UNIX) entspricht der Benutzung von cc(1). Der AMX-Compiler kennt gegenueber dem C-Compiler keine neuen Flags, alle Flags sind also Flags von cc(1). Bei der Erzeugung von Datenbankprogrammen muss immer der AMX-Compiler anstelle des C-Compilers verwendet werden. Fuer das Linken eines Programmes muss das Flag `-o name' zur Angabe des Programmnamens spezifiziert werden, um das automatische Laden der Laufzeitbibliothek des AMX- Compilers anzuweisen. Die Laufzeitbibliothek muss unter dem Namen `.../lib/libamx.a' bereitgestellt werden, darf also nach der Generierung nicht nach `/usr/lib' bzw. `/lib' bewegt werden. Beispiele: 1) Erzeuge Objektmodul aus einer AMX-Quelle amx -c -O neuheit.x 2) Erzeuge Programm aus einem Objektmodul amx -o neuheit neuheit.o 3) Erzeuge Programm aus einer AMX-Quelle amx -O -o neuheit neuheit.x 4) Erzeuge Programm aus einer AMX- und einer C-Quelle amx -O -o neuheit neuheit.x zusatz.c 5) Erzeuge Objektmodule aus einer AMX- und einer C-Quelle amx -c -O neuheit.x zusatz.c oder amx -c -O neuheit.x;cc -c -O zusatz.c 6) Erzeuge Programm aus Objektmodulen amx -o neuheit neuheit.o zusatz.o Natuerlich koennen auch Bibliotheken verarbeitet werden, bzw. `neuheit.o' kann in eine Bibliothek gestellt werden. Auf jeden Fall muss mit dem AMX-Compiler gelinkt werden ! Neben dem AMX-Statement ## ing_db [flags] db_name gibt es jetzt ## shared [flags] db_name wobei `ing_db' die Datenbank exklusiv (also alleinig) und `shared' die Datenbank parallel verwendbar eroeffnet. Das neue AMX-Statement ## tuplelength rel_name c_var_name stellt in der numerischen C-Variablen `c_var_name' die Tupellaenge der Relation `rel_name' bereit. Es gibt die Moeglichkeit Transaktionen (TA) zu formulie- ren, die nutzerbezogene Datenbankkonsistenzen realisier- ren. Eine TA wird durch ## use ([+]rel_name {, [+]rel_name}) eingeleitet und durch ## commit beendet. Das Zeichen `+' gibt an, dass die Relation ge- aendert werden soll (REPLACE, DELETE oder APPEND). Fehlt diese Angabe, wird von der Relation gelesen (RETRIEVE). Folgende Regeln sollten bei der Formulierung von TA's be- achtet werden: 1) Immer `shared' verwenden, wenn nicht ausdruecklich die alleinige Verwendung der Datenbank beabsichtigt ist. 2) Immer TA's formulieren, wenn Recherchen ueber mehr als eine Relation gehen sollen. 3) Alle Aenderungen in TA's einkleiden. 4) Wenn eine TA laeuft, kann keine weiter TA begonnen werden. 5) Innerhalb einer Recherche (RETRIEVE) kann keine TA be- gonnen werden, die Recherche muss in die TA einge- schlossen werden. 6) Innerhalb einer TA kann keine Recherche oder Aenderung fuer eine Relation, die nicht Bestandteil der TA ist, gestartet werden. Die Relation muss in die TA einge- schlossen werden. ON-LINE DOKUMENTATION: Unter dem interaktiven ING_DB 6.3/4 Terminalmonitor gibt es eine neue Form der on-line Hilfe. Mit dem Kommando `\HELP name' kann eine Hilfe zu dem Komplex `name' angefordert werden. Das Kommando `\HELP' liefert eine Liste der verfueg- baren Hilfen. Mit dem Kommando `\help name' kann eine Kurzhilfe zu dem Komplex `name' angefordert werden. Das Kommando `\help' liefert eine Liste der verfueg- baren Kurzhilfen. Die Kommandos lassen sich `\H name' bzw. `\h name' abkuerzen. Die on-line Hilfe kann jetzt auch unter der shell in Anspruch genommen werden (siehe MANR und REFR). DOKUMENTATION: Die aufbereitete Dokumentation befindet sich im cat-dir- ectory, jedes file beinhaltet 20 Druckseiten, jede Seite umfasst 66 Zeilen. Die Dokumentation ist in drei Teile untergleidert (doc1.*, doc2.* und doc3.*), hinzu kommt der online-Manual- (man.*) und der -Refernzteil (ref*). Die nroff-Quellen stehen im dem directory `doc'.