Naplóstreamek használata KTM-sel

A KTM-alapú tranzakciófeldolgozó rendszereknek (TPS-eknek) a tranzakciós tevékenységeket a Common Log File System (CLFS) használatával kell naplózniuk. A KTM minden tranzakciókezelő objektumhoz létrehoz egy naplóstreamet. Minden erőforrás-kezelőnek saját naplóstreamet kell létrehoznia.

Naplóstreamek létrehozása Transaction Manager-objektumokhoz

Amikor az erőforrás-kezelő meghívja a ZwCreateTransactionManagert, meg kell adnia egy CLFS-naplóstream nevét. Ha a megadott stream nem létezik, a KTM létrehozza azt. Ha a stream már létezik, a ZwCreateTransactionManager újra megnyitja. A KTM hozzárendeli ezt a naplóstreamet a tranzakciókezelő objektumhoz.

A KTM a tranzakciókezelő objektum naplóstreamjével rögzíti a tranzakciókezelő objektum belső állapotadatait, valamint a tranzakciókezelő objektumhoz társított összes erőforrás-kezelő objektumot, tranzakcióobjektumot és beléptetési objektumot. Ha a tranzakciós műveletek a befejezésük előtt megszakadnak, a KTM a naplóban szereplő információk alapján meghatározhatja, hogy véglegesíteni vagy vissza kívánja-e állítani a tranzakciókat.

A KTM nem rögzíti azokat a tranzakcióadatokat, amelyeket az erőforrás-kezelők fogadnak vagy küldenek az ügyfeleknek. Az erőforrás-kezelőknek saját naplóstreameket kell használniuk az információk rögzítéséhez.

Az erőforrás-kezelők meghívhatják a ZwQueryInformationTransactionManagert , hogy információt szerezzenek egy tranzakciókezelő objektum naplóstreamjével kapcsolatban, például a naplóstream elérési útjának nevét vagy a KTM által a streamhez hozzárendelt GUID azonosítót.

Naplóstreamek létrehozása erőforrás-kezelőknek

Az inicializálási kódban minden erőforrás-kezelőnek meg kell hívnia a ClfsCreateLogFile-t , hogy saját naplóstreamet hozzon létre. Minden erőforrás-kezelőnek a stream használatával kell rögzítenie a tranzakció adatainak véglegesítéséhez, visszaállításához vagy helyreállításához szükséges tranzakciók összes információját.

A KTM és a TPS összes erőforrás-kezelője használhat egyetlen naplófájlt, de minden TPS-összetevőnek más streamet kell használnia a naplófájlban. További információ az egyes streamek naplófájlon belüli megadásáról: ClfsCreateLogFile.

A KTM rendszeresen létrehoz egy újraindítási területet a tranzakciókezelő naplóstreamjében. Amikor a KTM helyreállítási műveletet hajt végre, beolvassa az utolsó újraindítási területet a rendszer leállítása előtt megnyitott objektumok állapotának helyreállításához. Hasonlóképpen, az erőforrás-kezelőnek rendszeres időközönként újraindulási területeket kell létrehoznia a naplóstreamben. Előfordulhat például, hogy az erőforrás-kezelő minden tranzakciós művelet végrehajtásakor létrehoz egy újraindítási területet.

További információ a CLFS-naplóstrea újraindítási területeiről a(z) Rekordok olvasása CLFS-adatfolyamból című fájlban található. Lásd még a ClfsWriteRestartArea, a ClfsReadRestartArea és a ClfsReadPreviousRestartArea rutinokat.

Naplófolyamok használata a helyreállításhoz

Miután az erőforrás-kezelő meghívta a ZwCreateTransactionManagert, meg kell hívnia a ZwRecoverTransactionManagert. A ZwRecoverTransactionManager rutin beolvassa a tranzakciókezelő objektum naplóstreamjét, hogy helyreállítsa a TPS állapotát egy ismert jó pontra. Ha a számítógép megfelelően leállt vagy nem állt le az erőforrás-kezelő utolsó betöltése után, a naplóstream minimális információt tartalmaz. Ha rendszerösszeomlás történt, a naplóstream elegendő helyreállítási információt tartalmaz az összes tranzakció ismert állapotba való visszaállításához.

Miután az erőforrás-kezelő meghívta a ZwCreateResourceManagert, meg kell hívnia a ZwRecoverResourceManagert. A ZwRecoverResourceManager rutin megpróbálja helyreállítani az egyes erőforrás-kezelői regisztrációkhoz társított tranzakciókat. Az erőforrás-kezelő tranzakcióinak helyreállításáról további információt a Helyreállítási műveletek kezelése című témakörben talál.

Tranzakcióadatok tárolása

A CLFS-naplóstreameket használó erőforrás-kezelőknek a tranzakciós adatokat a CLFS-rendezési területeken kell tárolniuk. A CLFS rendszeres időközönként áthelyezi az adatokat a naplófolyam átrendezési területéről egy állandó tárolóeszközre. Ha adatokat módosító műveletet szeretne naplózni, az erőforrás-kezelő a következőket teheti:

  1. Másolja az eredeti adatokat a gyűjtőterületre, mielőtt az írási művelet módosítaná azokat.

  2. Hajtsa végre a műveletet az adatok egy példányán az adatbázis állandó tárolóeszközének módosítása nélkül.

  3. Másolja az új adatokat az előcsoportosító területre.

Ha az erőforrás-kezelő visszaállítási értesítést kap, visszaállíthatja az eredeti adatokat a naplóstreamből. Ha véglegesítési értesítést kap, az erőforrás-kezelő átmásolhatja a módosított adatokat a naplóstreamből az adatbázis állandó tárolóeszközére.

Az erőforrás-kezelők a ZwSetInformationEnlistment rutinnal is tárolhatják a helyreállítási adatokat egy beléptetési objektumban. A KTM menti ezeket az adatokat a naplóstreamben, és beolvassa a naplóstreamből a helyreállítási műveletek során. Ezért egy erőforrás-kezelő bármikor lekérheti ezeket a helyreállítási információkat a ZwQueryInformationEnlistment meghívásával.