Firebird zarządzanie: Różnice pomiędzy wersjami

Nie podano opisu zmian
WTerpiłowski (dyskusja | edycje)
 
(Nie pokazano 6 wersji utworzonych przez jednego użytkownika)
Linia 409: Linia 409:
*''Szczegóły'' – klikniecie powoduje wyświetlenie szczegółowych informacji o przyczynie błędu, co umożliwia wyjaśnienie jego przyczyny,
*''Szczegóły'' – klikniecie powoduje wyświetlenie szczegółowych informacji o przyczynie błędu, co umożliwia wyjaśnienie jego przyczyny,
*''Drukuj opis'' – kliknięcie powoduje wydrukowanie formularza z opisem błędu, który użytkownik powinien przesłać faxem do INFO-SYSTEM.
*''Drukuj opis'' – kliknięcie powoduje wydrukowanie formularza z opisem błędu, który użytkownik powinien przesłać faxem do INFO-SYSTEM.
*''Wyślij opis'' – powoduje przesłanie informacji o wystąpieniu błędu wraz z jego opisem i własnym komentarzem do INFO-SYSTEM (wymaga połączenia internetowego). Kolejne opisy błędów zapisywane są w pliku ERROR_LOG.XML – plik ten można przesłać mailem na adres [mailto:serwis@groszek.pl serwis@groszke.pl] w celu wyjaśnienia powstałych problemów. Poniżej zapis odpowiadający błędowi z powyższego przykładu:
*''Wyślij opis'' – powoduje przesłanie informacji o wystąpieniu błędu wraz z jego opisem i własnym komentarzem do INFO-SYSTEM (wymaga połączenia internetowego). Kolejne opisy błędów zapisywane są w pliku ERROR_LOG.XML – plik ten można przesłać mailem na adres [mailto:serwis@groszek.pl serwis@groszek.pl] w celu wyjaśnienia powstałych problemów. Poniżej zapis odpowiadający błędowi z powyższego przykładu:
<syntaxhighlight lang="xml">
<syntaxhighlight lang="xml">
<?xml version="1.0" encoding="windows-1250" ?>
<?xml version="1.0" encoding="windows-1250" ?>
Linia 627: Linia 627:
Firebird-owa baza danych składa się z logicznych bloków zwanych stronami. Każda strona ma ten sam rozmiar, który określany jest podczas tworzenia bazy lub podczas odtwarzania jej z kopii poleceniem gback. Gdy serwer podłącza się do bazy, rezerwuje pewną ilość pamięci RAM jako tzw. cache (pamięć podręczna). Dzięki temu może przyspieszyć dostęp do stron, które były przed chwilą wczytane z bazy. Serwer dysponuje dwoma pamięciami podręcznymi na każdą aktywną bazę danych - ''Metadata cache'' i ''Page cache''. Pierwsza gromadzi informacje o metadanych, druga - gromadzi strony ostatnio odczytane. Rozmiar pamięci stronicowej (''page cache'') dla wszystkich baz danych określa parametr w pliku ''firebird.conf'' (podawany jest jako liczba stron). Ilość alokowanej pamięci jest zatem iloczynem liczby stron i rozmiaru pojedynczej strony. Rozmiar pamięci stronicowej może być także określona dla każdej bazy z osobna (używając ''gfix -buffers'').
Firebird-owa baza danych składa się z logicznych bloków zwanych stronami. Każda strona ma ten sam rozmiar, który określany jest podczas tworzenia bazy lub podczas odtwarzania jej z kopii poleceniem gback. Gdy serwer podłącza się do bazy, rezerwuje pewną ilość pamięci RAM jako tzw. cache (pamięć podręczna). Dzięki temu może przyspieszyć dostęp do stron, które były przed chwilą wczytane z bazy. Serwer dysponuje dwoma pamięciami podręcznymi na każdą aktywną bazę danych - ''Metadata cache'' i ''Page cache''. Pierwsza gromadzi informacje o metadanych, druga - gromadzi strony ostatnio odczytane. Rozmiar pamięci stronicowej (''page cache'') dla wszystkich baz danych określa parametr w pliku ''firebird.conf'' (podawany jest jako liczba stron). Ilość alokowanej pamięci jest zatem iloczynem liczby stron i rozmiaru pojedynczej strony. Rozmiar pamięci stronicowej może być także określona dla każdej bazy z osobna (używając ''gfix -buffers'').


====Różnice między rodzajami architektur serwera====
=====Różnice między rodzajami architektur serwera=====


