quinta-feira, julho 16, 2026

IBM adquire StreamSets e webMethods da Software AG por R$ 11 bilhões

Se você trabalha no ecossistema de Adabas e Natural, com certeza acompanha de perto os passos e as decisões estratégicas da Software AG — afinal, estamos falando de uma gigante que, desde os anos 70, molda a forma como grandes corporações gerenciam seus bancos de dados mais críticos e de altíssima performance. Em dezembro de 2023, o mercado global de tecnologia foi sacudido por uma notícia de proporções gigantescas: a IBM fechou um acordo definitivo para adquirir as plataformas StreamSets e webMethods da Software AG, em uma transação bilionária avaliada em € 2,13 bilhões (aproximadamente R$ 11 bilhões). Para quem está na linha de frente da sustentação, desenvolvimento ou administração de dados em sistemas de missão crítica, essa movimentação não é apenas mais um negócio corporativo de páginas de economia. Ela mexe diretamente com as engrenagens de arquiteturas híbridas e com a forma como os dados transacionais pesados que residem no mainframe são entregues e consumidos pelo mundo externo. Mas o que essa verdadeira "dança das cadeiras" entre duas das maiores referências em tecnologia de mainframe e integração de sistemas realmente significa para o futuro do mercado? O que muda na prática para as empresas que dependem dessas pontes para fazer seu backend conversar com a nuvem moderna, microsserviços e até novos motores de Inteligência Artificial? Se você quer entender os impactos técnicos, os riscos que merecem sua atenção e as oportunidades que surgem a partir de agora, continue lendo. Vamos analisar de forma realista os bastidores dessa transação histórica.

O que a IBM está levando para casa?

Ao trazer para o seu portfólio as duas verdadeiras joias da coroa de integração da Software AG, a IBM deu um passo estratégico definitivo para dominar o fluxo de dados em ambientes híbridos ao adquirir o StreamSets e o webMethods. O primeiro se destaca como uma plataforma de DataOps nativa em nuvem ultraeficiente, projetada para desenhar pipelines de dados inteligentes e realizar a ingestão de fluxos complexos em tempo real a partir de qualquer origem para alimentar motores de análise e IA, enquanto o segundo opera como um gateway de integração e APIs líder de mercado, permitindo gerenciar, monitorar e expor de forma segura as regras de negócio de sistemas legados para que eles conversem agilmente com a nuvem moderna e parceiros externos. Juntas, essas soluções atendem a mais de 1.500 grandes corporações globais, incluindo muitas que mantêm o Adabas/Natural operando com máxima robustez no backend e dependem diretamente do webMethods para traduzir, expor e valorizar essa massa crítica de dados transacionais para o ecossistema externo em tempo real.

Objetivo da IBM

Não é segredo para ninguém: a Inteligência Artificial generativa e os modelos de machine learning têm uma fome insaciável por dados. Mas não serve qualquer dado de internet. Para fazer previsões de negócios reais, prever fraudes financeiras ou otimizar cadeias de suprimentos, a IA precisa de dados transacionais históricos, limpos e de altíssima fidelidade. E onde está a maior parte desse tesouro corporativo no planeta? No Mainframe. Mais do que uma simples aquisição de mercado, o movimento da IBM ao trazer o StreamSets e o webMethods para debaixo do seu teto é uma jogada de mestre para criar a via rápida da informação. Ao juntar essas ferramentas ao seu ecossistema atual — que já conta com a robustez do Red Hat OpenShift e o poder cognitivo do WatsonX - Facilitando a arquitetura de nuvem híbrida, permitindo que sistemas legados colaborem em tempo real com aplicações modernas em nuvem.

E a Software AG?

Para quem faz parte da comunidade Adabas e Natural, essa transação bilionária acende um holofote fascinante sobre o futuro da Software AG. À primeira vista, ver a empresa se desfazer de duas de suas ferramentas mais modernas de integração pode parecer um recuo. No entanto, quando analisamos os bastidores estratégicos, o cenário é oposto: esta foi uma jogada mestre de reposicionamento de mercado. Fundada nos anos 70 justamente com o lançamento pioneiro do banco de dados Adabas para mainframes IBM, a Software AG construiu um império global baseado em robustez, confiabilidade e processamento de missão crítica. No Brasil, essa presença é histórica e vital: gigantes como Petrobras, Banco do Brasil e Vale rodam suas operações mais pesadas e confiam seus dados diários a essa tecnologia. Com a venda do StreamSets e do webMethods, a Software AG capitalizou de forma extraordinária. Ao colocar € 2,13 bilhões (R$ 11 bilhões) em caixa, a empresa ganha um fôlego financeiro gigantesco e, mais importante, elimina a distração de tentar competir diretamente com os gigantes de nuvem no mercado de integração geral.

Livre desse desgaste, a Software AG agora pode direcionar 100% de seu foco, energia e investimentos para o seu verdadeiro "ganha-pão" e suas soluções mais consolidadas:

  • Aceleração e Modernização do Core (Adabas/Natural): Com o caixa cheio, a empresa tem recursos de sobra para investir pesado em pesquisa e desenvolvimento (R&D) na sua linha de produtos principal. Isso significa que podemos esperar atualizações mais rápidas, melhorias de performance, suporte ainda mais robusto e ferramentas oficiais para facilitar a conteinerização e a modernização do Adabas e do Natural (como a integração nativa com ambientes Docker e Kubernetes).
  • Foco Estratégico em Soluções Especializadas: Em vez de tentar abraçar o mundo da integração genérica, a Software AG agora foca em nichos onde ela já é líder indiscutível, como a modelagem e excelência de processos de negócios com o ARIS, além de soluções altamente específicas de IoT (Internet das Coisas).

A grande verdade: Para a Software AG, essa venda foi um divisor de águas estratégico. Ela deixa de gastar energia em mercados saturados de integração e volta às suas origens com força total e bolsos cheios, garantindo que a plataforma Adabas/Natural continue sendo a fundação mais segura, rápida e moderna do planeta para os dados transacionais das próximas décadas.



Insight para o DBA e Desenvolvedor

Para nós, técnicos que vivemos o dia a dia do CPD, essa movimentação bilionária deixa um recado claro como cristal: a integração de dados é o epicentro do mercado de tecnologia atual. O paradigma mudou. Hoje, o valor de um profissional de banco de dados não está mais medido apenas em sua capacidade de manter o ambiente no ar ou rodar utilitários de manutenção preventiva de forma isolada. O mercado agora busca, valoriza e paga muito mais por profissionais que atuam como pontes de inovação. Se você administra ou desenvolve em ambientes Adabas/Natural, dominar os conceitos e as ferramentas que extraem, replicam e integram essa massa gigantesca de dados transacionais para ambientes de nuvem híbrida, pipelines de ETL modernos e motores de Inteligência Artificial é, sem sombra de dúvidas, o caminho profissional de maior destaque e crescimento para os próximos anos. O futuro reserva um espaço de extremo prestígio para o "DBA de Integração". Longe de ser uma tecnologia que está encolhendo, o Adabas se consolida como a fundação ultraveloz onde residem os dados mais valiosos das maiores empresas do mundo. E quando você se capacita para abrir essas portas de forma performática — seja utilizando mensageria, gateways de APIs ou CDC (Change Data Capture) em tempo real —, você deixa de ser um executor de rotinas de sustentação para se tornar o arquiteto que viabiliza a transformação digital e a IA na sua empresa. O dado mais refinado do mercado já está sob o seu controle; o próximo passo é dominar as conexões que o levam ao futuro.

Pontos de Atenção

A transição de produtos complexos como o webMethods para a IBM traz alguns riscos típicos de grandes fusões e aquisições que merecem atenção. Um dos principais pontos está relacionado à transição do suporte e ao que muitos profissionais costumam chamar de “burocracia IBM”. Outro ponto de atenção é a pressão comercial e o custo de licenciamento. A IBM pagou cerca de R$ 11 bilhões pela Software AG e, naturalmente, existe uma expectativa de retorno sobre esse investimento. A empresa adote políticas de licenciamento mais agressivas ou passe a incentivar — os clientes a utilizarem combinações de seus próprios produtos, como soluções da Red Hat ou do WatsonX, em conjunto com o webMethods. Por isso, DBAs Adabas acompanhem de perto a evolução dessas duas ferramentas para não serem supreendidos no futuro.

Também existe uma dúvida importante em relação ao futuro da própria Software AG: a empresa ficará mais enxuta ou estará simplesmente encolhendo? Ao vender duas de suas marcas mais modernas e lucrativas na área de integração, a Software AG reduz significativamente o seu tamanho. O dinheiro obtido com a operação poderá ser utilizado para modernizar e fortalecer produtos tradicionais como o Adabas e o Natural. No entanto, caso esses recursos não sejam reinvestidos de forma consistente, o mercado poderá interpretar a venda como um sinal de enfraquecimento da companhia no longo prazo. Para quem trabalha diretamente com essas tecnologias, esse é um ponto que merece ser acompanhado com bastante atenção nos próximos anos.

Os pontos positivos

Nem tudo são espinhos. Há uma avenida de oportunidades técnicas que podem valorizar ainda mais o seu trabalho.

1. Integração "Nativa" com IA e Nuvem Híbrida

A Melhoria: A IBM é a dona do ecossistema Mainframe (z/OS). Com o webMethods e o StreamSets debaixo do mesmo teto da IBM, a tendência é que a integração entre o Adabas (da Software AG) e as soluções de nuvem/IA da IBM (WatsonX, Red Hat OpenShift, APIs) se torne absurdamente mais simples e performática.

O impacto para você: Extrair dados do Adabas e jogá-los em tempo real para um pipeline de IA ou microsserviço vai exigir menos "gambiarras" técnicas. Os conectores tendem a ficar muito mais robustos.

2. Sobrevivência Garantida do Adabas/Natural A Melhoria: Ao vender a divisão de integração, a Software AG encheu o caixa e agora tem um foco muito mais nichado. O Adabas e o Natural continuam sendo a "espinha dorsal" financeira da empresa. Sem a distração de ter que gerenciar plataformas gigantes de integração em nuvem, a tendência é que eles foquem em manter a plataforma Adabas moderna, segura e altamente compatível com os novos sistemas operacionais e contêineres (como rodar Adabas/Natural em Docker de forma cada vez mais oficial).

3. Valorização Profissional

