Sybase: Unterschied zwischen den Versionen
Michi (Diskussion | Beiträge) |
Michi (Diskussion | Beiträge) (→dbtool) |
||
Zeile 283: | Zeile 283: | ||
login: <b>sisis</b> | login: <b>sisis</b> | ||
$ <b>export DBS=syb | $ <b>export DBS=syb DATABASE=sisis</b> | ||
$ <b>/home/sisis/sc/dbtool steuerdatei</b> | $ <b>/home/sisis/sc/dbtool steuerdatei</b> | ||
Version vom 3. Februar 2009, 14:42 Uhr
Die Firma Sybase (engl. system, database) wurde 1984 gegründet, hat ihren Firmensitz in Dublin (Kalifornien, USA) und ist Hersteller von Produkten in den Bereichen Informationsmanagement, Entwicklung und Integration, Mobile Lösungen und spezielle Geschäftslösungen. In diese Bereiche fallen vor allem Datenbanken, Entwicklungs- und Design-Werkzeuge, Synchronisations- und Replikations-Software sowie Produkte für das Mobile Enterprise (PDA, Handy usw.).
Die Stärken des RDBMS von Sybase sind:
- Geschwindigkeit (besonders unter Linux)
- einfache Installation und Administration
- einfache Erlernbarkeit
- gute Ausnutzung der Systemressourcen
- Total Cost of Ownership
Produkte
Zu den bekanntesten Sybase-Produkten zählen:
- Sybase Adaptive Server Enterprise
- Adaptive Server Anywhere
- PowerBuilder
- PowerDesigner
- SQL Anywhere
Geschichte
Jahr | Ereignis |
---|---|
1984 | Firmengründung |
"Sybase SQL Server" ist das erste Client-Server-RDBMS | |
1988 | Sybase SQL Server 3.0 (stored procedures, trigger, cost-based query optimizer) |
Microsoft vertreibt Sybase SQL Server als "Microsoft SQL Server" für OS/2 und (später) für Windows NT | |
1990 | Sybase SQL Server 4.0: (Datentypen image und text) |
Sybase SQL Server 4.9.2 entspricht Microsoft SQL Server Version 4.2.2 | |
1993 | Sybase SQL Server X (=10) (mit Backup Server, Identity-Spalten, Cursor) |
1994 | Verkauf des Quellcodes an Microsoft, getrennte Weiterentwicklung |
1995 | Sybase SQL Server 11.0 (named cache, dirty read, sp_sysmon) |
1997 | Umbenennung von Sybase SQL Server in "Adaptive Server Enterprise" (ASE) 11.5 (proxy-Tabellen, XP-Server) |
1998 | Sybase Adaptive Server Enterprise 11.9 EARL (eagerly awaited row-level locking) |
1999 | Sybase Adaptive Server Enterprise 12.0 (Änderung Installationsbaum, Java-Unterstützung) |
2001 | Sybase Adaptive Server Enterprise 12.5 (union views, wählbare Pagegrösse) |
2003.10 | Sybase Adaptive Server Enterprise 12.5.1 (Datentypen date und time Datentypen, dynamic data cache) |
2005 | Sybase Adaptive Server Enterprise 12.5.3 und Sybase Adaptive Server Enterprise 15.0 (verbesserter Optimizer, computed columns, acrollable cursors, Datentyp unitext) |
2006 | Sybase Adaptive Server Enterprise 12.5.4 und Sybase Adaptive Server Enterprise 15.0.1 |
Verwendung
Anzahl der Benutzer mit männlichem Geschlecht.
select count(*) from d02ben where d02sex="M"
Anzahl der Benutzer von Zweigstelle 00, die seit dem 1. Dezember 2001 aktiv waren.
Achtung: Die Werte von Feldern (hier "d02zweig") des Typs SMALLINT dürfen nicht in Anführungszeichen gesetzt werden!
select count(*) from d02ben where d02ladatum>"30.11.2001" and d02zweig=00
Anzeige der Mediennummer aller Buchdatensätze, die seit dem 3. Juli 2003 zurückgegeben wurden.
select d01gsi from d01buch where d01lrv2>="03.07.2003"
Anzeige der Mediennummer aller Buchdatensätze, die in der Abteilung 01 der Zweigstelle 00 stehen.
Achtung: Die Werte von Feldern (hier "d01abtlg" und "d01zweig") des Typs SMALLINT dürfen nicht in Anführungszeichen gesetzt werden!
select d01gsi from d01buch where d01abtlg=01 and d01zweig=00
Anzeige von Mediennummer und Signatur aller Buchdatensätze mit mehr als drei Vormerkungen.
Achtung: Die Werte von Feldern (hier "d01vmanz") des Typs SMALLINT dürfen nicht in Anführungszeichen gesetzt werden!
select d01gsi, d01ort from d01buch where d01vmanz>3
Anzeige von Signatur, Mediennummer, Anzahl der Ausleihen im Vorjahr sowie Anzahl der Ausleihen im laufenden Jahr aller Buchdatensätze mit der Systematiknummer 10. Achtung: Die Werte von Feldern (hier "d01abtlg" und "d01mart") des Typs SMALLINT dürfen nicht in Anführungszeichen gesetzt werden!
select d01ort, d01gsi, d01svjanz, d01sljanz from d01buch where d01mart=10
Anzeige der aktuellen Datenbank.
select db_name()
Zur Ausführung von Abfragen innerhalb eines Skripts können zwei Schreibweisen verwendet werden.
/opt/sybase/OCS-12_5/bin/isql -b -s "|" -w 1024 -U<Benutzer> -P<Passwort> -D<Datenbank> <<!!! >> /tmp/ausgabedatei select count(*) from d02ben go !!!
oder
printf "select count(*) from d02ben\ngo\n" |\ /opt/sybase/OCS-12_5/bin/isql -b -s "|" -w 1024 -U<Benutzer> -P<Passwort> -D<Datenbank> >> /tmp/ausgabedatei
Datenbankchecks
#!/bin/bash # # Sybase ASE database checks for database "sisis" # ## set -x PASSWORD=xxxxxx # Password for user "sa" PATH=$PATH:/usr/local/bin . /opt/lib/sisis/etc/syb.rc for DATABASE in sisis do SC_SQL="/opt/sybase/OCS-12_5/bin/isql -b -w 160 -Usa -P${PASSWORD} -SsisisSYB -D${DATABASE}" printf "dbcc checkdb(${DATABASE})\ngo\n" | $SC_SQL > /tmp/infofile1.checkdb.${DATABASE} printf "dbcc checkcatalog(${DATABASE})\ngo\n" | $SC_SQL > /tmp/infofile2.checkcatalog.${DATABASE} printf "dbcc checkalloc(${DATABASE}, nofix)\ngo\n" | $SC_SQL > /tmp/infofile3.checkalloc.${DATABASE} done
Im Fehlerfall ausführen des Datenbankchecks im "single user"-Modus.
$ SybSQLsa 1> use master 2> go 1> sp_dboption msisis, "single user", true 2> go Database option 'single user' turned ON for database 'msisis'. Running CHECKPOINT on database 'msisis' for option 'single user' to take effect. (return status = 0) 1> use msisis 2> go 1> checkpoint 2> go 1> dbcc checkalloc 2> go 1> use master 2> go 1> sp_dboption dbname, "single user", false 2> go 1> use dbname 2> go 1> checkpoint 2> go
Fehlermeldungen
Hängende Bandsicherung sichtbar in "sisisSYBbackup.errorlog".
May 15 22:00:00 2006: Backup Server: 6.53.1.1: OPERATOR: Volume on device '/dev/ nrmt0' cannot be opened for write access. Mount another volume. May 15 22:00:00 2006: Backup Server: 6.78.1.1: EXECUTE sp_volchanged @session_id = 18, @devname = '/dev/nrmt0', @action = { 'PROCEED' | 'RETRY' | 'ABORT' }, @vname = <new_volume_name>
Abbrechen mit
1> sp_volchanged 18, '/dev/nrmt0', 'ABORT'
Danach manuelle Sicherung durchführen.
Transaktionen
Verhindern des Abschneidens der Transaktionslogs (normaler Zustand für den Datenbankbetrieb mit SISIS-SunRise).
# su - sisis $ $SYBASE/OCS-12_5/bin/isql -Usa -Pxxxxxx -SsisisSYB 1> sp_dboption sisis, "trunc. log on chkpt.", false 2> go 1> use sisis 2> go 1> checkpoint 2> go 1> quit
Löschen aller inaktiven Transaktionen aus den Logs der Datenbank "sisis". Es wird dabei keine Kopie des Logs erstellt.
# su - sisis $ $SYBASE/OCS-12_5/bin/isql -Usa -Pxxxxxx -SsisisSYB 1> dump tran sisis with truncate_only 2> go
Datenbankdevices löschen
Beispiel.
1> drop database abc 2> go 1> sp_dropdevice DATAabcDev 2> go 1> sp_dropdevice LOGabcDev 2> go
Sybase-Server stoppen.
Physikalische Dateien löschen.
Sybase-Server wieder starten.
Datenbank entladen und laden
Erstellen einer Sicherung mit Skript "SYBASEsave.sh".
#!/bin/bash # # Sybase ASE database backup # PATH=$PATH:/usr/local/bin . $(pkgparam sisisbase SISISROOT)/etc/syb.rc # Password of Sybase user "sa" PASSWORD=$(cat $SISISROOT/etc/syb/syb.pw | grep ^sa: | awk -F: '{ print $2 }' | tr -d '\012') BACKUPPATH=/backup/sybase SC_SQL="/opt/sybase/OCS-12_5/bin/isql -Usa -P${PASSWORD} -SsisisSYB" for DATABASE in bsisis gsisis lsisis msisis sisis do DATE=$(date +%Y%m%d-%H%M) printf "dump database ${DATABASE} to \"compress::${BACKUPPATH}/DBSAVE${DATABASE}.${DATE}.cdmp\"\ngo\n" | $SC_SQL done
Erstellen einer Sicherung der Datenbank "sisis".
$ $SYBASE/OCS-12_5:/bin/isql -Usa -Pxxxxxx 1> dump database sisis to "/backup/sybase/dump-1" 2> stripe on "/backup/sybase/dump-2" 3> stripe on "/backup/sybase/dump-3" 4> go
Datenbank "sisis" in bestehenden DBspace laden.
$ $SYBASE/OCS/bin/isql -Usa -Pxxxxxx 1> load database sisis from "/backup/sybase/dump-1" 2> stripe on "/backup/sybase/dump-2" 3> stripe on "/backup/sybase/dump-3" 4> go 1> online database sisis 2> go
Jeder "dump"- bzw. "load"-Befehl kann bis zu 31 "stripe on"-Klauseln besitzen (was insgesamt 32 dump devices ergibt).
Entladen von Daten
Schreiben der Ergebnisse einer Abfrage in die Datei "/tmp/outfile".
$ printf "select count(*) from d01buch\ngo\n" | \ /opt/sybase/OCS-12_5/bin/isql -b -s "|" -w 1024 -U<Benutzer> -P<Passwort> -D<Datenbank> > /tmp/outfile
entladen.sh
#!/bin/sh read -p "Select-Abfrage? " abfrage if [ "$(echo "$abfrage" | awk '{ print $1 }')" != "select" ]; then echo "Der Befehl beginnt nicht mit \"select\" - Abbruch!!!" exit 1 fi tmp=$(mktemp /tmp/temp.XXXXXX) echo "" echo "Die Abfrage wird jetzt ausgeführt..." printf "${abfrage}\ngo\n" | \ $SC_SQL -b -s ";" -w 1024 -Usisis -P<password> -SsisisSYB -Dsisis > ${tmp} echo "" echo "Die ersten 10 Zeilen der Entladedatei sehen so aus:" echo "" head ${tmp} echo "" echo "Die Datei steht unter ${tmp}" echo ""
dbtool
Unter Sybase kann mit dem SISIS-tool "dbtool" entladen werden (leider nicht so bequem wie unter Informix mit "unload").
login: sisis $ export DBS=syb DATABASE=sisis $ /home/sisis/sc/dbtool steuerdatei
Die Steuerdatei muss vorher mit "vi" angelegt werden:
1. Entladen aller Datensätze
@@UNLOAD sisisinst /tmp/sisisinst.load @@END
2. Entladen aller Datensätze, aber nur zwei Spalten
@@UNLOAD sisisinst /tmp/sisisinst.load @@FIELDS datum version @@END
3. Entladen von zwei Spalten mit where-Bedingung
@@UNLOAD sisisinst /tmp/sisisinst.load @@FIELDS datum version @@WHERE version=V3.0A00 @@END
Ausgabe von Systematiknummer und Mediennummer aller Buchdatensätze mit der Systematiknummer 11 in die Datei "/tmp/ergebnis". Achtung: Die Werte von Feldern (hier "d01mart") des Typs SMALLINT dürfen nicht in Anführungszeichen gesetzt werden!
@@UNLOAD d01buch /tmp/ergebnis @@FIELDS d01mart d01gsi @@WHERE d01mart=11 @@END
4. Entladen von zwei Spalten aus zwei unterschiedlichen Tabellen
Zuerst muss ein view (hier "bibliotheca") angelegt werden.
$ $SYBASE/OCS/bin/isql -Usisis -Psisis123 -SsisisSYB -Dsisis 1> create view bibliotheca as 2> select d01gsi, titel from d01buch, titel_dupdaten where d01katkey=katkey 3> go 1> quit $ export DBS=syb $ export DATABASE=sisis $ /home/sisis/sc/dbtool connected to Sybase:sisis @@UNLOAD bibliotheca /tmp/bibliotheca.unl @@END begin operation: UNLOAD (bibliotheca) 370020 rows unloaded... command executed CTRL+C
loadINFintoSYB.sh.txt
Achtung: Zu diesem Thema gibt es auch ein offizielles Dokument.
Wechsel ins Verzeichnis, wo sich die Informix db-schema-Datei befindet und Setzen der Umgebung. Name der Beispieldatenbank ist hier "kbu".
$ cd ..../dbexport.kbu $ export DBS=syb $ export DATABASE=kbu $ export SISISHOME=$(pkgparam sisisbase SISISHOME) $ export LANG=de $ export AREA=/tmp
Hinzufügen des Pfads zu Perl zur Variable PATH.
$ export PATH=$PATH:/usr/local/sisis-pap/bin
Aufruf des Skripts "loadINFintoSYB.sh".
$ $SISISHOME/sc/loadINFintoSYB.sh -a
Eine einzelne Tabelle kann wie folgt aus einer Datei geladen werden.
$ $SISISHOME/sc/loadINFintoSYB.sh -t <Tabellenname> -f <Informix-unload-Datei>
Weblinks
- Sybase (Sybase.com)
- Sybase Deutschland (Sybase.de)
- Sybase (Selectorweb.com)
- Die Big Boys kommen : Sybase Adaptive Server Enterprise (Linux-Magazin.de 1999.05)