Obsah

Firebird3

Instalace Windows

Instalace Linux

apt install zsh
useradd -m -g users -G sudo -s /bin/zsh obis
passwd obis
#pridat contrib do /etc/apt/sources.list
sudo apt update
sudo apt-get install libtommath1 libncurses5 vim mc unzip lftp ttf-mscorefonts-installer liblua5.3-0
cd /usr/lib/x86_64-linux-gnu/
sudo ln -s libtommath.so.1 libtommath.so.0
sudo dpkg-reconfigure locales
cd /tmp
wget https://github.com/FirebirdSQL/firebird/releases/download/...   #http://firebirdsql.org/en/firebird-3-0/
tar -xzvf Firebird-3.0
cd /tmp/Firebird-3.0
sudo ./install.sh  #nastavuje heslo sysdba
sudo systemctl status firebird-superserver.service
sudo /opt/firebird/bin/changeServerMode.sh
sudo vim /lib/systemd/system/firebird-classic.socket #zmenit post 3050
sudo systemctl restart firebird-classic.socket
echo "show version;" | isql localhost:employee
sudo usermod -d /home/firebird firebird
sudo mkdir -p /home/firebird/fdbs
sudo chown firebird:firebird /home/firebird -R
sudo chmod g+rwX /home/firebird/fdbs
sudo tar -xzvf /tmp/data.tar.gz -C /home/firebird/fdbs
sudo chown firebird:firebird /home/firebird -R
sudo usermod -a -G firebird obis
isql localhost:/home/firebird/fdbs/licence.fdb
isql /home/firebird/fdbs/licence.fdb

OBIS

unzip install/obis-client-64bit.zip
tar -xzvf install/obis-client-64bit.tar.gz
vim etc/obisrc.xml
cd lualib5.3/lib/x86_64-Linux
ln -s ssl.so.3.0.0 ssl.so
ln -s openssl.so.3.0.0 openssl.so
./bin64/passwd -dbpass $ISC_PASSWORD
./bin64/licencec -list

SAMBA

sudo apt-get install samba
sudo vim /etc/samba/smb.conf
sudo smbpasswd -a obis
sudo systemctl restart smbd.service

smb.conf

preserve case = yes

[obis]
   comment = Obis
   path = /mnt/data/obis5
   writeable = yes
   create mode = 664
   directory mode = 775
   guest ok = no
   #valid users = @users

[obisdoc]
   comment = Obis dokumenty
   path = /mnt/data/obisdoc
   writeable = yes
   create mode = 664
   directory mode = 775
   guest ok = no
   #valid users = @users

Instalace/upgrade FB2->3 Linux

