Mostrando postagens com marcador comandos linux. Mostrar todas as postagens
Mostrando postagens com marcador comandos linux. Mostrar todas as postagens

quarta-feira, 25 de março de 2026

Alta Disponibilidade no Oracle SE2: Alternativas ao Data Guard

Quando falamos de bancos de dados de missão crítica, a primeira palavra que vem à mente dos gestores de TI é: Disponibilidade. No ecossistema Oracle, a solução definitiva para Disaster Recovery (DR) e Alta Disponibilidade (HA) é o Oracle Data Guard. No entanto, há um detalhe crucial: o Data Guard é um recurso exclusivo da versão Enterprise Edition (EE).

Para muitas empresas, o custo de licenciamento do Oracle EE é proibitivo, tornando o Oracle Standard Edition 2 (SE2) a escolha lógica e de excelente custo-benefício. Mas como proteger os dados e garantir a continuidade do negócio no SE2 sem o Data Guard? É exatamente isso que vamos explorar neste artigo.

O Desafio do Oracle SE2

O Oracle SE2 é um banco de dados extremamente robusto, capaz de lidar com cargas de trabalho intensas. O desafio não está na performance, mas na replicação nativa. Sem o Data Guard, não temos o transporte e a aplicação automática de Redo Logs para um servidor standby de forma nativa e "out-of-the-box".

Felizmente, a engenharia de infraestrutura nos oferece alternativas sólidas. Abaixo, detalho as três principais estratégias que implementamos para garantir HA em ambientes SE2.

1. Log Shipping Customizado (A Abordagem "Mão na Massa")

Para empresas que buscam uma solução de custo zero em licenciamento de terceiros, a criação de um mecanismo de Log Shipping customizado é a saída. Como DBAs Sêniores, podemos simular o comportamento básico do Data Guard através de scripts (Shell Script/Bash).

  • Como funciona: O banco de dados primário é configurado em modo ARCHIVELOG. Um script é agendado (via Cron) para copiar os Archive Logs gerados para o servidor secundário (via rsync ou scp). No servidor secundário, o banco fica em estado de Mount (modo de recuperação), e outro script aplica esses archives continuamente.
  • Vantagem: Custo zero de software.
  • Desvantagem: O RPO (Recovery Point Objective) e o RTO (Recovery Time Objective) são maiores. Se o servidor principal cair, os dados gerados entre o último archive transferido e a queda podem ser perdidos, e o failover é um processo manual.

2. Soluções de Terceiros (Ex: Dbvisit Standby)

Quando o negócio exige um RPO e RTO muito baixos, mas o orçamento ainda não comporta o Oracle EE, a melhor alternativa do mercado é utilizar softwares de replicação de terceiros homologados para Oracle SE2. O mais famoso e confiável deles é o Dbvisit Standby.

  • Como funciona: Ele atua exatamente onde o Data Guard faria falta. Ele captura, transfere e aplica os logs de forma automatizada, segura e comprimida. Além disso, oferece uma interface gráfica para monitoramento e permite realizar o Graceful Switchover (inversão de papéis entre primário e standby para manutenções) com poucos cliques.
  • Vantagem: Confiabilidade enterprise, RPO de minutos (ou segundos) e facilidade de operação.
  • Desvantagem: Exige aquisição de licença do software de terceiros (embora seja infinitamente mais barato que o upgrade para o Oracle EE).

3. Clusterização a Nível de Sistema Operacional (Pacemaker/Corosync)

Se o objetivo for apenas Alta Disponibilidade local (proteger contra a queima de uma placa-mãe ou falha de SO) e não um Disaster Recovery geográfico, podemos usar a clusterização do Linux.

  • Como funciona: Dois servidores físicos (ou VMs) são conectados a um Storage Compartilhado (SAN/NAS). O banco de dados Oracle SE2 roda no Servidor A. Ferramentas como Pacemaker e Corosync monitoram a saúde do serviço. Se o Servidor A falhar, o cluster move o IP virtual (VIP) e monta o disco do storage no Servidor B, iniciando a instância do Oracle automaticamente.
  • Vantagem: Failover automático sem perda de dados (pois o storage é o mesmo).
  • Desvantagem: O storage compartilhado se torna o ponto único de falha (SPOF). Se o storage parar, o banco para.

Conclusão

Não ter o Oracle Data Guard não significa que seu banco de dados precisa ficar vulnerável. A escolha entre Log Shipping customizado, ferramentas como Dbvisit ou Clusterização de SO depende exclusivamente do orçamento da sua empresa e do tempo máximo que o seu negócio suporta ficar fora do ar (RTO).

Precisa de ajuda para desenhar a arquitetura do seu banco de dados?

A AJMSolutions é especialista em arquitetura, tuning e alta disponibilidade para ambientes de missão crítica (Oracle, Informix e PostgreSQL). Nós analisamos o seu cenário e implementamos a solução que protege seus dados sem estourar o seu orçamento de TI.

sábado, 28 de setembro de 2024

Comandos Linux: explorando memória virtual com vmstat


 Uma visão detalhada do comando vmstat, sua sintaxe básica e como usá-lo.

Há muitos comandos, ferramentas e variações dos dois para você colocar em prática quando se trata de estatísticas do sistema no Linux. No entanto, se você precisa de detalhes sobre memória virtual, usar o vmstat é uma ótima opção.

O que é?

O Virtual Memory Statistics Reporter, também conhecido como vmstat, é uma ferramenta de linha de comando do Linux que relata vários bits de informações do sistema. O VMSTAT relata informações sobre processos, memória, paginação, bloco de I/O, traps, discos e atividade da CPU.