{| class="wikitable"
{| class="wikitable"
Linia 646: Linia 646:
| Pamięć podręczna bazy danych jest współdzielona przez wszystkie, skierowane do niej, połączenia. Nie jest wymagana synchronizacja tych samych stron pobranych przez różne połączenia. Wszystkie połączenia działają w ramach pojedynczego procesu. Jeżeli któreś z połączeń przeciąży serwer powodując jego zamknięcie, to spowoduje to zakończenie wszystkich pozostałych połączeń. Wątki obsługujące połączenia działają równolegle w przypadku wielordzeniowych procesorów.
| Pamięć podręczna bazy danych jest współdzielona przez wszystkie, skierowane do niej, połączenia. Nie jest wymagana synchronizacja tych samych stron pobranych przez różne połączenia. Wszystkie połączenia działają w ramach pojedynczego procesu. Jeżeli któreś z połączeń przeciąży serwer powodując jego zamknięcie, to spowoduje to zakończenie wszystkich pozostałych połączeń. Wątki obsługujące połączenia działają równolegle w przypadku wielordzeniowych procesorów.
|}
|}
====Wybór rodzaju architektury serwera====
=====Wybór rodzaju architektury serwera=====
=====Classic=====
======Classic======
Może być stosowany na wieloprocesorowych/wielordzeniowych serwerach utrzymujących dużą liczbę jednoczesnych połączeń. Serwer Classic jest szczególnie zalecany wtedy, gdy aplikacje wymagają maksimum stabilności - zerwanie pojedynczego połączenia nie wpływa na pozostałe.
Może być stosowany na wieloprocesorowych/wielordzeniowych serwerach utrzymujących dużą liczbę jednoczesnych połączeń. Serwer Classic jest szczególnie zalecany wtedy, gdy aplikacje wymagają maksimum stabilności - zerwanie pojedynczego połączenia nie wpływa na pozostałe.


=====SuperClassic=====
======SuperClassic======
Może być stosowany na wieloprocesorowych/wielordzeniowych serwerach, ale zalecane jest instalowanie wersji 64-bitowej. Z powodzeniem obsłuży dużą liczbę jednoczesnych połączeń zużywając mniej zasobów niż wersja Classic. Także lepsza skalowalność, ponieważ synchronizacja pamięci podręcznej nie wymaga komunikacji między procesami. Jednak awaria jednego połączenia zamknie wszystkie pozostałe połączenia.
Może być stosowany na wieloprocesorowych/wielordzeniowych serwerach, ale zalecane jest instalowanie wersji 64-bitowej. Z powodzeniem obsłuży dużą liczbę jednoczesnych połączeń zużywając mniej zasobów niż wersja Classic. Także lepsza skalowalność, ponieważ synchronizacja pamięci podręcznej nie wymaga komunikacji między procesami. Jednak awaria jednego połączenia zamknie wszystkie pozostałe połączenia.