A Melhoria: A IBM vai injetar força de vendas global nessas ferramentas de integração. Isso significa que mais empresas vão querer conectar seus sistemas legados. Se você é o profissional que entende o "banco de dados de origem" (Adabas) e sabe como ele conversa com o "mundo moderno", o seu perfil técnico se torna ainda mais escasso e disputado no mercado.

Devo me preocupar?

A resposta curta é: Fique ALERTA, mas não PREOCUPADO. O Mainframe e o Adabas não vão sumir. Pelo contrário: as grandes corporações já entenderam que reescrever sistemas complexos com dezenas de milhões de registros do zero é inviável financeiramente e um risco operacional gigantesco. A palavra de ordem do mercado hoje é INTEGRAR, não migrar. No entanto, quando uma ferramenta de integração como o webMethods muda de mãos (indo para a IBM), o DBA Adabas não pode ficar de braços cruzados esperando o impacto. Se você tem fluxos ativos integrando seu banco de dados ao mundo externo, o pulo do gato: O DBA que se limita a monitorar o banco de dados está sumindo. O DBA que entende como o dado sai do Adabas, passa pelo Broker/EntireX, atravessa o webMethods e chega na nuvem é o profissional que se torna indispensável. Use essa transição para se posicionar como a ponte técnica que garante que essa engrenagem continue rodando sem interrupções.
Leia Mais

quinta-feira, julho 02, 2026

Otimização do Buffer Pool

A garantia de alta disponibilidade e o tempo de resposta otimizado dos sistemas de produção exigem o acompanhamento constante dos ativos de memória. Recentemente, a monitoração proativa do ambiente de produção através do utilitário SYSBPM (Natural Buffer Pool Utility) acendeu um alerta de capacidade: os dados históricos acumulados revelaram que o Buffer Pool operava no limite de sua saturação. Para mitigar gargalos operacionais antes que houvesse impacto direto na experiência do usuário final, foi conduzida uma análise aprofundada em conjunto com o suporte do fabricante. Este documento apresenta o diagnóstico técnico inicial, as justificativas para a reestruturação e a solução adotada para expandir a capacidade do ambiente, assegurando a estabilidade das operações.

1. Diagnóstico Inicial do Ambiente

A análise estática realizada diretamente no painel do SYSBPM indicava o seguinte cenário de ocupação de memória: Até o momento da análise, a inicialização do Buffer Pool primário utilizava a seguinte parametrização de 25 MB via JCL:

//* -----------------------------------------------------------------
//*             INICIALIZA O GLOBAL BUFFER POOL DO NATURAL        
//* -----------------------------------------------------------------
//STARTNAT EXEC PGM=NATGBP41,                                        
//   PARM='BPN=NATGBP,S=NAT4,N=(25M,XA,2),R=N'                       
//STEPLIB  DD DSN=ADA8.LOADLIB,DISP=SHR                              
//SYSUDUMP DD SYSOUT=A                                               
//GBPPRINT DD SYSOUT=A                                               
//SYSPRINT DD SYSOUT=A

Buffer Pool hoje
  12:38:32             ***** NATURAL SYSBPM UTILITY *****             01/06/2026
  BPNAME NATGBP        - General Buffer Pool Statistics -        Type Global Nat
  BPPROP OFF                                                       Loc CPAC NAT4
                                                                                
 Buffer Pool Address ..... 13C63000      Buffer Pool Size (MB) ... 25,00        
  Directory Section ...... 00000400      Directory Entry Size .... 128          
  Text Record Section .... 001A5000      Text Record Size (KB) ... 2            
 Dataspace attached ......                                                      
                                                                                
 Initialization .......... 23:20:13    2025-12-06                               
 Last Refresh ............ 23:20:13    2025-12-06        by User .. NATBPMG4    
                                                                                
  _______________________________ Text Records ______________________________   
          Total          Used   in %      Max Used    Total Size  Avg Usage %   
         11,958        11,785  98,55        11,956    24,135,680        90,47   
               _____________________ Objects ________________________________   
  Space Used %         Loaded           Max Loaded    Total Size  Avg TR Used   
         89,16          2,301                2,777    21,836,723          5,1   
               SumOfUseCounts AvgLifetimeUsed(min)    AvgLifetimeReplace(min)   
                          880                4,643                        804   
                                                                                
 Command ===>                                                                   
 Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
       Help        Exit  Last        Flip        Load                    Canc

2. Análise Técnica e Parecer do Suporte

A equipe de suporte da Software AG validou os dados e emitiu um parecer técnico que aponta para um cenário crítico de saturação em diferentes camadas. O ponto mais alarmante reside na gestão de Text Records, cujo consumo severo atingiu 98,55%, indicando que a área está praticamente esgotada. O fato de a métrica de uso máximo (Max Used) ter encostado no limite total, somado a uma ocupação média (Avg Usage) constantemente acima de 90%, evidencia que a sobrecarga não decorre de um pico pontual, mas sim de uma pressão operacional contínua. Em termos práticos, essa escassez de espaço força o Natural a descartar componentes em memória, desencadeando um efeito cascata de leituras físicas adicionais no banco de dados ADABAS. Como consequência direta, há uma degradação na performance geral do sistema e uma elevação no tempo de resposta das transações. Paralelamente, a ocupação de objetos também exige atenção, operando atualmente em 89,16%. Embora esse indicador ainda retenha uma margem mínima de manobra, a curva demonstra uma tendência clara de aproximação do seu limite máximo histórico de 2.777 objetos carregados — um fator de peso, considerando que cada objeto consome, em média, 5,1 Text Records. Ao cruzar esses dados com o comportamento dinâmico do ambiente, a análise combinada de Reuse e Lifetime revela que, embora o indicador SumOfUseCounts confirme a reutilização regular dos objetos, o tempo de vida médio antes de uma substituição (AvgLifetimeReplace) é extremamente longo, girando em torno de 13 horas. Em contrapartida, o tempo de uso ativo após a carga (AvgLifetimeUsed) é de apenas 4,6 minutos. Esse descompasso sugere que rotinas ou objetos obsoletos permanecem retidos na memória sem necessidade de uso imediato, estreitando ainda mais o espaço útil disponível e sufocando o ecossistema do Buffer Pool.

3. Plano de Ação e Recomendações

Como estratégia para mitigar a saturação identificada, a equipe de suporte da Software AG recomendou a expansão da capacidade do Buffer Pool em um patamar entre 20% e 50%, condicionada à disponibilidade de memória no ambiente z/OS. Adotando uma postura conservadora dentro dessa margem, optou-se por um acréscimo de 50% sobre os 25 MB originais, totalizando uma nova volumetria de 37 MB para o ambiente. Além do ganho de espaço físico, o parecer técnico sugeriu ações complementares para garantir a eficiência da estrutura, incluindo a revisão de parâmetros de inicialização adjacentes do Natural — como o BPI ou BPSFI — e uma análise detalhada dos padrões de carga das aplicações. Essa última medida visa rastrear o comportamento dos sistemas para identificar possíveis excessos na execução de programas dinâmicos ou o acesso a bibliotecas excessivamente pesadas que possam estar sobrecarregando o Buffer Pool. O que foi melhorado:
Critério Melhoria Aplicada
Fluidez Eliminou os marcadores de tópicos (bullet points).
Coesão Justificou a escolha dos 37 MB encaixando-a logo após a menção da regra de 20% a 50% sugerida pela Software AG.

4. Implementação e Nova Parametrização

Seguindo as diretrizes técnicas, a volumetria do Buffer Pool foi expandida de 25 MB para 37 MB. Vale ressaltar que a efetivação dessa nova configuração em subsistemas globais exige a execução de um IPL (Initial Program Load) ou o procedimento manual de exclusão e recriação do Buffer Pool na região correspondente.
Cenário Configuração do Buffer Pool
Antes da Alteração Configuração Antiga - 25MB
Após a Alteração Nova Otimização - 37MB

5. Próximos Passos e Critérios de Sucesso

Após a alteração do parâmetro de 25 MB para 37 MB no JCL de inicialização, a efetivação dessa nova valor no ambiente ativo dependerá obrigatoriamente da execução de um IPL ou do procedimento controlado de stop/start manual do Buffer Pool. Para efetivar vamos fazer a deletação e a recriação da buffer pool manualmente.

Stop Buffer Pool
//AAFSNATB JOB (AAAC,OSS),DIBD,CLASS=A,MSGCLASS=A                               
//*UQ ALLOW                                                                     
//* --------------------------------------------------------                    
//*               STOP NATURAL GLOBAL BUFFER POOL                               
//* --------------------------------------------------------                    
//STOPNAT  EXEC PGM=NATGBP41,PARM='CF=STOPNAT'                                  
//STEPLIB  DD DSN=ADA8.LOADLIB,DISP=SHR                                         
//SYSUDUMP DD SYSOUT=*                                                          
//STOPNAT  DD *                                                                 
F,BPN=NATGBP,S=NAT4                                                             
//*

Start Buffer Pool
//AAFSEGBP JOB (AAAC,OSS),DIBD,CLASS=A,MSGCLASS=A                               
//*UQ ALLOW                                                                     
//* --------------------------------------------------                          
//*         START EDITOR GLOBAL BUFFER POOL                                     
//* --------------------------------------------------                          
//STARTNAT EXEC PGM=NATGBP41,                                                   
//   PARM='BPN=NATGBP,S=NAT4,N=(37M,XA,2),R=N'                                  
//STEPLIB  DD DSN=ADA8.LOADLIB,DISP=SHR                                         
//SYSUDUMP DD SYSOUT=A                                                          
//GBPPRINT DD SYSOUT=A                                                          
//SYSPRINT DD SYSOUT=A

Display do Buffer Pool
//AAFSNATB JOB (AAFP,DIBD),CLAUD,CLASS=S,MSGCLASS=A,TYPRUN=HOLD                 
//*UQ ALLOW                                                                     
//* -----------------------------------------------------------                 
//*           VERIFICAR SE O BUFFER POOL ESTA NO AR                             
//* -----------------------------------------------------------                 
//STARTEDT EXEC PGM=NATGBP41,PARM='CF=STARTEDT'                                 
//STEPLIB  DD DSN=ADA8.LOADLIB,DISP=SHR                                         
//SYSUDUMP DD SYSOUT=*                                                          
//STARTEDT DD *                                                                 
SHOWBP
Leia Mais

terça-feira, junho 23, 2026

Entendendo o Funcionamento do ISN no Adabas