sudo apt-get install libtommath1 libncurses5
cd /usr/lib/x86_64-linux-gnu/
sudo ln -s libtommath.so.1 libtommath.so.0
sudo systemctl stop cron
wget https://github.com/FirebirdSQL/firebird/releases/download/... #https://firebirdsql.org/en/firebird-3-0/
tar -xzvf Firebird-3.0
cd /tmp/Firebird-3.0
gbak -V localhost:/home/firebird/licence.fdb /mnt/backup/licence25.fbk
gbak -V localhost:/home/firebird/data.fdb /mnt/backup/data25.fbk
sudo mv /etc/xinetd.d/firebird /$HOME/
sudo systemctl restart xinetd.service
sudo systemctl status xinetd.service
sudo mv /opt/firebird /opt/firebird25.bk
sudo killall fb_inet_server
sudo ./install.sh  #nastavuje heslo sysdba
sudo systemctl status firebird-superserver.service
sudo /opt/firebird/bin/changeServerMode.sh
sudo systemctl status firebird-classic.socket
echo "show version;" | isql localhost:employee.fdb
sudo mv /home/firebird/*.fdb /tmp/
gbak -R -V /mnt/backup/licence25.fbk localhost:/home/firebird/licence.fdb
gbak -R -V /mnt/backup/data25.fbk localhost:/home/firebird/data.fdb
sudo systemctl start cron
sudo systemctl status cron

Změna hesla sysdba

ALTER USER sysdba password 'heslo';
SELECT SEC$USER_NAME, SEC$PLUGIN FROM sec$users;

SLES 15

* FB3 vyzaduje ICU 52, ktere neni v repo (nelze instalovat z tar.gz)

sudo zypper install firebird

Script na vytvoreni backup a restore scriptu DB ODS 11->12

create_fbupgrade_scripts.sh

#!/bin/bash
#etc/obisrc.xml - presunout data.fdb na prvni misto
#uzivatel musi mit pravo zapisu do /firebird/fdbs - jinak nejede restore rychle lokalne ale pomalu pres remote
#vytvoreni scriptu pro prevod: create_fbupgrade_scripts.sh [-d dataname] [/tmp/firebird64] #pro pomocnou embed verzi 2.5 - prevod zapomenutych DB
#nasledne pouziti: [dellog_all_db.sh]; backup_all_db.sh; move_all_db.sh; instalace FB3; restore_all_db.sh
#vytvoreni /tmp/firebird64 - verze 2.5 embed pro zapomenute databaze:
#  cd /tmp/
#  lftp ftp.epos.cz -e "get obis/firebird-clients/259/linux64-embed.tgz; exit"
#  tar -xzvf linux64-embed.tgz
#zkopirovat DB do /tmp/data.fdb
#./create_fbupgrade_scripts.sh -d data-tmp /home/kaja/obis4git/firebird25
#  nasledne: backup_restore_all_db.sh
#databaze velikost 1.6GB backup 60sec, restore 100sec, backup+restore 100sec (dellog_all_db zrychluje minimalne - 15sec)
 
. `dirname $0`/setenv.sh
 
[ -d $BACKUPPATH ] || echo "ERROR: BACKUPPATH "$BACKUPPATH" neexistuje"
[ -d $SCRIPTSDIR ] || echo "ERROR: SCRIPTSDIR "$SCRIPTSDIR" neexistuje"
touch $DATABASEPATH/fb3_upgrade
if [ $? -ne 0 ]; then 
  echo "ERROR: nelze zapisovat do $DATABASEPATH"
fi
 
if [ "$1" = "-d" ]; then
  `$ROOTDIR/bin64/loginc -syspass "$SYSPASS" -dataname $2 -exec "$ROOTDIR/bin64/setisc.sh"`
  ALLDB="$ISC_DATABASE"
  shift 2
else
  `$ROOTDIR/bin64/loginc -syspass "$SYSPASS" -licence -exec "$ROOTDIR/bin64/setisc.sh"`
  LICDB=$ISC_DATABASE
  `$ROOTDIR/bin64/loginc -syspass "$SYSPASS" -alldata -exec "$ROOTDIR/bin64/setisc.sh"`
  ALLDB="$LICDB;$ISC_DATABASE"
fi
#echo $ALLDB
 
DELLOGSCRIPT=$SCRIPTSDIR/dellog_all_db.sh
BACKUPSCRIPT=$SCRIPTSDIR/backup_all_db.sh
MOVESCRIPTS=$SCRIPTSDIR/move_all_db.sh
RESTORESCRIPT=$SCRIPTSDIR/restore_all_db.sh
echo "#!/bin/sh" | tee $DELLOGSCRIPT $BACKUPSCRIPT $MOVESCRIPTS $RESTORESCRIPT > /dev/null
chmod +x $DELLOGSCRIPT $BACKUPSCRIPT $MOVESCRIPTS $RESTORESCRIPT
 
if [ "$1" = "" ]; then
  FBOLD=$FIREBIRD
else
  FBOLD=$1
  echo "export FIREBIRD=$FBOLD" | tee -a $DELLOGSCRIPT $BACKUPSCRIPT > /dev/null
  echo "export LD_LIBRARY_PATH=$FBOLD/lib" | tee -a $DELLOGSCRIPT $BACKUPSCRIPT > /dev/null
  BACKUPRESTORESCRIPT=$SCRIPTSDIR/backup_restore_all_db.sh
  echo "#!/bin/sh" > $BACKUPRESTORESCRIPT
  chmod +x $BACKUPRESTORESCRIPT
  shift
fi
FBNEW=$FIREBIRD
 
while IFS=';' read -ra DBS; do
  for DB in "${DBS[@]}"; do
    LOCDB=${DB#*:} 
    DBFN=`basename $LOCDB .fdb`
 
cat <<EOF >> $DELLOGSCRIPT
LIMIT=100
echo "delete log $LOCDB"
echo "delete from common_log where datum<CURRENT_DATE-\$LIMIT;" | $FBOLD/bin/isql $LOCDB
echo "delete from common_syslog where datum<CURRENT_DATE-\$LIMIT;" | $FBOLD/bin/isql $LOCDB
EOF
 
cat <<EOF >>$BACKUPSCRIPT
echo "backup $LOCDB log /tmp/$DBFN-25.log"
rm -f /tmp/$DBFN-25.log
$FBOLD/bin/gbak -z -b -g -v -y /tmp/$DBFN-25.log  $LOCDB $BACKUPPATH/$DBFN.fbk
ls -lh $BACKUPPATH/$DBFN.fbk
EOF
 
cat <<EOF >>$MOVESCRIPTS
mv $LOCDB $BACKUPPATH/$DBFN.ods11.fdb
ls -lh $BACKUPPATH/$DBFN.ods11.fdb
EOF
 
cat <<EOF >>$RESTORESCRIPT
echo "restore $LOCDB log /tmp/$DBFN-30.log"
rm -f /tmp/$DBFN-30.log
$FBNEW/bin/gbak -z -c -v -y /tmp/$DBFN-30.log $BACKUPPATH/$DBFN.fbk $LOCDB
sudo chown firebird:firebird $LOCDB
echo "show version;" | $FBNEW/bin/isql $DB | tail -n 1
EOF
 
if [ "$BACKUPRESTORESCRIPT" != "" ]; then
 
cat <<EOF >>$BACKUPRESTORESCRIPT
echo "backup + restore $LOCDB log /tmp/$DBFN-25.log /tmp/$DBFN-30.log"
rm -f /tmp/$DBFN-25.log /tmp/$DBFN-30.log
mv $LOCDB $LOCDB.ods11
FIREBIRD=$FBOLD LD_LIBRARY_PATH=$FBOLD/lib $FBOLD/bin/gbak -z -b -g -v -y /tmp/$DBFN-25.log $LOCDB.ods11 stdout | pv | $FBNEW/bin/gbak -z -c -v -y /tmp/$DBFN-30.log stdin $LOCDB
sudo chown firebird:firebird $LOCDB
echo "show version;" | $FBNEW/bin/isql $DB | tail -n 1
EOF
 
fi
 
  done
done <<< "$ALLDB"
cat << EOF | tee -a $RESTORESCRIPT $BACKUPRESTORESCRIPT > /dev/null
echo "Vytvarim zalohy backup-firebird 0-2"
sudo -u firebird $SCRIPTSDIR/backup-firebird.sh 0
sudo -u firebird $SCRIPTSDIR/backup-firebird.sh 1
sudo -u firebird $SCRIPTSDIR/backup-firebird.sh 2
EOF

Prevod zapomenutych databazi ODS 11.2->12 po instalaci FB3

cd /tmp/
lftp ftp.epos.cz -e "get obis/firebird-clients/259/linux64-embed.tgz; exit"
tar -xzvf linux64-embed.tgz
export FIREBIRD=/tmp/firebird64
export LD_LIBRARY_PATH=/tmp/firebird64/lib
/tmp/firebird64/bin/gbak -B /tmp/datapok2.fdb stdout | /opt/firebird/bin/gbak -R -V stdin /tmp/datapok3.fdb

FB_3_Migration_Guide_rev120.pdf

Nastavení kompatibility

firebird.conf

#Kompatibilita s klienty v2.5
AuthServer = Srp, Legacy_Auth
UserManager = Srp, Legacy_UserManager
WireCrypt = Enabled
 
#Pro testování
RemoteServicePort = 3055

Nastavení hesla pro uživatele SYSDBA

service firebird-superserver stop

isql -u SYSDBA security3.fdb
#pro klienty v2.5
ALTER USER SYSDBA PASSWORD 'Heslo' USING PLUGIN Legacy_UserManager;
#pro klienty v3
ALTER USER SYSDBA PASSWORD 'Heslo' USING PLUGIN Srp;
COMMIT;
#seznam uživatelů
SELECT * FROM SEC$USERS;

service firebird-superserver start

Klient

apt-get install libtommath0

Převod zpět ODS 12->11.2