Ajustando Transações de Replicat

O Replicat usa SQL regular, portanto, seu desempenho depende do desempenho do banco de dados de destino e do tipo de SQL que está sendo aplicado (inserções, atualizações ou exclusões). No entanto, você pode executar determinadas etapas para maximizar a eficiência do Replicat.

Ajustando o Desempenho de Coordenação com Transações de Barreira

Em uma configuração Replicat coordenada, as transações de barreira, como atualizações na chave primária, causam um número maior de commits no banco de dados e interrompem o benefício do recurso GROUPTRANSOPS do Replicat. Quando há um grande número de transações de barreira na carga de trabalho geral do Replicat coordenado, o uso de um grande número de threads pode realmente prejudicar o desempenho do Replicat.

Para manter o alto desempenho quando um grande número de transações de barreira é esperado, você pode fazer o seguinte:

Evitando Varreduras Completas de Tabelas na Ausência de Chaves

Se uma tabela de destino não tiver uma chave primária, uma chave exclusiva ou um índice exclusivo, o Replicat usará todas as colunas para criar sua cláusula WHERE. Esta é, essencialmente, uma varredura de tabela completa.

Para tornar a seleção de linhas mais eficiente, use uma cláusula KEYCOLS nas instruções TABLE e MAP para identificar uma ou mais colunas como exclusivas. O Replicat usará as colunas especificadas como uma chave. O exemplo a seguir mostra uma cláusula KEYCOLS em uma instrução TABLE:

TABLE hr.emp, KEYCOLS (FIRST_NAME, LAST_NAME, DOB, ID_NO);

Para obter diretrizes de uso e sintaxe, consulte os parâmetros TABLE e MAP na Referência de Parâmetros e Funções do Oracle GoldenGate.

Dividindo Transações Grandes

Se o banco de dados de destino não puder tratar transações grandes do banco de dados de origem, você poderá dividi-las em uma série de transações menores usando o parâmetro Replicat MAXTRANSOPS. Consulte Referência de Parâmetros e Funções do Oracle GoldenGate para obter mais informações.

Observação: MAXTRANSOPS não é válido para um Replicat integrado em um sistema Oracle AI Database.

Ajustando Cursores Abertos

O processo Replicat mantém cursores para instruções SQL armazenadas no cache e para operações SQLEXEC. Sem cursores suficientes, o Replicat deve ter mais instruções de idade. Por padrão, o Replicat mantém quantos cursores forem permitidos pelo parâmetro MAXSQLSTATEMENTS . Você pode achar que o valor desse parâmetro precisa ser aumentado. Em caso afirmativo, talvez você também precise ajustar o número máximo de cursores abertos permitidos pelo banco de dados. Consulte Referência de Parâmetros e Funções do Oracle GoldenGate para obter mais informações.

Melhorando a Velocidade de Atualização

A fragmentação excessiva de blocos faz com que o Replicat aplique instruções SQL em uma velocidade mais lenta que a normal. Reorganize tabelas muito fragmentadas e, em seguida, interrompa e inicie o Replicat para registrar o novo ID do objeto.

Definir um Timeout de Transação de Replicação

Use o parâmetro TRANSACTIONTIMEOUT para impedir que uma transação de destino Replicat não submetida a commit mantenha bloqueios no banco de dados de destino e consuma seus recursos desnecessariamente. Você pode alterar o valor desse parâmetro para que o Replicat possa funcionar dentro dos timeouts de aplicativos existentes e de outros requisitos de banco de dados no destino.

TRANSACTIONTIMEOUT limita o tempo durante o qual o Replicat poderá manter uma transação de destino aberta se não tiver recebido o registro de fim de transação da última transação de origem nessa transação. Por padrão, o Replicat agrupa várias transações de origem em uma transação de destino para melhorar o desempenho, mas não fará commit de uma transação de origem parcial e aguardará indefinidamente esse último registro. O parâmetro GROUPTRANSOPS do processo Replicat controla o tamanho mínimo de uma transação de destino agrupada.

Os seguintes eventos podem durar o suficiente para acionar TRANSACTIONTIMEOUT:

Consulte TRANSACTIONTIMEOUT na Referência de Parâmetros e Funções do Oracle GoldenGate para obter mais informações.