Entre os diversos conceitos que tornam o Adabas um banco de dados extremamente eficiente, o ISN (Internal Sequence Number) ocupa um papel fundamental. Embora muitas vezes passe despercebido pelos desenvolvedores e administradores iniciantes, o ISN é um dos principais responsáveis pela rapidez com que o Adabas localiza e recupera informações. Em vez de percorrer registros sequencialmente em busca de um dado específico, o Adabas utiliza o ISN como um identificador interno único, permitindo o acesso direto aos registros armazenados no Data Storage. Essa arquitetura, combinada com os índices invertidos do banco de dados, proporciona um desempenho excepcional, mesmo em ambientes que processam milhões de registros diariamente. Neste artigo, vamos entender o que é o ISN, como ele é atribuído, de que forma é utilizado pelo Adabas e por que ele é um dos pilares da alta performance que tornou o Adabas referência em sistemas de missão crítica.

Entendendo o ISN

No banco de dados Adabas, o ISN (Internal Sequence Number), ou Número de Sequência Interna, é um identificador numérico atribuído a cada registro armazenado dentro de um arquivo (file). Em termos práticos, ele funciona como um endereço interno que permite ao Adabas localizar e acessar um registro de forma rápida e eficiente. Cada registro dentro de um FILE possui um ISN único, ou seja, não pode existir dois registros com o mesmo ISN dentro do mesmo arquivo. No entanto, é importante destacar que essa unicidade vale apenas dentro do FILE. Em arquivos diferentes, o mesmo número de ISN pode existir sem qualquer conflito, pois a identificação do registro sempre é feita pela combinação FILE + ISN. O ISN é um elemento fundamental na arquitetura do Adabas, pois permite acesso direto aos dados. Em vez de percorrer registros sequencialmente, o sistema utiliza índices internos para localizar rapidamente os ISNs que atendem a uma determinada condição. Em seguida, com base nessa lista de ISNs, o Adabas acessa diretamente os registros correspondentes no Data Storage, reduzindo o tempo de resposta e aumentando a eficiência das consultas. Essa característica é uma das razões pelas quais o Adabas é reconhecido por seu alto desempenho, especialmente em ambientes corporativos que exigem processamento de grandes volumes de dados com rapidez, confiabilidade e alta disponibilidade.

Como o ISN funciona?

Cada registro armazenado em um arquivo do Adabas recebe um ISN exclusivo e irrepetível dentro desse arquivo. Isso significa que não podem existir dois registros compartilhando o mesmo ISN. De forma semelhante a um número de RG ou CPF para uma pessoa, o ISN identifica individualmente cada registro, permitindo que o Adabas o localize e o acesse diretamente, sem ambiguidades. Essa unicidade é um dos pilares da eficiência do banco de dados, pois garante uma referência precisa e rápida para a recuperação das informações.

Tamanho e Faixa de Valores

O ISN (Internal Sequence Number) é um valor numérico inteiro utilizado pelo Adabas para identificar de forma única cada registro dentro de um arquivo. Em termos práticos, ele funciona como um identificador interno do banco de dados, garantindo que cada registro possa ser localizado e acessado individualmente sem ambiguidades. Normalmente, o ISN é armazenado em 3 ou 4 bytes, dependendo da configuração do ambiente e do tamanho definido para o arquivo (RABNSIZE). Sua numeração geralmente se inicia em 1 e é incrementada sequencialmente conforme novos registros são inseridos no arquivo. Quando registros são excluídos, seus ISNs podem ser reutilizados futuramente, dependendo das políticas internas de gerenciamento do Adabas. A capacidade máxima de ISNs está diretamente relacionada ao tamanho do RABN/ISN, conforme demonstrado abaixo:

Formas de Atribuição do ISN

A definição do ISN pode ocorrer de diferentes maneiras, conforme a necessidade da aplicação e a configuração estabelecida pelo Administrador de Banco de Dados (DBA).
1. ISN atribuído pelo Adabas - O próprio banco de dados gera automaticamente o próximo ISN disponível, normalmente de forma sequencial.
2. ISN atribuído pela aplicação - O programa aplicativo, desenvolvido em linguagens como Natural, COBOL ou outra interface Adabas, define explicitamente qual ISN será utilizado ao inserir um novo registro.
3. Reutilização de ISNs - Quando um registro é excluído, o seu ISN pode ou não ser reaproveitado pelo sistema. Esse comportamento depende das configurações definidas para o arquivo e das políticas de administração adotadas.

Por que o ISN é tão importante?

Uma das principais características do Adabas é sua capacidade de realizar acesso extremamente rápido aos dados. Diferentemente de muitos bancos de dados relacionais, que frequentemente necessitam de pesquisas extensas e operações de junção entre tabelas, o Adabas utiliza o ISN como um ponteiro direto para a localização física do registro no Data Storage.

O processo ocorre da seguinte forma:

1. O Adabas utiliza seus índices invertidos para localizar os registros que atendem aos critérios da pesquisa.
2. O resultado da pesquisa é uma lista de ISNs correspondentes aos registros encontrados.
3. Com essa lista em mãos, o banco acessa diretamente os registros no Data Storage, sem a necessidade de percorrer todo o arquivo.

Benefícios do uso do ISN

Acesso Direto: localização imediata dos registros por meio de seus identificadores internos.
Alto Desempenho: minimiza leituras desnecessárias e reduz significativamente o tempo de resposta das consultas.
Eficiência na Recuperação de Dados: permite que grandes volumes de informações sejam acessados com rapidez e baixo custo de processamento.

É justamente essa arquitetura baseada em ISNs e índices invertidos que faz do Adabas um banco de dados reconhecido por sua elevada performance em ambientes de missão crítica e processamento de grandes volumes de dados.
Leia Mais

Adabas Operator Commands: Referência Completa

O banco de dados Adabas tem um conjunto de comandos operacionais que permitem aos administradores e operadores monitorar, controlar e gerenciar o ambiente de banco de dados em tempo real. Conhecidos como Adabas Operator Commands, esses comandos são essenciais para tarefas de administração, diagnóstico de problemas, análise de desempenho e execução de operações de manutenção sem a necessidade de interromper o banco de dados. Por meio desses comandos, é possível consultar o estado da sessão, exibir estatísticas, controlar logs, gerenciar recursos, obter informações sobre usuários e transações, além de executar diversas ações administrativas de forma rápida e eficiente. Neste artigo, exploraremos os principais Adabas Operator Commands, apresentando sua finalidade, sintaxe e exemplos práticos de utilização no dia a dia da administração de ambientes Adabas.

ADAEND

Use o comando ADAEND para encerrar a sessão Adabas normalmente. Após feito este comando não serão aceitos novos usuários para acessar o banco de dado. ET é a lógica de atualização continuou até o fim da transação atual lógica para cada usuário. Depois de toda a atividade foi concluída, conforme descrito acima, a sessão é encerrada Adabas. Em ambientes de núcleo cluster, a opção global pode ser usado para encerrar a sessão Adabas em todos os núcleos de cluster ativo.
STC03611  F AAFAI222,ADAEND                                                
STC01517  +ADAN51 00222 2011-02-09 16:56:12 Operator type-in: ADAEND        
STC01517  +ADAN42 00222 2011-02-09 16:56:12 Function accepted              
STC01517  +ADAM97 00222 This ASCB/initiator will be terminated by MVS at EOJ
STC01517  IEF404I AAFAI222 - ENDED - TIME=16.56.12                          
STC01517  IEF352I ADDRESS SPACE UNAVAILABLE                                
STC01517  $HASP395 AAFAI222 ENDED

ALOCKF

Use o comando ALOCKF bloquear um arquivo com antecedência para garantir que um usuário EXU, EXF, ou UTI terá o controle exclusivo do arquivo especificado. O avanço bloqueio impede que novas operações possam usar o arquivo. Uma vez que todos os usuários atuais deixaram de usar o arquivo, o usuário tem o controle exclusivo do lock. Até então, o usuário controle exclusivo precisa esperar. Para remover o bloqueio do avanço sem executar o utilitário, consulte o comando RALOCKF. Este comando não está disponível no modo single user ou para um núcleo só de leitura.

AOSLOG

Use o comando AOSLOG para ativar ou desativar o log de registro do Adabas em determinadas chamadas que modificar o núcleo para DD/PRINT. Essas chamadas são emitidos por ADADBS OPERCOM ou Adabas Online System. Read e display as chamadas não são registrados.

ASYTVS

Use o comando ASYTVS é para ativar ou desativar o asynchronous flushing of buffers no número de série do volume.

CANCEL

Use o comando CANCEL para cancelar a sessão Adabas imediatamente. Todo o processamento que estiver usando o banco de dados será imediatamente suspensa. A rotina de autorestart a ser executada durante a inicialização da sessão Adabas que vai resolver as pendencias que faltaram a ser feitas no banco. Em ambientes de cluster núcleo, a opção global pode ser usado para cancelar a sessão Adabas em todos os núcleos de cluster ativo.

CLOGMRG

Use o comando CLOGMRG dinamicamente modifica a configuração do parâmetro ADARUN CLOGMRG. O comando CLOGMRG é válida apenas em ambientes de cluster. É global, por definição, e afeta todos os núcleos do cluster.

CLUFREEUSER

O comando CLUFREEUSER é válida apenas em ambientes de cluster. Pode ser emitida para o núcleo local, ou, com a opção global, contra todos os núcleos ativos e inativos do cluster. Use o comando CLUFREEUSER para excluir restos de agrupar os elementos da tabela de usuário (UTEs ou PLXUSERs) armazenadas em comum que já não estão associados a elementos do usuário fila (UQEs) em um núcleo.

CT

Use o comando do CT para dinamicamente substituir o valor do parâmetro ADARUN do banco, ou seja, o número máximo de segundos que podem decorrer do tempo um comando Adabas foi concluída até que os resultados são retornados para o usuário através da comunicação interregion (que depende da particular sistema operacional usado). A configuração mínima é 1, o máximo é 16777215. Em ambientes de cluster núcleo, o comando do CT é, por definição, global e afeta todos os núcleos do cluster.
STC00291  F AAFAI220,CT=301                                                   
STC00500  +ADAN41 00220 2020-05-20 15:19:47 Function completed 

DAUQ