=====SuperServer=====
======SuperServer======
Od wersji 3.0 architektura SuperServer, to architektura standardowa (zalecana). Korzysta ze wszystkich procesorów/rdzeni dostępnych na komputerze i ma współdzieloną pamięć podręczną (synchronizacja nie jest potrzebna).
Od wersji 3.0 architektura SuperServer, to architektura standardowa (zalecana). Korzysta ze wszystkich procesorów/rdzeni dostępnych na komputerze i ma współdzieloną pamięć podręczną (synchronizacja nie jest potrzebna).
Rodzaj wybranej architektury określany jest w pliku ''firebird.conf'' za pomocą parametru ''ServerMode''. Może on przybierać następujące wartości:
Rodzaj wybranej architektury określany jest w pliku ''firebird.conf'' za pomocą parametru ''ServerMode''. Może on przybierać następujące wartości:
Linia 659: Linia 659:
*SuperClassic - pojedynczy proces serwera otwiera plik bazy w trybie współdzielonym. Każde połączenie ma własną stronicową pamięć podręczną,
*SuperClassic - pojedynczy proces serwera otwiera plik bazy w trybie współdzielonym. Każde połączenie ma własną stronicową pamięć podręczną,
*Classic - dla każdego połączenia uruchamiany jest oddzielny proces serwera. Każdy proces otwiera plik bazy danych w trybie współdzielonym. Każde połączenie ma własną stronicową pamięć podręczną.
*Classic - dla każdego połączenia uruchamiany jest oddzielny proces serwera. Każdy proces otwiera plik bazy danych w trybie współdzielonym. Każde połączenie ma własną stronicową pamięć podręczną.
====Instalowanie serwera Firebird 3====
'''Rodzaj instalacji'''
Wybieramy pełną instalację ''- Full instalation of Server and development tools''. Zostaną zainstalowane: serwer Firebird, klient i programy użytkowe ''gbak'', ''gfix'', ''isql'', itp.
'''Architektura serwera'''
Wybieramy ''SuperServer''. Możemy zaznaczyć użycie ''Firebird Guardian'' do uruchamiania i restartowania serwera, o ile wybierzemy uruchamianie serwera jako aplikacji. W przypadku usługi nie jest zalecane używanie ''Guardian-a''.
'''32 czy 64 bity'''
Na 64 bitowych systemach operacyjnych można instalować obydwie wersje serwera. Wersja 64 bitowa serwera zużywa około 30% więcej pamięci RAM niż wersja 32-bitowa. Instalując 64-bitową wersję należy zapewnić odpowiednią ilość pamięci RAM. Ograniczenie pamięciowe wersji 32-bitowa: do 2 GB pamięci RAM.
Problem funkcji UDF zewnętrznych autorów (o ile są używane) - instalując 64 bitowe należy mieć 64 bitowe wersje używanych UDF-ów. Zestaw funkcji UDF dostarczany wraz z instalatorem ma obydwie wersje.
Aplikacje klienckie w wersji 32-bitowej muszą używać 32-bitowej biblioteki klienckiej (''fbclient.dll'').
Instalator umieszcza 32-bitowe wersje bibliotek i programów narzędziowych w dedykowanym katalogu o nazwie ''WOW64'' (w ramach katalogu, w którym został zainstalowany Firebird).
'''''Jeżeli używamy wersji instalacyjnej do zainstalowania klienta Firebird to zawsze na końcówce instalujemy wersje 32-bitową.'''''
'''Usługa czy aplikacja?'''
Serwer Firebird powinien być uruchamiany jako usługa. Jedynie w szczególnych przypadkach, w których zależy nam na łatwym zatrzymywaniu i restartowaniu serwera, wybieramy aplikację (np. w przypadku systemów deweloperskich). Uruchamianie serwera jako usługi nie wymaga zalogowania się w Windows, aby Firebird wystartować i eliminuje możliwość uruchomienia go z niewłaściwego konta.
'''Uruchamianie automatyczne'''
W przypadku serwera produkcyjnego powinniśmy wybrać automatyczne uruchamianie usługi.
'''Biblioteka kliencka'''
Aplikacje firmy INFO-SYSTEM domyślnie używają biblioteki klienckiej o nazwie ''GDS32.DLL''. Powinniśmy zaznaczyć kwadrat ''Generate client library as GDS32.DLL for legacy Interbase support?'' aby biblioteka została utworzona i znalazła się w katalogu systemowym.
Jeżeli aplikacje INFO-SYSTEM znajdują się na wydzielonym serwerze plików i używają własnych kopii biblioteki klienckiej, to musimy pamiętać, aby je podmienić na nową wersję. Jeżeli aplikacje zainstalowane są na każdym stanowisku z osobna, to powinniśmy zainstalować na tych stanowiskach biblioteki klienckie (rodzaj instalacji: ''Minimal client install - no server, no tools'').
'''Uwierzytelnienie dla klientów poprzednich wersji Firebird-a (Authorization for legacy Firebird clients)'''
Jeżeli to możliwe, to unikamy ustawienia tych parametrów, ponieważ znacznie zmniejszają bezpieczeństwo serwera. Opcja konfiguracyjna pozwala określić parametry: ''AuthServer'', ''AuthClient'', ''UserManager'' i ''WireCrypt''. Będą one używane w do komunikacji z bibliotekami klienckimi z poprzednich wersji.
'''Hasło Administratora Systemu Bazodanowego (SYSDBA)'''
Okno pozwala określić nazwę Administratora i jego hasło. Jeżeli pozostawimy pola puste, to utworzony zostanie konto administratora o nazwie ''SYSDBA'' i haśle ''masterkey''. '''Uwaga!''' Należy unikać stosowania hasła ''masterkey'', ponieważ jest ono wszystkim znane. Koniecznie musimy zmienić hasło administratora na inne.
'''Sprawdzenie poprawności instalacji'''
Stan instalacji serwera można sprawdzić uruchamiając polecenie:
instsvc q
Polecenie wyświetli informacje o stanie instalacji serwera ''Firebird''. Polecenie powinno zostać wykonane z wiersza poleceń uruchomionego jako administrator. '''Uwaga!''' Serwer ''Firebird'' używa protokołu TCP/IP i portu o numerze 3050. Gdy używana jest zapora ogniowa (firewall), to musimy pozwolić serwerowi na otwarcie tego portu.
=====Powiązanie usługi z innym użytkownikiem=====
Proces instalacji serwera jako usługi kojarzy ją z użytkownikiem ''LocalSystem''. W celu lepszej ochrony i zwiększenia bezpieczeństwa serwera możemy związać usługę z innym, specjalnie w tym celu stworzonym, użytkownikiem. Przeprowadzamy to za pomocą programu użytkowego ''instsvc''. Użytkownik musi mieć uprawnienie odczytu/zapisu do wszystkich plików bazodanowych i do pliku ''firebird.log''. Ze względów bezpieczeństwa użytkownik nie powinien mieć praw do zmiany zawartości pliku ''firebird.conf''.
Polecenie wiążące usługę serwera z użytkownikiem ''myuser'' i hasłem ''mysecret'':
instsvc i -g -login myuser mysecret
Polecenie ''instsvc'' może służyć do uruchomienia i zatrzymania serwera:
instsvc start
instsvc stop
=====INSTREG=====
Program narzędziowy ''instreg'' modyfikuje rejestr Windows tworząc klucz ''HKLM\SOFTWARE\Firebird Project\Firebird Server\Instances''. Wskazuje on katalog, w którym został zainstalowany Firebird. Klucz nie jest potrzebny serwerowi, ale aplikacjom klienckim, włączając w to programy narzędziowe Firebird-a. Program ''instreg'' tworząc wartość klucza bierze nazwę katalogu, w którym sam się znajduje. Dlatego ważne jest, aby program był przechowywany i uruchamiany z katalogu, w którym umieścił go instalator.
Polecenie tworzące klucz:
instreg i[nstall]
Polecenie usuwające klucz:
instreg r[emove]
=====INSTCLIENT=====
Program narzędziowy ''instclient'' umieszcza kopię biblioteki klienckiej w katalogu systemowym systemu Windows:
instclient i[nstall] [ -f[orce] ] library
gdzie ''library'' może przyjąć jedną z wartości: ''f[bclient]'' lub ''g[ds32]''.
Dodatkowe opcje: ''r[emove]'' - usuń zainstalowaną bibliotekę, ''q[uery]'' - odpytaj o wersję zainstalowanej biblioteki.


