1. Opis ogólny
Transakcyjność
Spójność i integralność bazy danych
Metody zapewnienia integralności danych
Metoda RollForward. Kolejne kroki
2. Restart. Dokończenie procedury
Wykonanie restartu
Wymuszone zakończenie restartu
3. Tematy powiązane
1. Opis ogólny
Transakcyjność
W programie Trawers ERP występują sytuacje, gdy program zapisuje dane
jednego rekordu (zapisu) do rekordów wielu innych zbiorów (tabel) powiązanych.
Np. w procesie zatwierdzania faktury sprzedaży aktualizowane są: miesięczne
zbiory dokumentów sprzedaży i magazynowe, polecenia księgowania w NA i MG,
kartoteka należności, kartoteka odbiorców, kartoteka KIM, KSOM, ew. LOT/SER
i zbiór cen LIFO/FIFO, itp.
(en: Multi-row transactions, Multi-table transactions).
Taki ciąg operacji na bazie danych określa się terminem: transakcja.
Jest to ciag operacji, który stanowi pewną całość. Operacje z tego ciągu
powinny być wykonane wszystkie lub żadna z nich.
Spójność i integralność bazy danych
Zapisy we wszystkich powiązanych zbiorach (tabela) muszą być spójne.
Musi być zapewniona integralności bazy danych.
Gdy w wyniku awarii lub innych problemow transakcja nie została dokończona,
to baza danych traci integralność i przestaje być spójna.
Dlatego potrzebny jest mechanizm, który zapewni integralność mimo awarii,
tj. niedokończenia ciagu operacji składających się na transakcję.
Metody zapewnienia integralności danych
W praktyce konstruowania systemów ERP, które gromadzą informacje w wielu
powiązanych zbiorach danych (tabelach), stosuje się dwie podstawowe
metody zapewnienia integralności danych:
* RollBack. Polega na przywróceniu integralności bazy danych (en: Recovery)
do stanu przed rozpoczęciem transakcji (RollBack - powróć do stanu poprzedniego).
* RollForward. Polega na przywróceniu integralności bazy danych poprzez
dokończenie transakcji. RollForward (dokończ transakcje, osiągnij stan oczekiwany).
W metodzie RollForward jako punkt odniesienia służy rekord (zapis) restartu.
Rekord przechowuje wartości, które są oczekiwane w polach wielu zbiorów
uczestniczących w transakcji.
W programie Trawers ERP zastosowano metodę RollForward.
Metoda RollForward. Kolejne kroki
* Inicjalizacja transakcji:
Kiedy proces wymaga zapisów w wielu zbiorach, program tworzy rekord restartu,
zapisując w nim oczekiwane wartości dla pól tych zbiorów.
* Aktualizacja pól:
Program próbuje zaktualizować wszystkie wymagane pola w powiązanych zbiorach.
* Sprawdzenie stanu:
Jeśli aktualizacja zakończy się sukcesem dla wszystkich pól, stan zostaje
ustawiony na: [0] (sukces).
Jeśli nie wszystkie aktualizacje zakończą się sukcesem, stan: [1],
to program wykorzystuje rekord restartu do ponowienia próby aktualizacji.
* Powtórzenie aktualizacji:
Program powtarza aktualizacje, korzystając z zapisanych wartości w rekordzie restartu,
do momentu, aż wszystkie aktualizacje zakończą się sukcesem.
Program informuje o procesie, wysyła komunikat: Restart systemu trwa ...
* Zakończenie transakcji:
Po pomyślnym zakończeniu wszystkich aktualizacji, stan jest ustawiany na: [0],
co oznacza zakończenie transakcji.
Dzięki temu mechanizmowi RollForward, program zapewnia, że wszystkie operacje są zakończone
w spójny sposób, nawet w przypadku wystąpienia problemów podczas aktualizacji danych.
2. Restart. Dokończenie procedury
Restart, to proces powtórzenia (dokończenia) transakcji, która aktualizuje
wiele powiązanych zbiorów (tabel).
Wykonanie restartu
W praktyce, restart trzeba wykonać w kilku powiązanych systemach.
Gdy przerwano transakcje zatwierdzania faktur sprzedaży magazynowej,
to restart trzeba zrobić w systemie NA i MG. Służy do tego funkcja:
AD > Trawers > Globalna gospodarka zbiorami > Restart systemów [AD_PGZ69]
Dokończenie procedury
Jeżeli procedura restartu nie wykona się do końca, to program wyświetli komunikat:
o-- Restart NA --------------------------------------------------[X]o
| Proszę dokończyć ostatnią transakcję (wykonać Restart) |
o-------------------------------------------------------------------o
| Esc, F5-wykonaj Restart, F6-xxREST, F7-stan na [0], F10-info |
o-------------------------------------------------------------------o
Wykonanie restartu
W takiej sytuacji administrator powinien powtórzyć próbę wykonania
(dokończenia) restartu [F5-wykonaj restart]
W praktyce restart trzeba wykonać w kilku powiązanych systemach.
Gdy przerwano transakcje zatwierdzania faktur sprzedaży magazynowej, to restart
trzeba zrobić w systemie NA i MG. Służy do tego funkcja:
AD > Trawers > Globalna gospodarka zbiorami > Restart systemów [AD_PGZ69]
Funkcja sprawdza poszczególne systemy i wykonuje restart w tych, w których jest wymagany.
Jeżeli restart nie wykona się, to trzeba ustalić przyczyne niezakończenia
i ją usunąć. Pomocne w analizie są zapisy w logu (kronice).
Kronika operacji (log)
Najczęstszą przyczyną jest brak dostępu do zbiorów danych, gdy inny proces
używa zbioru w trybie: na wyłączność.
Trzeba zatrzymać taki proces i powtórzyć restart.
Patrz też:
Wyłączny dostęp do bazy danych
Częstą przyczyną jest także nieuprawniona ingerencja do zapisów w bazie danych
przy użyciu zewnętrznych narzędzi. Nie wolno zmieniać zapisów w zbiorach
danych przy użyciu zewnętrznych programów.
Informacje o oczekiwanych zapisach w zbiorach (Write-Ahead Logging (WAL))
znajdują się w rekordzie xxRESTff. Można je przeglądać i drukować [F6-xxRest].
xx - symbol systemu, np. NA MG
W zbiorze xxRESTff jest wskaźnik:
STARTTR = 0 - ostatnia transakcja zakończyła się poprawnie
STARTTR = 1 - ostatnia transakcja nie zakończyła się poprawnie
Wymuszone zakończenie restartu
Doświadczony administrator może wymusić zakończenie restartu [F7-stan na [0]]
Trzeba podać hasło (jednorazowe), o które prosimy zwrócić się do firmy Tres.
NOTE: Hasło jest ważne 1 dzień i zależy od nr-u seryjnego programu.
Metoda ustalenia hasła: magic13
Klawisz: [F7-stan na [0]] zapisuje w rekordzie restartu wskaźnik [0]
STARTTR = 0 - ostatnia transakcja zakończyła się poprawnie
W rzeczywistości transakcja nie zakończyła się poprawnie. Jedynie zapisano wskaźnik.
Dlatego po wymuszeniu zakończenia restartu, należy usunąć dokument (transakcje)
który nie zaktualizował wszystkich kartotek (tabel) w bazie danych.