Use o comando DAUQ para mostrar os elementos do usuário fila de usuários que tenham executado o comando, pelo menos, um Adabas nos últimos 15 minutos.
STC03611  F AAFAI230,DAUQ                                            
STC08763  +ADAN11 00230 2011-02-09 16:58:11 User=00000001,JN=AAFBR230
STC08763  +                       ,TID=G.K.....(C749D29035CA7002)    
STC08763  +                                   TY= E,LA=19 S          
STC08763  +ADAN11 00230 2011-02-09 16:58:11 User=00000002,JN=AAFBR230
STC08763  +                       ,TID=G.K.....(C749D29035CACF42)    
STC08763  +                                   TY= E,LA=19 S          
STC08763  +ADAN11 00230 2011-02-09 16:58:11 User=00000287,JN=AAFCINID
STC08763  +                       ,TID=AA950041(C1C1F9F5F0F0F4F1)    
STC08763  +                                   TY= E,LA=97 S          
STC08763  +ADAN11 00230 2011-02-09 16:58:11 User=00000288,JN=AAFCINID
STC08763  +                       ,TID=AA950042(C1C1F9F5F0F0F4F2)    
STC08763  +                                   TY= E,LA=89 S          
STC08763  +ADAN41 00230 2011-02-09 16:58:11 Function completed

DCQ

Use o comando DCQ para mostrar todos os elementos de comando postado fila (CQEs). O comando DCQ mostra ID de cada usuário do CQE, nome do trabalho e tamanho do buffer.
STC03611  F AAFAI222,DCQ                                      
STC01517  +ADAN14 00222 2011-02-09 16:54:06 Current CQ is empty
STC01517  +ADAN41 00222 2011-02-09 16:54:06 Function completed

DDIB

Use o comando DDIB para exibir o bloco de integridade de dados (DIB). Este bloco contém entradas indicando quais utilitários Adabas estão ativos e os recursos que estão sendo utilizados por cada utilitario.
STC03611  F AAFAI222,DDIB                                                      
STC01517  +ADAN25 00222 2011-02-09 16:53:06 DIB                                
STC01517  +ADAN25 00222 2011-02-09 16:53:06 Jobname=AAFAI222,Starttime=16:42:29
STC01517  +                                                                    
STC01517  +ADAN41 00222 2011-02-09 16:53:06 Function completed         

DDSF

Use o comando DDSF para mostrar Adabas Delta Save status Facility. O comando DDSF só está disponível se o núcleo Adabas é executado com o parâmetro ADARUN DSF=YES.

DELUF

Use o comando DELUF para excluir todos os usuários que estão usando o arquivo especificado. Todas as transações abertas dos usuários excluídos são backed out. Este comando não exclui usuários EXF ou UTI. O comando DELUF corresponde ao ADADBS OPERCOM STOPF=file-number,PURGE function. Atenção - Se Adabas está sendo executado com ADARUN OPENRQ=NO (especificando que os usuários não são obrigados a emitir OP como o primeiro comando da sessão), execute o comando DELUF somente se tiver certeza de que os usuários a ser excluído não estão mais ativos. Se um usuário com uma transação aberta é excluído, mas depois retorna (através do envio de um comando), não há nenhuma indicação sobre a devolução da transação. Se o usuário continuar a operação, inconsistências lógicas no banco de dados pode ocorrer.

DELUI

Use o comando DELUI para excluir todos os usuários que não tenham executado um comando durante o intervalo de tempo especificado (em segundos). Todas as transações abertas dos usuários excluídos são recuou. Este comando não exclui usuários EXF ou UTI. O comando DELUI corresponde ao ADADBS OPERCOM STOPI=time,PURGE function. Atenção - Se Adabas está sendo executado com ADARUN OPENRQ=NO (especificando que os usuários não são obrigados a emitir OP como o primeiro comando da sessão), execute o comando DELUI somente se tiver certeza de que os usuários a ser excluído não estão mais ativos. Se um usuário com uma transação aberta é excluído, mas depois retorna (através do envio de um comando), não há nenhuma indicação sobre a devolução da transação. Se o usuário continuar a operação, inconsistências lógicas no banco de dados pode ocorrer.
STC00291  F AAFAI220,DELUI=900                                                
STC00500  +ADAN42 00220 2020-05-20 15:21:32 Function accepted

DFILES

Use o comando DFILES para mostrar o número de usuários a acessando, atualizando, ou controlar ou um arquivo específico (n) ou uma série de arquivos individuais, especificado em uma lista (N1,..., n5). Um máximo de cinco arquivos podem ser especificados na lista. Os usuários são exibidos pelo nome de trabalho e identificação do usuário Adabas atribuído e listado pelo arquivo.
STC03611  F AAFAI230,DFILES=21,40,41,42,43                        
STC08763  +ADAN31 00230 2011-02-09 17:07:19 File= 00021 is not used
STC08763  +ADAN31 00230 2011-02-09 17:07:19 File= 00040 is not used
STC08763  +ADAN31 00230 2011-02-09 17:07:19 File= 00041 is not used
STC08763  +ADAN31 00230 2011-02-09 17:07:19 File= 00042 is not used
STC08763  +ADAN31 00230 2011-02-09 17:07:19 File= 00043 is not used
STC08763  +ADAN41 00230 2011-02-09 17:07:19 Function completed

DFILUSE

Use o comando DFILUSE para mostrar o número de comandos total processado até agora para o arquivo especificado durante a sessão atual. A contagem é exibido na mensagem ADAN33 núcleo.
STC02760  F AAFAI222,DFILUSE=22
STC03141  +ADAN33 00222 2015-08-25 16:32:37 File= 22    Usage=0
STC03141  +ADAN41 00222 2015-08-25 16:32:37 Function completed

DHQ

Use o comando DHQ para exibir até cinco elementos a fila de espera.
STC02760  F AAFAI222,DHQ
STC03141  +ADAN07 00222 2015-08-25 16:33:57 Current HQ is empty
STC03141  +ADAN41 00222 2015-08-25 16:33:57 Function completed

DHQA

Use o comando DHQA para exibir até 1.000 elementos fila de espera.
STC02760  F AAFAI222,DHQA
STC03141  +ADAN07 00222 2015-08-25 16:34:25 Current HQ is empty
STC03141  +ADAN41 00222 2015-08-25 16:34:25 Function completed 

DLOCKF

Use o comando DLOCKF para dar display dos files locked.
STC02760  F AAFAI222,DLOCKF
STC03141  +ADAN30 00222 2015-08-25 16:20:17 No files locked
STC03141  +ADAN41 00222 2015-08-25 16:20:17 Function completed 

DNC

Use o comando DNC para mostrar o número de elementos de comando postado fila de espera para ser selecionado.
STC02760  F AAFAI222,DNC
STC03141  +ADAN13 00222 2015-08-25 16:21:02 Number of posted CQEs = 0
STC03141  +ADAN41 00222 2015-08-25 16:21:02 Function completed

DNFV

Use o comando DNFV para mostrar as variáveis de arquivos do núcleo, ou seja, informações sobre o uso atual do arquivo. Este comando fornece informações sobre os arquivos em uso em um determinado ponto no tempo. Ele também indica que outros núcleos tem o controle de arquivo exclusivo, se, por exemplo, um programa do usuário recebe uma resposta 148, subcode 15.
STC02760  F AAFAI222,DNFV
STC03141  +FNR=00008  A=Y U=  ID=      CA=00001   CU=00000
STC03141  +FNR=00009  A=Y U=Y ID=      CA=00001   CU=00000
STC03141  +FNR=00015  A=Y U=  ID=      CA=00001   CU=00000
STC03141  +ADAN41 00222 2015-08-25 16:21:52 Function completed

DNH

Use o comando DNH para mostrar o número de ISNs atualmente na hold queue (fila de espera).
STC02760  F AAFAI222,DNH
STC03141  +ADAN06 00222 2015-08-25 16:22:32 Number of HQEs = 0
STC03141  +ADAN41 00222 2015-08-25 16:22:32 Function completed 

DNU

Use o comando DNU para exibir o número de usuários atuais.
STC02760  F AAFAI222,DNU
STC03141  +ADAN09 00222 2015-08-25 16:23:05 Number of UQEs = 2
STC03141  +ADAN41 00222 2015-08-25 16:23:05 Function completed 

DONLSTAT

Use o comando DONLSTAT para exibir o status de cada reorder ativo, invert online, ou Event Replicator processo de estado inicial juntamente com a identificação do processo.
16.58.09 STC08167  +ADAN35 00240 2019-02-20 16:58:08 Online processes:
16.58.09 STC08167  +ADAN35 00240 2019-02-20 16:58:08 INVERT,DE=AU,FILE=297,Cur-ISN=52241905
16.58.09 STC08167  +ADAN35 00240 2019-02-20 16:58:08 ID=X'000036A2',Active
16.58.09 STC08167  +ADAN35 00240 2019-02-20 16:58:08 INVERT,DE=AZ,FILE=298,Cur-ISN=16648679
16.58.09 STC08167  +ADAN35 00240 2019-02-20 16:58:08 ID=X'000036DC',Active
16.58.09 STC08167  +ADAN41 00240 2019-02-20 16:58:08 Function completed 

DPARM

Use o comando DPARM para apresentar os parâmetros da sessão Adabas atualmente em vigor.
STC03611  F AAFAI222,DPARM                                                    
STC01517  +ADAN16 00222 2011-02-09 16:43:07 READONLY=NO,UTIONLY=NO            
STC01517  +ADAN16 00222 2011-02-09 16:43:07 ASYTVS=YES,AOSLOG=NO              
STC01517  +ADAN16 00222 2011-02-09 16:43:07 NC=250,NH=3000,NT=20,NU=3000      
STC01517  +ADAN16 00222 2011-02-09 16:43:07 LBP=61467904,LFP=12288000,LWP=33000
STC01517  +ADAN16 00222 2011-02-09 16:43:07 LI=300000,LP=25000,LQ=150000,LS=300
STC01517  +ADAN16 00222 2011-02-09 16:43:07 LFIOP=15360000,FMXIO=1            
STC01517  +ADAN16 00222 2011-02-09 16:43:07 TT=420,TNAA=900,TNAE=900,CT=300    
STC01517  +ADAN16 00222 2011-02-09 16:43:07 TNAX=120,MXTT=3600,MXTNA=3600      
STC01517  +ADAN16 00222 2011-02-09 16:43:07 Logging                            
STC01517  +                                 LOGCB                              
STC01517  +ADAN41 00222 2011-02-09 16:43:07 Function completed

DPPT

