Donnerstag, 1. Oktober 2009

Firebirds Database Trigger

Es ist in der Datenbank möglich Trigger für CONNECT, DISCONNECT, TRANSACTION START, TRANSACTION COMMIT oder TRANSACTION ROLLBACK anzulegen.
Damit könnte man sogar den Sysdba aussperren.

Für diesen Fall gibt es den Schalter
-nodbtriggers. Anwendbar auf gbak und isql

Hier ein Beispiel um einen DB-Trigger abzuschalten

isql myFirebidDB.fdb -user sysdba -pass masterkey -nodbtriggers
Database: myFirebidDB.fdb, User: sysdba
SQL> ALTER TRIGGER MYONCONNECTDBTRIGGER INACTIVE;
SQL> EXIT;

Freitag, 14. August 2009

aliases.conf unter Windows Vista

Die eine oder andere Datenbank wird lokal unter Windows Vista ausgeführt und die Ansteuerung über die aliases.conf definiert. Die Bearbeitung der aliases.conf unter Windows Vista sollten Sie allerdings als Administrator vornehmen.

Administrator zu sein reicht nicht, Sie müssen ggf. bereits den Explorer als Administrator starten.

Andernfalls schiebt das System die Datei in das Verzeichnis

C:\Users\Benutzername\AppData\Local\VirtualStore\Program Files\Firebird\Firebird_2_0

In diesem Verzeichnis sucht der Server nur, wenn Sie ihn über localhost ansteuern. Remote über die eigene IP greift Firebird auf den eigenen Programmpfad zu und dort steht ggf. noch die installierte aliases.conf.

Dienstag, 14. Juli 2009

Sonntag, 17. Mai 2009

RAID? Kann, muss nicht, hilft nicht immer.

Mit RAID - Systemen kann man viele Vorteile erreichen. Wenn allerdings der RAID-Controller defekt ist, kann bereits ein fehlerhaftes Byte Ihre mehrere Gigabyte große Datenbank zur Strecke bringen.

Die Auswirkungen sind enorm und der Fehler -wenn überhaupt - nur schwer zu finden. Schlimmstenfalls bauen Sie Ihre Datenbank also auf demselben System neu auf und stehen wenige Stunden später vor demselben Problem.

Allen Technikgläubigen sei ins Stammbuch geschrieben, dass man noch so tief in die Tasche greifen kann für einen Markencontroller seiner Wahl: wir haben so einen entsorgt.

Meine Empfehlung bei einer zerstörten Datenbank lautet: Wenn Sie nicht wissen, was die Ursache dafür war, wechseln Sie auf den Ausfallserver.

Eine Reparatur (z.B. FBFirstAid) hinterläßt immer Spuren und niemals einen vollständigen Datenbestand. Arbeiten Sie mit der letzten Sicherung weiter und nutzen Sie die reparierte Datenbank, um verlorene Daten zu ergänzen.

Das nachfolgende firebird.log zeigt (natürlich stark verkürzt) die Auswirkungen eines defekten Controllers. Wenn Sie auch nur eine Zeile davon bei sich finden, haben Sie ein Hardwareproblem.

Versprochen.

firebird.log

internal gds software consistency check (wrong record length (183), file: vio.cpp line: 1109)

internal gds software consistency check (cannot find record fragment (248), file: dpm.cpp line: 1181)

internal gds software consistency check (decompression overran buffer (179), file: sqz.cpp line: 222)

Index 5 is corrupt on page 203839 level 140544214827009.
File: ../src/jrd/validation.cpp, line: 140544214828627
in table TESTTABLE (141)

Record 9267366 is wrong length in table TESTTABLE2 (142)

Fragmented record 9267368 is corrupt in table TESTTABLE2 (142)

Chain for record 9267372 is broken in table TESTTABLE2 (142)

Page 238166 wrong type (expected 5 encountered 7)

Data page 238225 (sequence 20685) is confused in table TESTTABLE2 (142)

Relation has 4294966985 orphan backversions (4354 in use) in table TESTTABLE2 (142)

Index 3 is corrupt on page 188383 level 140544214827009. File: ../src/jrd/validation.cpp, line: 140544214828627
in table TESTTABLE3 (146)

Page 238382 doubly allocated

Index 8 is corrupt (missing entries) in table TESTTABLE (173)

Page 152989 is an orphan

Sonntag, 22. März 2009

Firebird Classic Server unter Linux

Der Classicserver ist unter Linux bei Mehrprozessormaschinen die erste Wahl. Allerdings sind im Gegensatz zum Superserver einige Einstellungen zur Serverkonfiguration vorzunehmen bzw. anzupassen um ausreichend skalieren zu können. Die folgende Beispielkonfiguration zielt auf einen Einsatz des Classicservers mit mehr als 100 Benutzern auf einer SMP-Maschine mit entsprechender Ausstattung.

/etc/pam.d/xdm und login
session required pam_limits.so

/etc/security/limits.conf
firebird soft nproc 16384
firebird hard nproc 16384
firebird soft nofile 65536
firebird hard nofile 65536

/etc/xinet.d/firebird
service gds_db {
# These lines cause problems with Windows XP SP2 clients
# using default firewall configuration (SF#1065511)
# log_on_success += USERID
# log_on_failure += USERID
socket_type = stream
protocol = tcp
wait = no
user = firebird
server = /opt/firebird/bin/fb_inet_server
flags = REUSE
instances = UNLIMITED
per_source = UNLIMITED
}

/etc/sysctl.conf

#Disable response to broadcasts.
#You don't want yourself becoming a Smurf amplifier.
#net.ipv4.icmp_echo_ignore_broadcasts = 1
#enable route verification on all interfaces
#net.ipv4.conf.all.rp_filter = 1
#enable ipV6 forwarding
#net.ipv6.conf.all.forwarding = 1
kernel.shmall = 134217728
kernel.shmmax = 134217728
kernel.sem=4096 512000 1600 9000
fs.file-max = 16384
kernel.threads-max = 50000

/opt/firebird/firebird.conf
DefaultDbCachePages = 2048
LockSemCount = 1048
LockHashSlots = 2017
LockMemSize = 8388608

/etc/services
gds_db 3050/tcp # Firebird SQL Database Remote Protocol