As únicas vezes que você é realmente forçado a se comprometer, exceto no final de uma transação comercial, são:
- Ao executar o DDL:a execução do DDL é encapsulada em um par de commits implícitos.
- Após inserção de caminho direto:a tabela não pode ser lida até que a inserção seja confirmada.
Como comenta cavalheiresco, o ponto correto para se comprometer é quando a transação comercial estiver concluída. Caso contrário, você precisa escrever algum código para detectar e corrigir transações parcialmente concluídas e confirmadas que deixaram o banco de dados em um estado logicamente inconsistente (por exemplo, um registro INVOICE existe sem nenhum registro INVOICE_DETAIL).