Utilize o comando DPPT para exibir a Parallel Participant Table (PPT), ou Tabela de Participantes Paralelos. Esse comando permite visualizar o bloco interno do próprio PPT no núcleo do sistema. As informações apresentadas pelo DPPT são de natureza interna do Adabas e têm como principal objetivo auxiliar a equipe de suporte técnico da Software AG na análise e diagnóstico do ambiente.
STC02760  F AAFAI222,DPPT
STC03141  +ADAN24 00222 2015-08-25 16:24:43 Display PPT RABNs 0000281F to 00002
STC03141  +ADAN24 00222 2015-08-25 16:24:43
STC03141  +ADAN24 00222 2015-08-25 16:24:43          PPT RABN: 000028FF
STC03141  +ADAN24 00222 2015-08-25 16:24:43 Number of entries: 01
STC03141  +ADAN24 00222 2015-08-25 16:24:43 Nucleus indicator: 50
STC03141  +ADAN24 00222 2015-08-25 16:24:43             NUCID: 0000
STC03141  +ADAN24 00222 2015-08-25 16:24:43  PPT Entry length: 0022
STC03141  +ADAN24 00222 2015-08-25 16:24:43          Entry ID: E9
STC03141  +ADAN24 00222 2015-08-25 16:24:43 Dataset=/ADABAS/DBID222/WORK1/
STC03141  +ADAN41 00222 2015-08-25 16:24:43 Function completed

DRES

Use o comando DRES para mostrar o pool space e o mais alto nível de uso (high water mark) chegou até agora durante a sessão atual, contagem de registros e por cento para os seguintes recursos:
 STC08623  F AAFAI222,DRES                                                      
 STC01129  +ADAN28 00222 2018-07-26 08:25:00 Resource       Size       Current  
 STC01129  +ADAN28 00222 2018-07-26 08:25:00 AB  -Pool     3276800         N/A  
 STC01129  +ADAN28 00222 2018-07-26 08:25:00 CQ  -Pool       48000           0  
 STC01129  +ADAN28 00222 2018-07-26 08:25:00 FI  -Pool    12288000           0  
 STC01129  +ADAN28 00222 2018-07-26 08:25:00 HQ  -Pool       84056           0  
 STC01129  +ADAN28 00222 2018-07-26 08:25:00 TBI -Pool      300000           0  
 STC01129  +ADAN28 00222 2018-07-26 08:25:00 TBS -Pool      150000           0  
 STC01129  +ADAN28 00222 2018-07-26 08:25:00 UQ  -Pool      925232         924  
 STC01129  +ADAN28 00222 2018-07-26 08:25:00 UQF -Pool      288360          72  
 STC01129  +ADAN28 00222 2018-07-26 08:25:00 WORK-Pool     3300000         416  
 STC01129  +ADAN41 00222 2018-07-26 08:25:00 Function completed 

DSTAT

Exibe o atual status de operação ADALOD, ADAORD, ADARES, ADASAV, ADAULD ou ADAVAL. A seguir, exemplos da saída resultante quando o DSTAT é inserido durante operações específicas do utilitário Adabas:
STC08623  F AAFAI080,DSTAT                                                    
STC02353  ADAN17 00080 2018-07-27 18:35:08 Online database save running        
STC02353  ADAN17 00080 2018-07-27 18:35:08 Read I/Os A=1073149,D=9033462,W=264
STC02353  ADAN17 00080 2018-07-27 18:35:08 Write I/O A=27886,D=11518,W=4785537
STC02353  ADAN17 00080 2018-07-27 18:35:08 Nr. of commands=79775254,Buffer effi
STC02353  ADAN17 00080 2018-07-27 18:35:08 Nr. of Fmt-Tran.=16245,Nr. of Fmt-Ov
STC02353  ADAN17 00080 2018-07-27 18:35:08 Thread001=79341190 commands        
STC02353  ADAN17 00080 2018-07-27 18:35:08 Thread002=431824 commands          
STC02353  ADAN17 00080 2018-07-27 18:35:08 Thread003=2240 commands            
STC02353  ADAN41 00080 2018-07-27 18:35:08 Function completed 

Quando não esta rodando o nada;
STC03611  F AAFAI222,DSTAT                                                    
STC04070  +ADAN17 00222 2011-02-10 13:54:13 Read I/Os A=365,D=2,W=3            
STC04070  +ADAN17 00222 2011-02-10 13:54:13 Write I/O A=5,D=0,W=2              
STC04070  +ADAN17 00222 2011-02-10 13:54:13 Nr. of commands=1,Buffer efficiency
STC04070  +ADAN17 00222 2011-02-10 13:54:13 Nr. of Fmt-Tran.=6,Nr. of Fmt-Ovwr.
STC04070  +ADAN17 00222 2011-02-10 13:54:13 Thread001=1 commands              
STC04070  +ADAN41 00222 2011-02-10 13:54:13 Function completed 

DTH

Use o comando DTH para dar display do status das threads.
STC03611  F AAFAI222,DTH                                      
STC04070  +ADAN18 00222 2011-02-10 13:55:03 THN=1,ST=AA ,Use=2
STC04070  +ADAN18 00222 2011-02-10 13:55:03 THN=2,ST=UU ,Use=0
STC04070  +ADAN18 00222 2011-02-10 13:55:03 THN=3,ST=UU ,Use=0
STC04070  +ADAN18 00222 2011-02-10 13:55:03 THN=4,ST=UU ,Use=0
STC04070  +ADAN18 00222 2011-02-10 13:55:03 THN=5,ST=UU ,Use=0
STC04070  +ADAN18 00222 2011-02-10 13:55:03 THN=6,ST=UU ,Use=0
STC04070  +ADAN18 00222 2011-02-10 13:55:03 THN=7,ST=UU ,Use=0
STC04070  +ADAN18 00222 2011-02-10 13:55:03 THN=8,ST=UU ,Use=0
STC04070  +ADAN18 00222 2011-02-10 13:55:03 THN=9,ST=UU ,Use=0
STC04070  +ADAN18 00222 2011-02-10 13:55:03 THN=10,ST=UU ,Use=0
STC04070  +ADAN18 00222 2011-02-10 13:55:03 THN=11,ST=UU ,Use=0
STC04070  +ADAN18 00222 2011-02-10 13:55:03 THN=12,ST=UU ,Use=0
STC04070  +ADAN18 00222 2011-02-10 13:55:03 THN=13,ST=UU ,Use=0
STC04070  +ADAN18 00222 2011-02-10 13:55:03 THN=14,ST=UU ,Use=0
STC04070  +ADAN18 00222 2011-02-10 13:55:03 THN=15,ST=UU ,Use=0
STC04070  +ADAN18 00222 2011-02-10 13:55:03 THN=16,ST=UU ,Use=0
STC04070  +ADAN18 00222 2011-02-10 13:55:03 THN=17,ST=UU ,Use=0
STC04070  +ADAN18 00222 2011-02-10 13:55:03 THN=18,ST=UU ,Use=0
STC04070  +ADAN18 00222 2011-02-10 13:55:03 THN=19,ST=UU ,Use=0
STC04070  +ADAN18 00222 2011-02-10 13:55:03 THN=20,ST=UU ,Use=0
STC04070  +ADAN41 00222 2011-02-10 13:55:03 Function completed 

DUQ

Use o comando DUQ para exibir até cinco elementos da fila ativos e inativos da user queue.
STC02760  F AAFAI222,DUQ
STC03141  +ADAN11 00222 2015-08-25 16:29:25 User=00000001,JN=AAFCINID
STC03141  +                       ,TID=DBA00551(C1C1F0F1F0F5F5F1)
STC03141  +                                   TY= U,LA=730 S
STC03141  +ADAN11 00222 2015-08-25 16:29:25 User=00000004,JN=AAFCINID
STC03141  +                       ,TID=DBA00553(C1C1F0F1F0F5F5F3)
STC03141  +                                   TY= E,LA=723 S
STC03141  +ADAN41 00222 2015-08-25 16:29:25 Function completed 

DUQA

Use o comando DUQA para dar display até 100 elementos da user queue.
STC02760  F AAFAI222,DUQA
STC03141  +ADAN11 00222 2015-08-25 16:29:58 User=00000001,JN=AAFCINID
STC03141  +                       ,TID=DBA00551(C1C1F0F1F0F5F5F1)
STC03141  +                                   TY= U,LA=763 S
STC03141  +ADAN11 00222 2015-08-25 16:29:58 User=00000004,JN=AAFCINID
STC03141  +                       ,TID=DBA00553(C1C1F0F1F0F5F5F3)
STC03141  +                                   TY= E,LA=756 S
STC03141  +ADAN41 00222 2015-08-25 16:29:58 Function completed 

DUQE

Use o comando DUQE para mostrar o elemento da user queue para a identificação do usuário especificado Adabas-assigned user ID. O ID do usuário deve ser digitado no formato hexadecimal como segue: -- DUQE=X'A3C1F2' -- Não digite um nome de job no lugar do ID de usuário.

DUUQE

Use o comando DUUQE para exibir elementos de utilitario da user queue.
STC02760  F AAFAI222,DUUQE
STC03141  +ADAN11 00222 2015-08-25 16:40:10 Currently no utility UQE
STC03141  +ADAN41 00222 2015-08-25 16:40:10 Function completed 

FEOFCL

Use o comando FEOFCL para fechar a atual da CLOG (command log) dual ou múltiplo e fazer a troca para o command log para outro log. Esse comando é válido apenas se o comando dual ou múltiplo log está em vigor. Em ambientes de cluster núcleo, a opção global pode ser usado para fechar e mudar de comando duplo ou múltiplo registros em todos os núcleos de cluster ativo.
k f aafai220,FEOFCL                                                            
JOB     NUMBER     Q J O SYST  DEST     PRI  ST      LINES  FORM  FCB  FLASH  
AAFAI220 S.00682   *X   - CPAC            15              0                    
AAFAI220 S.01053    O S A                  9  H         306  STD                
... 34 PERCENT SPOOL UTILIZATION.
Feito a troca
16:36:09        TID    87          COM641/D          User DBA0055      19.03.19
                         ---   System Messages   ---                       UQM1
STC00682  +UEX2   00220 CHAMADA P/ CLOG, FLAGS=X'4800'                        
JOB01054  $HASP100 AAFAC220 ON INTRDR      DBA                   FROM STC00682
STC00682  +UEX2   00220 JOB AAFACLOG   SUBMETIDO                              
STC00682  +UEX2   00220 RETORNO AO NUCLEO, WAITTIME= 000 S                    
STC00682  +ADAL03 00220 2019-03-19 16:36:09 Command-Log DDCLOGR2 started      
STC00682  +ADAN41 00220 2019-03-19 16:36:09 Function completed                
JOB01054  $SI(K)                                                              
          $HASP892 INIT(11)  STATUS=INACTIVE,CLASS=S,NAME=K,ASID=0024          