====Migracja bazy do Firebird 3====
====Migracja bazy do Firebird 3====
Linia 664: Linia 736:


=====ODS (On Disk Structure)=====
=====ODS (On Disk Structure)=====
ODS określa wersję struktury bazy danych. Zapisany jest na stronie z definiującej nagłówek bazy danych. Tabela poniżej wiąże wersję ''Firebird''-a z przypisaną jej numerem ODS.
ODS określa wersję struktury bazy danych. Zapisany jest na stronie definiującej nagłówek bazy danych. Tabela poniżej wiąże wersję ''Firebird''-a z przypisaną jej numerem ODS.
{| class="wikitable"
{| class="wikitable"
! style="font-weight:bold;" | Firebird
! style="font-weight:bold;" | Firebird
Linia 716: Linia 788:
Wersja trzecia Firebird-a dodaje nowe słowa zastrzeżone. Może się zdarzyć, że zostały one użyte do nazwania kolumn w tabelach lub w kodzie procedur wbudowanych czy wyzwalaczy. Aby sprawdzić, czy tak jest w przypadku naszej bazy powinniśmy utworzyć na podstawie metadanych skrypt tworzący nową bazę. Skrypt wykonujemy w nowej wersji serwera sprawdzając, czy nie zgłosi błędów. W przypadku błędów konieczne jest przygotowanie skryptów aktualizujących metadane ze słowami zastrzeżonymi i wykonanie ich w starej wersji ''Firebird''-a (przed migracją).
Wersja trzecia Firebird-a dodaje nowe słowa zastrzeżone. Może się zdarzyć, że zostały one użyte do nazwania kolumn w tabelach lub w kodzie procedur wbudowanych czy wyzwalaczy. Aby sprawdzić, czy tak jest w przypadku naszej bazy powinniśmy utworzyć na podstawie metadanych skrypt tworzący nową bazę. Skrypt wykonujemy w nowej wersji serwera sprawdzając, czy nie zgłosi błędów. W przypadku błędów konieczne jest przygotowanie skryptów aktualizujących metadane ze słowami zastrzeżonymi i wykonanie ich w starej wersji ''Firebird''-a (przed migracją).


====Migracja====
=====Migracja=====
Po pozytywnym zakończeniu sprawdzeń/weryfikacji istniejącej bazy możemy przystąpić do jej konwersji do struktury ODS 12.
Po pozytywnym zakończeniu sprawdzeń/weryfikacji istniejącej bazy możemy przystąpić do jej konwersji do struktury ODS 12.