Ao executar o vmstat, tenha em mente que as informações são uma média  solicitadas desde o momento da última reinicialização. Relatórios subsequentes usam medições de atraso e contagem. Eu abordo esses especificamente durante a discussão de sintaxe.

Sintaxe do comando

A sintaxe do comando vmstat é bem simples:

$ vmstat [option][delay [count]]

Opções

delay - O delay entre a atualização em segundos. Se o delay não é especificado,  um relatório é impresso com os valores médios desde a última inicialização.

count - Números de atualizações. Na ausência de count, quando o delay é definido, o padrão é infinito.

-a, --active

Exibe a memória ativa ou inativa. 

-f, --forks

O -f exibe o número de foros desde a inicialização. Isso inclui as sytem calls, fork, vfork e é equivalente ao número total de tarefas criadas. Cada processos é representado por uma ou mais tarefas, dependendo do uso do thread. Esta tela não se repete.

-m, --slabs

Exibe o slabinfo.

-n, --one-header

 Exibe o cabeçalho apenas uma vez e não periodicamente.

-s, --stats

Mostra uma tabela de vários contadores de eventos e estatísticas de memória. Esta tela não se repete. 

-d, --disk

Relatório de estatísticas de disco.

-D, --disk-sum

Relata algumas estatísticas resumidas sobre a atividade do disco 

-p, --partition device 

Estatísticas detalhadas sobre as partições.

-s, --unit character 

Altera a saida entre 1000 (k), 1024 (K), 1000000 (m), ou 1048576 (M) bytes. Observe que isso não altera os campos do swap (si/so) ou block (bi/bo).

-t, --timestamp

 Adiciona timestamp para cada linha

-w, --wide

Modo de saída amplo (útil para sistema com maior quantidade de memória, onde o modo de saída padrão sofre de quebra de coluna indesejada). A saída é mais larga que 80 caracteres por linha.

-y, --no-first

 Omite o primeiro relatório com estatísticas desde a inicialização do sistema.

-V, --version

Mostra informação sobre a versão e sai.

-h, --help

 Mostra ajuda e sai.  

Saída básica e como entendê-la:

A forma mais básica deste comando não usa nenhuma opção. Aqui está a saída padrão e como lê-la:



Você vê informações sobre processos, memória, swap, IO, sistema e CPU. A página man para o comando declara o seguinte (man vmstat):

  • procs
    • r: Número de processos em execução (run queue)
    • b: Número de processos em espera (blocked)
  • memory (são afetados pela opção --unit)
    • swpd: Quantidade de memória virtual usada
    • free: Memória livre.
    • buff: Memória usada como buffer
    • cache: Memória usada como cache
    • inact: a quantidade de memória inativa. (opção -a)
    • active: a quantidade de memória ativa. (opção -a)
  • swap (são afetados pela opção --unit)
    • si: Quantidade de memória trocada do disco para a RAM (/s).
    • so: Quantidade de memória trocada da RAM para o disco (/s).
  • io
    • bi: Blocos recebidos do dispositivo de bloco (disco) (KiB/s)
    • bo: Blocos enviados para o dispositivo de bloco. (KiB/s)
  • system
    • in: número de interrupções por segundo, incluindo o clock
    • cs: número de alteração de contexto por segundo
  • cpu (Essas são porcentagens do tempo total da CPU)
    • us: tempo gasto executando código não-kernel. (Tempo do usuário, incluindo tempos bons)
    • sy: tempo gasto executando o código do kernel. (tempo do sistema)
    • id: tempo gasto ocioso. Antes do Linux 2.5.41, isso inclui o tempo io-wait.
    • wa: tempo gasto esperando por I/O. 
    • st: tempo roubado de uma máquina virtual. Antes do Linux 2.6.11, desconhecido.
    • gu: tempo gasto rodando codigo do KVM guest.

Descrição do campo para o modo disco

  • Reads
    • total: total de leituras completadas com sucesso
    • merged: leituras agrupadas (resultando em um I/O)
    • sectors: leituras de setor com sucesso
    • ms: milissegundos gasto com leituras
  • Writes
    • total: total de escritas completadas com sucesso
    • merged: escritas agrupadas (resultando em um I/O)
    • sectors: leituras de setor com sucesso
    • ms: milissegundos gasto com escrita
  • IO
    • cur: I/O em progresso
    • s: segundos gastos com I/O

Descrição de campos para modo de partições de disco

    • reads: numero total de leituras para essa partição
    • read sectors: total de setor lidos para essa partição
    • writes: numero total de escrita para essa partição
    • requested writes: numero total de requisição de escrita para a partição

Descrição de campos para o modo SLAB

O modo slab mostra estatísticas por slab, para obter mais informações sobre essas informações, consulte Slabinfo (5)

    • cache: nome do cache
    • num: numeros concorrentes de objetos ativos
    • total: números totais de objetos disponíveis
    • size: tamanho de cada objeto
    • pages: numero de paginas com pelo menos um objeto ativo

Notas

vmstat requer acesso de leitura para os arquivos abaixo de /proc. O -m requer acesso de leitura a /proc/slabinfo, que pode não estar disponível para usuários padrão. Opções de montagem para /proc, como sub-SET = PID, também podem afetar o que é visível.

Identificação de Gargalos

Para identificar gargalos, observe as seguintes situações:

  1. CPU:
    1. Se us e sy estão altos, a CPU está sobrecarregada.
    2. Se wa está alto, há um gargalo de I/O.
  2. Memória:
    1. Se free está baixo e si/so estão altos, há falta de memória física, causando troca excessiva (swap).
  3. Disco:
    1. Se bi e bo estão altos, há muita atividade de disco, indicando um possível gargalo de I/O.