JOB01054  TSS7000I ADABAST Last-Used 19 Mar 19 16:35 System=CPAC Facility=STC  
JOB01054  TSS7001I Count=01395 Mode=Fail Locktime=None Name=ADABAS DE TESTES  
JOB01054  $HASP373 AAFAC220 STARTED - INIT K    - CLASS S - SYS CPAC          
JOB01054  IEF403I AAFAC220 - STARTED - TIME=16.36.09                          
JOB01054 *CTS001  IEF233A M 0899,PRIVAT,SL,AAFAC220,COPYCLOG,ADABAS.C.DB220.CLO
JOB01054 *IEF233A M 0899,PRIVAT,SL,AAFAC220,COPYCLOG,                          
JOB01054          ADABAS.C.DB220.CLOG.G0003V00                                
JOB01054  CTS014  IEF234E K 0899,,PVT,AAFAC220,COPYCLOG                        
JOB01054  IEF234E K 0899,,PVT,AAFAC220,COPYCLOG                                
JOB01054  -                                              --TIMINGS (MINS.)--  
JOB01054  -STEPNAME PROCSTEP    RC   EXCP   CONN    TCB    SRB  CLOCK   SERV  W
JOB01054  -COPYCLOG             04    296     65    .00    .00     .0   6393  B
JOB01054  IEF404I AAFAC220 - ENDED - TIME=16.36.14                            
JOB01054  -AAFAC220 ENDED.  NAME-DBA                  TOTAL TCB CPU TIME=    .0
JOB01054  $HASP395 AAFAC220 ENDED                                              
          $HASP309 INIT K    INACTIVE ******** C=S                            
STC08935 @66 DF3001A  *** RVS 5.1  ***                                        
******************************** BOTTOM OF DATA *******************************
Select Function:                                                       CONSOLE
Operand/Command:                                                              
Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
                                   Retrv  Up    Down        Left  Right

FEOFPL

Use o comando FEOFPL para fechar o registro de protection log atual. Este comando é valido para dual ou múltipla de dados para mudar para o registo de uma outra protection log. Em ambientes usando núcleo cluster, a opção global pode ser usado para fechar e mudar a dupla proteção ou múltiplos registros em todos os núcleos de cluster ativo.
K f aafai210,FEOFPL                                                            
JOB     NUMBER     Q J O SYST  DEST     PRI  ST      LINES  FORM  FCB  FLASH  
AAFAI210 S.05061   *X   - CPAC            15              0                    
... 34 PERCENT SPOOL UTILIZATION.                                               
Feita a troca
16:40:09        TID    87          COM641/D          User DBA0055      19.03.19
                         ---   System Messages   ---                       UQM1
STC05061  +UEX2   00210 CHAMADA P/ PLOG, FLAGS=X'4000'                        
JOB01060  $HASP100 AAFAP210 ON INTRDR      DBA                   FROM STC05061
STC05061  +UEX2   00210 JOB AAFAPLOG   SUBMETIDO                              
STC05061  +UEX2   00210 RETORNO AO NUCLEO, WAITTIME= 000 S                    
STC05061  +ADAN21 00210 2019-03-19 16:40:09 Protection log PLOGR2 started      
STC05061  +ADAN41 00210 2019-03-19 16:40:09 Function completed                
JOB01060  $SI(K)                                                              
          $HASP892 INIT(11)  STATUS=INACTIVE,CLASS=S,NAME=K,ASID=0024          
JOB01060  TSS7000I ADABASP Last-Used 19 Mar 19 09:38 System=CPAC Facility=BATCH
JOB01060  TSS7001I Count=30801 Mode=Fail Locktime=None Name=ADABAS DE PRODUCAO
JOB01060  $HASP373 AAFAP210 STARTED - INIT K    - CLASS S - SYS CPAC          
JOB01060  IEF403I AAFAP210 - STARTED - TIME=16.40.10                          
JOB01060 *CTS001  IEF233A M 089B,PRIVAT,SL,AAFAP210,COPYPLOG,ADABAS.C.DB210.PLO
JOB01060 *IEF233A M 089B,PRIVAT,SL,AAFAP210,COPYPLOG,                          
JOB01060          ADABAS.C.DB210.PLOG.G0906V00                                
JOB01061  -ICEGEN03             00     35      8    .00    .00     .0   2094  S
JOB01061  -SMTP1             FLUSH      0      0    .00    .00     .0      0  S
JOB01061  IEF404I ABAPR001 - ENDED - TIME=16.40.13                            
JOB01061  -ABAPR001 ENDED.  NAME-PRODUCAO             TOTAL TCB CPU TIME=    .0
JOB01061  $HASP395 ABAPR001 ENDED                                              
          $HASP309 INIT F    INACTIVE ******** C=3                            
JOB01060  CTS014  IEF234E K 089B,VC2196,PVT,AAFAP210,COPYPLOG                  
JOB01060  IEF234E K 089B,VC2196,PVT,AAFAP210,COPYPLOG                          
JOB01060  -                                              --TIMINGS (MINS.)--  
JOB01060  -STEPNAME PROCSTEP    RC   EXCP   CONN    TCB    SRB  CLOCK   SERV  W
JOB01060  -COPYPLOG             00    564    162    .00    .00     .0  18734  B
JOB01060  IEF404I AAFAP210 - ENDED - TIME=16.40.15                            
JOB01060  -AAFAP210 ENDED.  NAME-DBA                  TOTAL TCB CPU TIME=    .0
JOB01060  $HASP395 AAFAP210 ENDED                                              
          $HASP309 INIT K    INACTIVE ******** C=S                            
STC08935 @66 DF3001A  *** RVS 5.1  ***                                        
******************************** BOTTOM OF DATA *******************************
Select Function:                                                       CONSOLE
Operand/Command:                                                              
Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
                                   Retrv  Up    Down        Left  Right


FMXIO

Use o comando FMXIO para mudar dinamicamente a configuração do parâmetro ADARUN FMXIO.

HALT

Use o comando HALT para realizar uma BT (back out transaction) para a sessão de cada usuário ativo que estiver usando a lógica de ET, em seguida, encerrar a sessão Adabas. Não serão gerados dumps produzidos usando o comando HALT. Em ambientes de cluster núcleo, a opção global pode ser usado para executar um BT para todas as sessões de usuários ativos usando a lógica ET e encerra a sessão Adabas em todos os núcleos de cluster ativo.
STC08623  F AAFAI220,HALT                                                      
STC00647  +ADAN51 00220 2018-07-24 17:25:07 Operator type-in: HALT            
STC00647  +ADAN42 00220 2018-07-24 17:25:07 Function accepted                  

--- CLOG pedido - Plog este banco não tem
STC00647  +UEX2   00220 CHAMADA P/ CLOG, FLAGS=X'4800'                        
JOB07430  $HASP100 AAFAC220 ON INTRDR      DBA                   FROM STC00647
STC00647  +UEX2   00220 JOB AAFACLOG   SUBMETIDO                              
STC00647  +UEX2   00220 RETORNO AO NUCLEO, WAITTIME= 000 S                    
JOB07430  $SI(K)                                                              
STC00647  +ADAM97 00220 This ASCB/initiator will be terminated by MVS at EOJ  
          $HASP892 INIT(11)  STATUS=INACTIVE,CLASS=S,NAME=K,ASID=0024          
JOB07430  $HASP373 AAFAC220 STARTED - INIT K    - CLASS S - SYS CPAC          
JOB07430  IEF403I AAFAC220 - STARTED - TIME=17.25.08                          
STC00647  IEF404I AAFAI220 - ENDED - TIME=17.25.08                            
STC00647  IEF352I ADDRESS SPACE UNAVAILABLE                                    
STC00647  $HASP395 AAFAI220 ENDED

O banco saiu do ar
IEA989I SLIP TRAP ID=X33E MATCHED.  JOBNAME=*UNAVAIL, ASID=00BC.    
JOB07430 *CTS001  IEF233A M 089A,PRIVAT,SL,AAFAC220,COPYCLOG,ADABAS.C.DB220.CLO
JOB07430 *IEF233A M 089A,PRIVAT,SL,AAFAC220,COPYCLOG,                          
JOB07430          ADABAS.C.DB220.CLOG.G0001V00                                
JOB07430  IEC705I TAPE ON 089A,VC1069,SL,COMP,AAFAC220,COPYCLOG,ADABAS.C.DB220.
JOB07430  IEC205I DDSIAUS1,AAFAC220,COPYCLOG,FILESEQ=1, COMPLETE VOLUME LIST,  
JOB07430  DSN=ADABAS.C.DB220.CLOG.G0001V00,VOLS=VC1069,TOTALBLOCKS=1          
JOB07430  CTS014  IEF234E K 089A,VC1069,PVT,AAFAC220,COPYCLOG                  
JOB07430  IEF234E K 089A,VC1069,PVT,AAFAC220,COPYCLOG                          
JOB07430  -                                              --TIMINGS (MINS.)--  
JOB07430  -STEPNAME PROCSTEP    RC   EXCP   CONN    TCB    SRB  CLOCK   SERV  W
JOB07430  -COPYCLOG             00    346    120    .00    .00     .0   9053  B
JOB07430  IEF404I AAFAC220 - ENDED - TIME=17.25.13

LOCKF

Use o comando LOCKF para bloquear o arquivo especificado. Este comando bloqueia até para utilitarios o acesso.
-- Prendendo o arquivo
STC08623  F AAFAI220,LOCKF=26                                                  
STC00647  +ADAN41 00220 2018-07-24 17:09:23 Function completed                

-- Display dos arquivos presos
STC08623  F AAFAI220,DLOCKF                                                    
STC00647  +ADAN30 00220 2018-07-24 17:09:34 Files=00026                        
STC00647  +ADAN41 00220 2018-07-24 17:09:34 Function completed                

-- Despredendo o arquivo preso
STC08623  F AAFAI220,UNLOCKF=26                                                
STC00647  +ADAN41 00220 2018-07-24 17:10:12 Function completed                

-- Display dos arquivos presos
STC08623  F AAFAI220,DLOCKF                                                    
STC00647  +ADAN30 00220 2018-07-24 17:10:20 No files locked                    
STC00647  +ADAN41 00220 2018-07-24 17:10:20 Function completed

LOCKU

