Beg Support | Sua empresa é o nosso compromisso

BlogDoBoss

Como Validar Alterações em Registros
usando ORA_ROWSCN no Oracle Database

No último Oracle APEX Tour 2024 em Brasília, uma pergunta surgiu durante o painel de palestrantes: “É possível validar se o registro de uma “collection” sofreu alguma alteração na base de dados durante a sua manipulação ?”. A pergunta foi feita a meu colega André Souza, que fez uma apresentação sobre as vantagens e a melhoria de performance com o uso de coleções no APEX. Embora ele não tivesse enfrentado essa necessidade antes, mencionei durante o painel a utilização da pseudo-coluna ORA_ROWSCN como solução.

Neste artigo apresento um guia prático para implementar essa ideia.

1. Criando a Tabela com ROWDEPENDENCIES

Primeiro, é necessário criar a tabela com a opção ROWDEPENDENCIES, que permite rastrear o SCN (System Change Number) no nível da linha:

CREATE TABLE Beg_Teste_Orarowscn (
    "ID"        NUMBER(*, 0) PRIMARY KEY,
    "DESCRICAO" VARCHAR2(150 BYTE) NOT NULL ENABLE
)
ROWDEPENDENCIES;

Por padrão, o Oracle rastreia o SCN no nível de bloco do banco de dados. Com ROWDEPENDENCIES, o SCN será armazenado por linha, permitindo maior granularidade.

2. Inserindo Dados na Tabela

Adicione os registros para realizar os testes:

INSERT INTO Beg_Teste_Orarowscn VALUES (1, 'TESTE 1');
INSERT INTO Beg_Teste_Orarowscn VALUES (2, 'TESTE 2');
INSERT INTO Beg_Teste_Orarowscn VALUES (3, 'TESTE 3');
INSERT INTO Beg_Teste_Orarowscn VALUES (4, 'TESTE 4');
INSERT INTO Beg_Teste_Orarowscn VALUES (5, 'TESTE 5');
INSERT INTO Beg_Teste_Orarowscn VALUES (6, 'TESTE 6');
INSERT INTO Beg_Teste_Orarowscn VALUES (7, 'TESTE 7');
INSERT INTO Beg_Teste_Orarowscn VALUES (8, 'TESTE 8');
INSERT INTO Beg_Teste_Orarowscn VALUES (9, 'TESTE 9');
INSERT INTO Beg_Teste_Orarowscn VALUES (10, 'TESTE 10');
COMMIT;

 

3. Verificando o SCN das Linhas

Utilize a pseudo-coluna ORA_ROWSCN para visualizar o SCN associado a cada linha:

SELECT
    A.Id,
    A.Descricao,
    A.Ora_Rowscn
FROM
    Beg_Teste_Orarowscn A
ORDER BY
    Id;

 

4. Alterando um Registro

Realize uma atualização em um registro específico e confirme a transação:

UPDATE Beg_Teste_Orarowscn
SET Descricao = Descricao || ' REGISTRO ALTERADO'
WHERE Id = 4;
COMMIT;

 

5. Confirmando a Mudança de SCN

Após a atualização, execute novamente a consulta e observe o SCN modificado apenas no registro alterado:

SELECT
    A.Id,
    A.Descricao,
    A.Ora_Rowscn
FROM
    Beg_Teste_Orarowscn A
ORDER BY
    Id;

Dessa forma, ao carregar a coluna ORA_ROWSCN na collection em memória, será possível compará-la com o valor correspondente no banco de dados. Isso permitirá identificar se houve alguma modificação no registro durante o período de manipulação.

Detalhes Técnicos

  • ROWDEPENDENCIES: Armazena o SCN no nível da linha, garantindo rastreamento preciso.
  • BLOCKDEPENDENCIES (padrão): O SCN é compartilhado por todas as linhas de um bloco de dados.

Vantagens e Desvantagens do ROWDEPENDENCIES

 

Vantagens

  • Precisão no rastreamento de mudanças: Ideal para auditorias detalhadas e sincronização incremental.
  • Acesso ao SCN individual: Útil em cenários de replicação e validação de dados.

Desvantagens

  • Armazenamento adicional: Cada linha requer 6 bytes extras para armazenar o SCN.
  • Impacto na performance: Inserções e atualizações podem ser levemente afetadas.

Opinião do BOSS

A decisão de usar ou não ROWDEPENDENCIES depende das necessidades do seu negócio. Valide em sua aplicação para verificar o impacto real no desempenho e no armazenamento. Lembre-se: o Oracle Database tem a solução, basta escolher a ideal para o seu caso.

Posts Recentes

Dúvidas Frequentes

Oracle Cloud oferece uma infraestrutura robusta, segura e escalável, permitindo que sua empresa melhore a eficiência operacional, reduza custos com TI e tenha acesso a uma plataforma de desenvolvimento de alta performance. Além disso, a Oracle Cloud suporta a inovação contínua com ferramentas integradas de IA e machine learning.

A Beg Support oferece um serviço completo de migração para a Oracle Cloud, que inclui avaliação inicial, planejamento detalhado, execução da migração e suporte pós-migração. Nosso time de especialistas garante que a transição seja suave e que sua operação continue sem interrupções.

Oferecemos suporte completo para bancos de dados, incluindo monitoramento proativo, otimização de desempenho, gerenciamento de backups e recuperação, atualizações e patching, e suporte técnico 24/7. Nosso objetivo é garantir que seus bancos de dados funcionem de maneira eficiente e segura.

A Beg Support fornece ferramentas e dashboards personalizados para monitoramento contínuo das suas instâncias na Oracle Cloud. Isso inclui métricas de desempenho em tempo real, alertas de uso de recursos, análises de tendências e relatórios detalhados. Assim, você pode identificar e resolver problemas antes que eles afetem sua operação.

Rolar para cima