Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Os sistemas de processamento de transações (TPSs) baseados em KTM devem registrar a atividade de transações usando o Common Log File System (CLFS). A KTM cria um fluxo de log para cada objeto do gerenciador de transações. Cada gestor de recursos deve criar o seu próprio fluxo de registos.
Criando fluxos de log para objetos do Transaction Manager
When your resource manager calls ZwCreateTransactionManager, you must specify the name of a CLFS log stream. Se o fluxo especificado não existir, a KTM cria-o. If the stream already exists, ZwCreateTransactionManager reopens it. A KTM atribui esse fluxo de log ao objeto do gerenciador de transações.
O KTM usa o fluxo de log do objeto gerenciador de transações para registrar informações de estado interno sobre o objeto do gerenciador de transações e os seguintes objetos associados a ele:
- Todos os objetos do gerenciador de recursos associados
- Todos os objetos de transação associados
- Todos os objetos de alistamento associados
Se as operações transacionais forem interrompidas antes de serem concluídas, a KTM pode usar as informações no log para determinar se as transações devem ser confirmadas ou revertidas.
A KTM não regista os dados de transação que os gestores de recursos recebem ou enviam aos clientes. Os gerentes de recursos devem usar seus próprios fluxos de log para registrar essas informações.
Resource managers can call ZwQueryInformationTransactionManager to get information about a transaction manager object's log stream, such as the log stream's path name or the GUID that KTM assigns to the stream.
Criando fluxos de log para gerenciadores de recursos
In its initialization code, each resource manager should call ClfsCreateLogFile to create its own log stream. Cada gerente de recursos deve usar seu fluxo para registrar todas as informações sobre transações necessárias para confirmar, reverter ou recuperar os dados da transação.
A KTM e todos os gerenciadores de recursos de um TPS podem usar um único arquivo de log, mas cada componente TPS deve usar um fluxo diferente dentro do arquivo de log. For information about how to specify individual streams within a log file, see ClfsCreateLogFile.
Periodically, KTM creates a restart area in the transaction manager's log stream. Quando a KTM executa uma operação de recuperação, lê a última área de reinício para recuperar o estado dos objetos que estavam abertos antes do encerramento do sistema. Da mesma forma, seu gerenciador de recursos deve criar periodicamente áreas de reinicialização em seu fluxo de logs. Por exemplo, seu gerente de recursos pode criar uma área de reinicialização sempre que uma operação transacional for concluída.
Para obter mais informações sobre áreas de reinicialização em fluxos de log CLFS, consulte Lendo registros de reinicialização de um fluxo CLFS. Also, see the ClfsWriteRestartArea, ClfsReadRestartArea, and ClfsReadPreviousRestartArea routines.
Usando fluxos de log para recuperação
After your resource manager calls ZwCreateTransactionManager, it must call ZwRecoverTransactionManager. The ZwRecoverTransactionManager routine reads the transaction manager object's log stream to recover the state of the TPS to a known good point. Se o computador desligar corretamente (ou não desligar), o fluxo de log conterá informações mínimas depois que o gerenciador de recursos foi carregado pela última vez. Se ocorrer uma falha do sistema, o fluxo de log contém informações de recuperação suficientes para restaurar todas as transações para um estado conhecido.
After your resource manager calls ZwCreateResourceManager, it must call ZwRecoverResourceManager. The ZwRecoverResourceManager routine tries to recover the transactions that are associated with each of the resource manager's enlistments. Para obter mais informações sobre como recuperar as transações de um gerenciador de recursos, consulte Manipulando operações de recuperação.
Armazenando dados de transação
Os gerenciadores de recursos que usam fluxos de log CLFS devem armazenar dados de transação em áreas de empacotamento CLFS. O CLFS move periodicamente os dados da área de empacotamento do fluxo de log para um meio de armazenamento permanente. Para registrar uma operação que modifica dados, um gerenciador de recursos pode executar as seguintes etapas:
Copie os dados originais, antes que a operação de gravação os modifique, para a área de empacotamento.
Execute a operação em uma cópia dos dados sem modificar o meio de armazenamento permanente do banco de dados.
Copie os novos dados para a área de empacotamento.
Se o gerenciador de recursos receber uma notificação de reversão, ele poderá restaurar os dados originais do fluxo de log. Se receber uma notificação de confirmação, o gerenciador de recursos poderá copiar os dados modificados do fluxo de log para o meio de armazenamento permanente do banco de dados.
Resource managers can also use the ZwSetInformationEnlistment routine to store recovery information in an enlistment object. A KTM guarda estas informações no seu fluxo de registos e lê-as a partir do fluxo de registos durante as operações de recuperação. Therefore, a resource manager can obtain this recovery information at any time by calling ZwQueryInformationEnlistment.