Use o comando LOCKU para bloquear o arquivo especificado para todos os usuários. Utilitários Adabas podem usar o arquivo especificado normalmente.
-- Prendendo o arquivo
STC08623  F AAFAI220,LOCKU=26                                                  
STC00647  +ADAN41 00220 2018-07-24 17:13:49 Function completed                

-- Display dos arquivos presos
STC08623  F AAFAI220,DLOCKF                                                    
STC00647  +ADAN30 00220 2018-07-24 17:14:04 Files=00026                        
STC00647  +ADAN41 00220 2018-07-24 17:14:04 Function completed                

-- Liberando o arquivo preso
STC08623  F AAFAI220,UNLOCKU=26                                                
STC00647  +ADAN41 00220 2018-07-24 17:14:12 Function completed                

-- Display dos arquivos presos
STC08623  F AAFAI220,DLOCKF                                                    
STC00647  +ADAN30 00220 2018-07-24 17:14:20 No files locked                    
STC00647  +ADAN41 00220 2018-07-24 17:14:20 Function completed

LOCKX

Use o comando LOCKX para bloquear o arquivo especificado para todos os usuários, exceto os usuários EXU ou EXF. Usuários EXU e EXF podem usar o arquivo normalmente. O lock é liberada automaticamente quando um usuário emite um comando OP.
-- Prendendo o arquivo
STC08623  F AAFAI220,LOCKX=26                                                  
STC00647  +ADAN41 00220 2018-07-24 17:13:49 Function completed                

-- Display dos arquivos presos
STC08623  F AAFAI220,DLOCKF                                                    
STC00647  +ADAN30 00220 2018-07-24 17:14:04 Files=00026                        
STC00647  +ADAN41 00220 2018-07-24 17:14:04 Function completed                

-- Liberando o arquivo preso
STC08623  F AAFAI220,UNLOCKX=26                                                
STC00647  +ADAN41 00220 2018-07-24 17:14:12 Function completed                

-- Display dos arquivos presos
STC08623  F AAFAI220,DLOCKF                                                    
STC00647  +ADAN30 00220 2018-07-24 17:14:20 No files locked                    
STC00647  +ADAN41 00220 2018-07-24 17:14:20 Function completed


LOGGING

Use o comando LOGGING para iniciar o command logging.

LOGCB

Use o comando LOGCB para iniciar o log do Adabas control block para cada command logged.

LOGFB

Use o comando LOGFB para iniciar o log do buffer de formato para cada command logged.

LOGIB

Use o comando LOGIB para iniciar o log do ISN buffer para cada command logged.

LOGIO

Use o comando LOGIB para iniciar o log de atividade do Adabas I/O para cada command logged.

LOGRB

Use o comando LOGRB para iniciar o log de gravação do buffer para cada command logged.

LOGSB

Use o comando LOGSB para iniciar o log no search buffer para cada command logged.

LOGUX

Use o comando LOGUX para iniciar o log de dados do user exit B para inclusão no registro de CLOG. Este comando é válido apenas quando CLOGLAYOUT=5.

LOGVB

Use o LOGVB para iniciar no Adabas o log do value buffer para cada command logged.

NOLOGGING

Use comando NOLOGGING para parar ou impedir o log de registro.

NOLOGCB

Use o comando NOLOGCB para parar ou impedir o log do Adabas control block.

NOLOGFB

Use o comando NOLOGFB para parar ou impedir o log do Adabas format buffer.

NOLOGIB

Use o comando NOLOGIB para parar ou impedir o log do Adabas ISN buffer.

NOLOGIO

Use o comando NOLOGIO para parar ou impedir o log do Adabas I/O activity.

NOLOGRB

Use o comando NOLOGRB para parar ou impedir o log do Adabas record buffer.

NOLOGSB

Use o comando NLOGSB para parar ou previnir o log do Adabas search buffer.

NOLOGUX

Use o comando NOLOGUX para parar o log de dados do user exit B inclusão no registro de CLOG. Este comando é válido apenas quando CLOGLAYOUT=5

NOLOGVB

Use o comando NOLOGVB para parar ou impedir o log do Adabas value buffer.

ONLRESUME

Use o comando ONLRESUME para retomar um novo pedido anteriormente suspensa processo do, online reorder, invert, or Event Replicator for Adabas initial-state. Na versão 7.4.4
 STC01746  F AAFAI220,ONLRESUME                                                 
 STC02367  +ADAN43 00220 2022-12-19 07:54:07 Invalid type-in: ONLRESUME 

ONLSTOP

Use o comando para parar o ONLSTOP online reorder, invert, or Event Replicator for Adabas initial-state. O processo continua até o seu próximo ponto de interrupção, a fim de produzir um um consistente estado e, em seguida, encerra após realizar toda a limpeza necessária. Na versão 7.4.4
 STC01746  F AAFAI220,ONLSTOP                                                   
 STC02367  +ADAN43 00220 2022-12-19 07:53:25 Invalid type-in: ONLSTOP

ONLSUSPEND

Use o comando ONLSUSPEND para suspender o online reorder, invert, ou Event Replicator para o Adabas initial-state process. O processo continua até o seu próximo ponto de interrupção, a fim de produzir um consistente estado, realiza uma reminiscência de comando, e entra em um estado onde ele não pode ser selecionado para processamento. Este comando é útil se o processo on-line está consumindo muito dos recursos do núcleo. Na versão 7.4.4
 STC01746  F AAFAI220,ONLSUSPEND                                                
 STC02367  +ADAN43 00220 2022-12-19 07:51:59 Invalid type-in: ONLSUSPEND


RALOCKF

Use o comando RALOCKF para remover o bloqueio do avanço no arquivo especificado (consulte o comando ALOCKF) sem executar o utilitário.

RALOCKFA

Use o comando RALOCKFA para remover o bloqueio do avanço em todos os arquivos para os quais foi criado (consulte o comando ALOCKF) sem executar o utilitário.

RDUMPST

Use o comando RDUMPST para encerrar o online dump status. Este comando é usado normalmente se a execução on-line do utilitário ADASAV foi encerrado de forma anormal.

READONLY

Use o comando READONLY para mudar o status ON ou OFF. Um valor "YES" ON, o valor "NO" é OFF.

REVIEW

Use o comando REVIEW para:
* desativar o Review do Adabas;
* Alterar de hub mode para local mode, ou;
* para especificar ou alterar no Adabas hub Review com o qual nucleo comunica. 

STOPF

Use o comando STOPF para parar todos os usuários que estão usando o arquivo especificado. Todas as transações abertas dos usuários serão paradas imediatamente. Um usuário que esteja usando este file parado (através do envio de um comando) receberá o código de resposta 9. Este comando não pára usuários EXF ou UTI.
STC08623  F AAFAI230,STOPF=498                                                
STC08152  +ADAN34 00230 2018-07-26 07:35:03    users stopped                  
STC08152  +ADAN41 00230 2018-07-26 07:35:03 Function completed              

STOPI

Use o comando STOPI para parar todos os usuários que não tenham executado um comando durante o intervalo de tempo especificado (em segundos). Todas as transações abertas dos usuários serão paradas imediatamente. Um usuário que esteja usando este file que foi parado vai (através do envio de um comando) receberá o código de resposta 9. Este comando não pára usuários EXF ou UTI.
STC08623  F AAFAI230,STOPI=900                                                
STC02861  +ADAN29 00230 2018-07-24 17:21:40 No users stopped                  
STC02861  +ADAN41 00230 2018-07-24 17:21:40 Function completed 

STOPU

Use o comando STOPU para parar e excluir o usuário com o user ID no Adabas atribuído (na forma mostrada nos comandos display), ou parar e excluir todos os usuários com o job name especificado (job-name). Todas as transações abertas dos usuários pararam será feito fora. Cuidado: Se está a definido no Adabas ADARUN OPENRQ=NO (especificando que os usuários não são obrigados a emitir OP como o primeiro comando da sessão), execute o comando STOPU somente se tiver certeza de que os usuários a ser excluído não estão mais ativos. Se um usuário com uma transação aberta é excluído, e depois retorna (através do envio de um comando), não há nenhuma indicação sobre a devolução da transação. Se o usuário continuar a operação, inconsistências lógicas no banco de dados pode ocorrer. Nota - O comando STOPU=X'userid' não é permitida para reordenar os processos on-line ou invertido. Use o ON‌LSTOP=X'identifier'

SYNCC

Use o comando SYNCC para forçar a sincronização de todos os usuários ET. O núcleo de espera para todos os usuários ET para alcançar status de ET.
STC04647  F AAFAI330,SYNCC                                   
STC02860  ADAN41 00330 2026-06-23 09:56:51 Function completed

TCPIP

Use o comando TCPIP para abrir ou fechar uma conexão direta no com link do TCP/IP para o núcleo Adabas ou fechar todas as ligações TCP/IP quando nenhuma URL for especificada. Este comando só é possível quando o parâmetro ADARUN TCPURL é definido como "YES" e todas as condições para essa configuração foram atendidos. Este comando pode ser usado para fechar a URL definida no parâmetro ADARUN TCPURL, ou para abrir ou fechar adicionais ligações TCP/IP. Você deve identificar a universal resource locator (URL) para a ligação de TCP/IP que você deseja abrir ou fechar. A URL é um endereço de 20 bytes em conformidade com a especificação RFC para URLs.
api-name = é um valor de caráter 3-1 identificar a interface de programação de aplicativo (API) para usar. Ambas as APIs para o IBM TCP/IP (HPS, OES) ea API para a Interlink pilha (ILK) são suportados atualmente.

stackid = é um valor de caracter para indentificar de 8-1 a pilha para usar:

* for the HPS API, this is the name of the TCP/IP started task.
* for the OES API, no value is needed.
* for the ILK API, this is the subsystem identifier.

port-number = é um número de caracteres 1-5 em notação decimal.
Examplos
TCPIP=OPEN=ILK://ILZ5:1234
TCPIP=CLOSE=ILK://ILZ5:1234
Para fechar todas as URLs abertas:
TCPIP=CLOSE


TNAA

Use o comando TNAA definir o limite de tempo de atividade não-usuários para acesso somente. Este valor deve ser maior que zero e substitui o valor definido pelo parâmetro ADARUN TNAA. Em ambientes de cluster núcleo, o comando TNAA é global, por definição, e afeta todos os núcleos do cluster.

TNAE

Use o comando TNAE defini o limite de tempo de atividade não-lógica para os usuários ET. Este valor deve ser maior que zero e substitui o valor definido pelo parâmetro ADARUN TNAE. Em ambientes de cluster núcleo, o comando TNAE é global, por definição, e afeta todos os núcleos do cluster.

