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.
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.
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;
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;
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;
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.
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.
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.