TNAX

Use o comando TNAX definir o limite de tempo de atividade não-usuários de control users. Este valor deve ser maior que zero e substitui o valor definido pelo parâmetro ADARUN TNAX. Em ambientes de cluster núcleo, o comando TNAX é global, por definição, e afeta todos os núcleos do cluster.

TT

Use o comando TT para definir o limite de tempo de transação para os usuários lógica ET. Este valor deve ser maior que zero e substitui o valor definido pelo parâmetro ADARUN TT. Em ambientes de cluster núcleo, o comando TT é global, por definição, e afeta todos os núcleos do cluster.

UNLOCKF

Use o comando UNLOCKF para desbloquear o arquivo especificado.

UNLOCKU

Use o comando UNLOCKU para desbloquear o arquivo especificado que anteriormente foi bloqueado para todos os usuários não utilitários.

UNLOCKX

Use o comando UNLOCKX para desbloquear o arquivo especificado que anteriormente foi bloqueado para usuários de controle não exclusivo.

UTIONLY

Use o comando UTIONLY para mudar o parâmetro de status ADARUN UTIONLY ON (ligado) ou off (desligado). O default é NO.
Leia Mais

sábado, maio 16, 2026

Entendendo o Modelo de Lista Invertida no Adabas Mainframe

Se você trabalha ou está estudando o Adabas Mainframe, com certeza já ouviu falar que ele é um banco de dados baseado em Listas Invertidas. Mas você sabe o que isso significa na prática e por que essa arquitetura torna o Adabas um dos bancos de dados mais rápidos do mundo? O grande segredo da sua velocidade está na forma como ele indexa e encontra as informações.


O que é uma Lista Invertida?

Para entender o conceito, pense no índice remissivo no final de um livro de história. Se você quiser encontrar todas as páginas que mencionam a palavra "Mainframe", você não lê o livro inteiro. Você vai até o final, procura pela palavra "Mainframe" e vê uma lista com os números das páginas (ex: págs. 45, 112, 204). Uma lista invertida faz exatamente isso no banco de dados: ela mapeia valores específicos (chaves secundárias) e aponta diretamente para os registros que os contêm (chaves primárias ou, no caso do Adabas, os ISNs). Dizemos que a lista é "invertida" porque, em vez de abrirmos um registro para ler quais dados estão lá dentro, nós fazemos o caminho inverso: olhamos para o dado (o valor do índice) para descobrir quais registros possuem aquela informação.

Como funciona no Adabas Mainframe?

No Adabas, essa estrutura é implementada por meio do Associator. Quando você define um campo em um arquivo Adabas como um Descriptor (Descritor), o sistema cria e mantém automaticamente uma lista invertida para ele. O processo de busca funciona em três etapas simples: A Consulta: Seu programa Natural faz uma busca, por exemplo: FIND EMPLOYEES WITH CITY = 'SÃO PAULO'. A Busca na Lista Invertida: O Adabas Nucleus não vai até o arquivo principal (Data Storage) ler registro por registro. Ele vai direto ao Associator, procura o valor 'SÃO PAULO' na lista invertida do campo CITY. O Resultado: A lista invertida responde imediatamente com a lista de todos os ISNs (Internal Sequence Numbers) correspondentes. Com os ISNs em mãos, o Adabas busca os registros exatos. Essa estratégia elimina a necessidade de fazer varreduras completas nas tabelas (Table Scans), tornando as consultas incrivelmente rápidas. Vantagens e Desvantagens das Listas Invertidas Como qualquer escolha de arquitetura tecnológica, o modelo de listas invertidas possui um equilíbrio entre prós e contras que todo desenvolvedor e DBA deve conhecer.

Vantagens

Alta Eficiência de Busca: É ideal para grandes volumes de dados. O tempo de resposta para encontrar registros específicos é praticamente instantâneo, economizando muito MIPS no Mainframe. Consultas Combinadas Rápidas: O Adabas consegue cruzar listas invertidas de descritores diferentes na memória RAM (fazendo operações lógicas como AND, OR, NOT com os ISNs) antes mesmo de tocar no disco para ler os dados reais.

Desvantagens

Espaço em Disco: Embora o Adabas use técnicas avançadas de compactação, manter os índices de listas invertidas exige um espaço considerável no Associator. Custo de Atualização: Nada vem de graça. Sempre que seu programa faz um STORE, DELETE ou modifica um campo descritor com UPDATE, o Adabas precisa atualizar a lista invertida correspondente em tempo real. Se um arquivo tiver descritores demais, as operações de escrita podem se tornar mais pesadas.

Conclusão

Dominar o funcionamento do modelo de lista invertida do Adabas vai muito além de entender uma teoria de banco de dados: é um divisor de águas entre o desenvolvedor júnior e o profissional sênior de Mainframe. Quando você passa a enxergar que o Adabas resolve a maior parte das equações lógicas cruzando listas de ISNs dentro do Associator, antes mesmo de tocar no Data Storage, a sua forma de escrever código Natural muda completamente. Você para de criar estruturas que forçam o banco de dados a fazer varreduras sequenciais desnecessárias e passa a desenhar lógicas cirúrgicas, baseadas em descritores eficientes. Em uma era onde a otimização de recursos é prioridade máxima nas grandes corporações, cada milissegundo de CPU economizado se traduz em redução drástica no consumo de MIPS. Portanto, da próxima vez que você digitar um comando FIND ou READ, lembre-se do mecanismo que está rodando por baixo do capô. O seu código agradece, o desempenho do sistema decola e o DBA da sua empresa certamente vai dormir mais tranquilo.
Leia Mais

Como o Superdescritor salva a performance do seu Programa Adabas

Se você trabalha com desenvolvimento em ambiente Mainframe, já deve ter ouvido a máxima: "MIPS é dinheiro". No Adabas, a diferença entre uma consulta que roda em milissegundos e um processo batch que arrasta o ambiente inteiro está na forma como você modela e acessa suas chaves de busca. Muitos desenvolvedores (especialmente os que estão começando no mundo Natural/Adabas) criam chaves de busca de qualquer jeito. O resultado? Consultas que geram leituras sequenciais pesadas, sobrecarregam a Inverted List no Associator e disparam o consumo de CPU. Hoje, vamos entender o verdadeiro "pulo do gato" da performance no Adabas: a diferença crucial entre Subdescritores e Superdescritores, e como o segundo pode salvar a sua aplicação.

Conceito Rápido

Antes de ir para o código, vamos abrir o capô do Adabas e entender o que cada um faz:

Subdescritor: É uma chave criada a partir de um pedaço de um campo existente.
Exemplo: Você tem o campo DATA-CONTRATO (AAAAMMDD), mas cria um Subdescritor apenas para o ano (AAAA).

Superdescritor: É o verdadeiro campeão da performance. Ele permite combinar múltiplos campos (ou pedaços deles) em uma única chave de busca no Associator.
Exemplo: Você combina COD-CLIENTE + ANO-CONTRATO em um único índice.

O problema: O FIND com múltiplos campos

Imagine que você precisa buscar os contratos de um cliente específico criados no ano de 2026. Uma abordagem muito comum (e altamente ineficiente) é escrever um FIND combinando campos normais no WITH. O que acontece por baixo dos panos? Quando você faz isso, o Adabas precisa ir até a Inverted List do Associator, ler todos os ISNs do cliente X, depois ler todos os ISNs do ano de 2026 e fazer um cruzamento lógico em memória (um AND de listas de ISNs) para só então devolver o resultado. Se o cliente tiver milhões de registros, o Associator vai sofrer, o consumo de MIPS vai para o espaço e a consulta vai demorar.

A Solução: O Superdescritor em Ação

Em vez de fazer o Adabas cruzar duas listas gigantescas no Associator, nós criamos um Superdescritor (vamos chamá-lo de S1) que já nasce com a combinação pronta: COD-CLIENTE + ANO-CONTRATO. Dessa forma, o Adabas não faz cruzamento nenhum. Ele vai direto na árvore de índices do Associator, localiza a chave exata (ex: 123452026) e traz os ISNs instantaneamente. Uma operação que demoraria minutos em arquivos com dezenas de milhões de registros passa a ser imediata.

Exemplo Prático em Natural: O Antes e o Depois

Para ficar claro, vamos ver como muda o código e o comportamento do banco de dados. 🔴 Abordagem Ruim (Consome MIPS e gera overhead no Associator) Neste cenário, estamos usando dois campos descritores separados. O Adabas terá que cruzar as duas listas de ISNs em tempo de execução.
* TRADICIONAL: Filtro composto por descritores separados
FIND CONTRATOS-VIEW WITH CLIENTE-ID = #CLI-PROCURADO
                     AND ANO-CONTRATO = '2026'
  /* O Adabas lê a lista do cliente, lê a lista do ano,
  /* faz a intersecção de ISNs e depois busca no DATA Storage.
  DISPLAY CONTRATO-NUM STATUS VALOR
END-FIND

O Pulo do Gato com Superdescritor

Aqui, usamos o Superdescritor SUPER-CLI-ANO (que é a fusão de CLIENTE-ID e ANO-CONTRATO).
* OTIMIZADO: Busca direta utilizando o Superdescritor (S1)
* O formato da busca concatena as duas variáveis em uma única chave
FIND CONTRATOS-VIEW WITH SUPER-CLI-ANO = #CHAVE-COMBINADA
  /* O Adabas vai direto no endereço exato da combinação.
  /* Zero cruzamento de listas, resposta instantânea!
  DISPLAY CONTRATO-NUM STATUS VALOR
END-FIND
Dica de Performance: Repare que no segundo exemplo, a busca lógica no Associator tornou-se de indexação direta. O ganho de velocidade aqui é exponencial conforme o tamanho do arquivo cresce.

Subdescritor vs. Superdescritor

Para não errar na arquitetura do seu arquivo, siga essa regra de ouro:
Cenário Descritor Justificativa
Preciso filtrar relatórios ou telas por apenas uma parte de um campo (ex: apenas o mês de uma data, ou os primeiros dígitos de um CEP). Sub Evita que você precise criar um campo redundante no Data Storage apenas para guardar um pedaço de informação.
Tenho telas de consulta ou processos batch repetitivos que filtram por dois ou mais campos fixos (ex: Empresa + Filial + Status). Super Evita o cruzamento de listas de ISNs no Associator. A combinação cria um atalho definitivo direto para o dado.
Leia Mais