Práticas recomendadas para Oracle na Solução Bare Metal

Ao implementar bancos de dados Oracle na Solução Bare Metal, sabemos que sua meta é criar seu ambiente facilmente e com o mínimo de problemas possível. Para ajudar você a alcançar essa meta, coletamos feedback de clientes, nossos arquitetos de solução e equipe de suporte que implementaram bancos de dados Oracle na Solução Bare Metal. As informações a seguir oferecem recomendações aprendidas com esses especialistas para que você tenha o melhor desempenho possível ao criar seu próprio ambiente de banco de dados Oracle na Solução Bare Metal.

Implantação de software

Para a implantação mais bem-sucedida de softwares da Oracle, recomendamos o uso do Kit de ferramentas da Solução Bare Metal. O kit de ferramentas fornece vários scripts Ansible e JSON para ajudar a executar a instalação do software Oracle na Solução Bare Metal. Para mais informações sobre o Kit de ferramentas da Solução Bare Metal e como instalar bancos de dados Oracle em um ambiente da Solução Bare Metal, consulte o Guia do usuário do kit de ferramentas.

Sistema operacional

Ao configurar seu sistema operacional em um servidor da Solução Bare Metal, recomendamos que você execute as ações a seguir.

Validar seus servidores NTP

Todos os servidores da Solução Bare Metal precisam ser sincronizados com uma fonte de tempo. Selecione a opção de servidor NTP, física ou virtual, que melhor atenda às suas necessidades.

Quando seus servidores usarem NTP para sincronização de tempo, use o comando timedatectl ou ntpstat para ver se o servidor está sincronizado com uma fonte de tempo. Os exemplos a seguir mostram a saída desses comandos para um servidor sincronizado:

timedatectl show -p NTPSynchronized
NTPSynchronized=yes
synchronised to NTP server (216.239.35.8) at stratum 3
   time correct to within 49 ms
   polling server every 1024 s

Conferir detalhes da contagem e da memória da CPU da VM do Oracle

Para visualizar informações sobre um host de VM do Oracle (OVM), incluindo detalhes de CPU e memória, use o comando xm info. Exemplo:

/usr/sbin/xm info

Para mais informações, consulte a documentação da Oracle sobre como visualizar informações do host.

Verifique as configurações do /etc/fstab para ver as opções de montagem corretas

Para evitar que o processo de inicialização seja travado, sempre configure os pontos de montagem não raiz criados (como /u01 e /u02) com a opção de montagem nofail em vez das configurações padrão. Em casos raros, os dispositivos de armazenamento subjacentes podem não estar disponíveis quando um host for reiniciado. Definir a opção de ativação nofail permite que o processo de inicialização continue quando o servidor não puder visualizar os dispositivos de armazenamento.

O exemplo a seguir mostra as configurações recomendadas para os pontos de montagem /u01 e /u02 no arquivo /etc/fstab:

/dev/mapper/3600a098038314352513f4f765339624c1 /u01 xfs nofail 0 0
/dev/mapper/3600a374927591837194d4j371563816c1 /u02 xfs nofail 0 0

É possível modificar a opção de ativação de defaults para nofail sem afetar um sistema operacional. No entanto, para aplicar as novas configurações, é necessário reinicializar o servidor.

Confirmar as configurações de limite do shell

O kit de ferramentas da Solução Bare Metal configura limites de shell necessários para configurar o Oracle RAC. Será possível pular essa validação se você tiver usado o kit de ferramentas da Solução Bare Metal e não tiver alterado os limites do shell. Os limites do shell precisam ser definidos para todas as contas do sistema operacional que têm o software Oracle, incluindo a infraestrutura de grade. A Oracle recomenda as seguintes configurações para Linux:

Limite Valor flexível Valor rígido
Abrir arquivos 1024 65.536
Máximo de processos do usuário 16384 16384
Tamanho da pilha 10.240 32.768
Memória máxima bloqueada Pelo menos 90% da memória Pelo menos 90% da memória

Use o comando ulimit para verificar os limites de shell flexível e rígido. Por exemplo, insira este comando para verificar o limite flexível do shell:

ulimit -S -n -u -s -l

A saída a seguir mostra as configurações corretas do limite flexível do shell para um sistema com 384 GB de memória:

open files                      (-n) 1024
max user processes              (-u) 16384
stack size              (kbytes, -s) 10240
max locked memory       (kbytes, -l) 355263678

Para verificar os limites rígidos do shell, use o seguinte comando:

ulimit -H -n -u -s -l

A saída a seguir mostra os limites rígidos corretos de shell para um sistema com 384 GB de memória:

open files                      (-n) 65536
max user processes              (-u) 16384
stack size              (kbytes, -s) 32768
max locked memory       (kbytes, -l) 355263678

Se algum dos limites do shell não estiver definido corretamente, modifique as entradas no arquivo /etc/security/limits.conf, como mostrado no exemplo a seguir:

oracle  soft  nofile  1024
oracle  hard  nofile  65536
oracle  soft  nproc   2047
oracle  hard  nproc   16384
oracle  soft  stack   10240
oracle  hard  stack   32768
oracle  soft  memlock 355263678
oracle  hard  memlock 355263678

grid    soft  nofile  1024
grid    hard  nofile  65536
grid    soft  nproc   2047
grid    hard  nproc   16384
grid    soft  stack   10240
grid    hard  stack   32768
grid    soft  memlock 355263678
grid    hard  memlock 355263678
grep MemTotal /proc/meminfo
MemTotal:       16092952 kB

Evitar mudanças nas configurações de vários caminhos

Se você decidir mudar as configurações de vários caminhos, não defina o atributo path_grouping_policy se usar multipath.conf para criar nomes de alias para dispositivos. Essa alteração substitui a política padrão definida na seção de definição de devices.

Em operação normal, o comando multipath -ll deve mostrar um status semelhante ao exemplo a seguir. Cada dispositivo inclui dois caminhos ativos que estão no estado pronto.

3600a0980383143524f2b50476d59554e dm-7 NETAPP  ,LUN C-Mode
size=xxxG features='4 queue_if_no_path pg_init_retries 50 retain_attached_hw_handle' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=50 status=active
| |- 14:0:3:2 sdf                8:80   active ready running
| `- 16:0:5:2 sdv                65:80  active ready running
`-+- policy='service-time 0' prio=10 status=enabled
  |- 14:0:2:2 sdc                8:32   active ready running
  `- 16:0:3:2 sdq                65:0   active ready running

Usar frames Jumbo

Para evitar a fragmentação de pacotes à medida que eles transitam de um servidor para outro em um ambiente RAC, a Oracle recomenda configurar as interfaces do servidor com frames Jumbo. Os frames Jumbo têm um tamanho de MTU de 9.000 bytes e são grandes o suficiente para oferecer suporte a tamanhos de bloco de banco de dados Oracle de 8.192 bytes.

Para configurar frames Jumbo em servidores da Solução Bare Metal para Oracle RAC:

  1. Veja as configurações da rede privada da Solução Bare Metal para confirmar se os frames Jumbo foram configurados:

    gcloud bms networks describe NETWORK_NAME --project=PROJECT_ID --region=REGION | grep jumboFramesEnabled
    

    Exemplo de resposta:

    jumboFramesEnabled: true
    
  2. Identifique as interfaces de rede e o tamanho de mtu delas:

    ip link show | grep mtu
    

    Exemplo de resposta:

    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    2: enp55s0f1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000
    3: enp55s0f2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000
    4: enp55s0f3: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000
    5: enp17s0f0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP mode DEFAULT group default qlen 1000
    6: enp17s0f1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond1 state UP mode DEFAULT group default qlen 1000
    7: enp173s0f0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP mode DEFAULT group default qlen 1000
    8: enp173s0f1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond1 state UP mode DEFAULT group default qlen 1000
    9: bond1: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    10: bond1.117@bond1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    11: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    12: bond0.118@bond0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    13: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default qlen 1000
    14: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN mode DEFAULT group default qlen 1000
    
  3. Usando privilégios de nível raiz, adicione MTU=9000 ao arquivo de configuração da interface de todos os servidores no ambiente da Solução Bare Metal que usam frames Jumbo. O arquivo pode ser encontrado em /etc/sysconfig/network-scripts/ifcfg-interface_name.

    Exemplo de resposta:

    BONDING_OPTS="lacp_rate=1 miimon=100 mode=802.3ad xmit_hash_policy=1"
    TYPE=Bond
    BONDING_MASTER=yes
    PROXY_METHOD=none
    BROWSER_ONLY=no
    DEFROUTE=yes
    IPV4_FAILURE_FATAL=no
    IPV6INIT=no
    IPV6_AUTOCONF=yes
    IPV6_DEFROUTE=yes
    IPV6_FAILURE_FATAL=no
    IPV6_ADDR_GEN_MODE=stable-privacy
    NAME=bond1
    UUID=0e7da685-64bf-44f3-812f-9846d747a801
    DEVICE=bond1
    ONBOOT=yes
    AUTOCONNECT_SLAVES=yes
    MTU=9000
    
  4. Reinicie os serviços de rede para que as alterações entrem em vigor:

    service network restart
    
  5. Emita um comando ping para testar a nova configuração de MTU:

     ping -c 2 -M do -s 8972 svr001
     PING svr001 (172.16.1.10) 8972(9000) bytes of data.
     8980 bytes from svr001 (172.16.1.10): icmp_seq=1 ttl=64 time=0.153 ms
     8980 bytes from svr001 (172.16.1.10): icmp_seq=2 ttl=64 time=0.151 ms
    
    --- svr001 ping statistics ---
    2 packets transmitted, 2 received, 0% packet loss, time 1001ms
    rtt min/avg/max/mdev = 0.151/0.152/0.153/0.001 ms
    

Impacto dos backups e da latência do Oracle RMAN

Se o processo de backup do Oracle RMAN não for limitado pelo parâmetro RATE, ele poderá enviar a capacidade de armazenamento ou as IOPS para o limite de desempenho de um volume de armazenamento. Isso faz com que a E/S de armazenamento seja limitada, aumentando a latência no volume de armazenamento.

Recomendamos que você implemente o parâmetro de canal RATE para limitar a quantidade de largura de banda ou a capacidade que o Oracle RMAN pode usar.

Para mais informações, consulte a documentação da Oracle: 23.2.1.4 RATE Channel parâmetro.

Gerenciamento automático de armazenamento da Oracle

Nossa equipe do Cloud Customer Care e vários clientes da Solução Bare Metal adicionaram o Gerenciamento automático de armazenamento (ASM) da Oracle aos ambientes da Solução Bare Metal. Com a experiência e sabedoria coletiva deles, reunimos a lista de práticas recomendadas a seguir para ajudar você a fazer a instalação do seu próprio grupo de discos de ASM. Nosso objetivo é ajudar você a alcançar o melhor desempenho de armazenamento para seu ambiente da Solução Bare Metal.

Usar um tamanho de LUN uniforme

O tamanho do LUN selecionado precisa representar a unidade de crescimento. O ASM funciona melhor com LUNs que têm um tamanho igual e características de desempenho semelhantes. Para bancos de dados muito grandes, recomendamos um tamanho LUN de 2 TB para otimizar o desempenho.

Criar no máximo dois grupos de discos do ASM

Envie arquivos de dados e uma cópia dos registros REDO para um único grupo de discos DATA. Se quiser, crie um segundo grupo de discos FRA para armazenar backups no disco e arquivar registros. Ao armazenar registros REDO em armazenamento altamente resiliente, não é necessário ter duas cópias.

As gravações de registro REDO são sensíveis à latência. Como resultado, considere multiplexar registros REDO apenas se o perfil de desempenho do grupo de discos FRA corresponder ao perfil de desempenho do grupo de discos DATA.

Dividir grupos de discos do ASM nos LUNs em todos os volumes

Ao criar grupos de discos do ASM, divida o grupo de discos nos LUNs de todos os volumes. Se os LUNs pertencerem a um único volume, inclua todos os LUNs no volume ao criar um grupo de discos. Por exemplo, se um volume tiver um número X de LUNs, use todos os X LUNs ao criar o grupo de discos.

Essa orientação também se aplica ao uso de vários volumes, porque fornecemos limites de QoS nos volumes. Se você usar vários volumes para aumentar a capacidade (mais de 900 Mbps), precisará incluir todos os LUNs de cada volume ao criar o grupo de discos para alcançar o desempenho necessário.

Usar LUNs e volumes com as mesmas características de desempenho no mesmo grupo de discos

Se você usar vários volumes para melhorar a capacidade, use as mesmas características de tamanho e desempenho ao criar grupos de discos do ASM.

Não misture LUNs de volumes com características de desempenho diferentes. Se você incluir LUNs e volumes com diferentes perfis de desempenho no mesmo grupo de discos, os discos que executam operações de E/S poderão ter um limite de desempenho muito menor e causar picos de latência.

Por exemplo, se você criar um grupo de discos do ASM com dois volumes desiguais (1 X 16 TiB e 1 X 5 TiB), as operações de E/S realizadas pelos discos no volume de 5 TB podem causar latência elevada. O volume de 5 TiB tem uma capacidade de processamento muito menor e teto de IOPS. Portanto, ele atingiria o nível de limitação muito antes do nível de limitação para o volume de 16 TiB.

Não compartilhar volumes de armazenamento em vários clusters do RAC

Provisione um volume exclusivo de armazenamento para cada cluster do RAC. Não compartilhe o mesmo volume de armazenamento em vários clusters do RAC. Como os dispositivos de armazenamento aplicam QoS no nível do volume, essa prática minimiza a chance de vizinhos barulhentos competindo por um único pool de IOPS e capacidade.

Por exemplo, se um único volume tiver oito LUNs, não atribua alguns deles a um cluster de banco de dados do RAC e os outros a um cluster diferente. Provisione dois volumes de armazenamento separados e atribua cada um a um cluster do RAC dedicado e separado por volume.

Conhecer as IOPS e a capacidade necessárias antes de criar grupos de discos do ASM

Esteja ciente dos números de pico de desempenho do seu ambiente local. Para encontrar essas informações, gere relatórios AWR durante as horas de pico de cargas de trabalho para registrar os valores máximos de IOPS e capacidade do sistema. Você também pode usar nossa ferramenta de avaliação de banco de dados da Oracle para coletar seus números de pico de desempenho.

Com os números de desempenho local em mãos, consulte nossa tabela de desempenho de armazenamento da Solução Bare Metal para calcular a quantidade de armazenamento que você precisa alocar para os grupos de discos do ASM e alcançar o desempenho necessário. Quando você tem requisitos de capacidade aprimorados (> 768 Mbps), é possível criar vários volumes e dividir o grupo de discos do ASM em todos os LUNs e todos os volumes.

Manter a configuração de vários caminhos

Não altere o group_pathing_policy padrão no arquivo /etc/multipath.conf. Sempre use o valor padrão de group_pathing_policy=group_by_prio para evitar a remoção de nós RAC em caso de falhas no caminho de armazenamento.

Para mais detalhes sobre como manter a configuração de vários caminhos, consulte Evitar alterar as configurações de vários caminhos.

Definir configurações importantes para o ASM

Se você estiver usando a infraestrutura de grade da Oracle 12.1.0.2 ou mais recente no Linux, configure o ASM com o ASMFD ou o UDEV.

Para versões anteriores da infraestrutura de grade da Oracle, use o ASMLib.

  • Para impedir que o ASM da Oracle selecione o dispositivo ASM de caminho único primeiro, defina a ordem de verificação da seguinte maneira:

    ORACLEASM_SCANORDER="dm"
    ORACLEASM_SCANEXCLUDE="sd"
    

    Essa configuração é necessária porque o ambiente de armazenamento da Solução Bare Metal usa dispositivos DM que podem ser visualizados em /proc/partitions.

  • Para verificar se o ASMLib está configurado para gerenciar os discos do ASM, execute o seguinte comando como usuário raiz:

    /usr/sbin/oracleasm configure | grep SCAN
    

    Se você estiver usando o ASMLib, a saída será semelhante a esta:

    ORACLEASM_SCANBOOT=true
    ORACLEASM_SCANORDER="dm"
    ORACLEASM_SCANEXCLUDE="sd"
    ORACLEASM_SCAN_DIRECTORIES=""
    

Criar seu grupo de discos do ASM com redundância externa

O armazenamento fornecido pela Solução Bare Metal usa o NETAPP RAID-DP, que é uma forma de RAID 6 que protege os dados mesmo que dois discos falhem. Como resultado, recomendamos que você use redundância externa para o ASM.

Reiniciar os servidores da Solução Bare Metal após a criação do disco do ASM

Depois de criar seus grupos de discos do ASM, reinicie todos os servidores da Solução Bare Metal no cluster para garantir que a instância do ASM e os grupos de discos fiquem on-line após a reinicialização. Siga esta etapa proativa para evitar problemas que podem acontecer depois que o cluster do banco de dados for criado no grupo de discos do ASM.

Oracle RAC

Nesta seção, explicamos as práticas recomendadas ao instalar clusters de aplicativos reais (RAC, na sigla em inglês) do Oracle na Solução Bare Metal.

Comprimento do nome do cluster do Oracle Grid Infrastructure

Use um nome de cluster que não tenha mais de 15 caracteres.

Um nome de cluster com mais de 15 caracteres faz com que o script root.sh falhe.

Leitor de VNC de túnel sobre SSH

Servidores arbitrários, como o VNC Viewer, são bloqueados pelo firewall do SO padrão do servidor da Solução Bare Metal. Portanto, tunelo a janela X ou o VNC Leitor pelo SSH:

ssh -L 5901:localhost:5901 bms-host
vncviewer localhost:1

Espaço suficiente para o sistema de arquivos raiz

Verifique se o sistema de arquivos raiz (/) tem espaço livre suficiente. Os servidores da Solução Bare Metal vêm com um sistema de arquivos raiz de 20 GB, o que pode não ser suficiente.

No servidor da Solução Bare Metal, verifique o tamanho do sistema de arquivos raiz '/'. O tamanho padrão é 20 GB, o que pode não ser suficiente. Se o tamanho for 20 GB, aumente.

Usar um servidor de nomes como substituto para o Cloud DNS

Se você não quiser usar o Cloud DNS, instale seu próprio servidor de nomes para resolver endereços IP do host no servidor da Solução Bare Metal. A Oracle Grid Infrastructure usa o comando nslookup para conseguir o nome do servidor DNS. O comando nslookup não usa o arquivo /etc/hosts.

Siga estas etapas:

  1. Instale dnsmasq.

    yum makecache
    yum install dnsmasq
    
  2. Abra o arquivo /etc/dnsmasq.conf no modo de edição.

    vi /etc/dnsmasq.conf
    
  3. No arquivo /etc/dnsmasq.conf, adicione estas linhas:

    port=53
    domain-needed
    bogus-priv
    
    strict-order
    expand-hosts
    domain=localdomain
    
    address=/.localdomain/127.0.0.1
    address=//127.0.0.1
    
    listen-address=127.0.0.1
    resolv-file=/etc/dnsmasq-resolv.conf
    
  4. Edite os arquivos /etc/dnsmasq-resolv.conf e /etc/resolv.conf para que contenham apenas a seguinte linha:

    nameserver 127.0.0.1
    
  5. Inicie o serviço dnsmasq:

    systemctl restart dnsmasq
    
    systemctl status dnsmasq
    
  6. Nos dois nós, execute o comando nslookup.

    nslookup at-2811641-svr001
    Server:         127.0.0.1
    Address:        127.0.0.1#53
    
    Name:   at-2811641-svr001
    Address: 192.168.1.10
    
    nslookup at-2811641-svr002
    Server:         127.0.0.1
    Address:        127.0.0.1#53
    
    Name:   at-2811641-svr002
    Address: 192.168.1.11
    

Instalar NTP

Ao instalar o NTP, verifique se todos os nós RAC são sincronizados com o horário do host de salto ou do servidor NTP interno. Siga estas etapas:

  1. Instale o NTP.

    yum install ntp
    
  2. Inicie o serviço ntpd.

    systemctl start ntpd
    
  3. No arquivo /etc/ntp.conf, adicione a linha a seguir para sincronizar com o Bastion Host, que é 10.x.x.x neste caso. Também é possível usar o servidor NTP interno. Nesse caso, 192.x.x.x é o servidor da Solução Bare Metal.

    restrict 192.x.x.x mask 255.255.255.0 nomodify notrap
    server 10.x.x.x prefer
    
  4. Para iniciar a sincronização, atualize o servidor de horário.

    ntpdate -qu SERVER_NAME
    

Executar o script raiz em um nó por vez

Execute o script raiz root.sh em um nó por vez. Se a execução falhar no primeiro nó, não prossiga para o próximo.

Resolver Localhost

Como o servidor da Solução Bare Metal não adiciona o Localhost ao arquivo /etc/hosts, resolva manualmente Localhost em 127.0.0.1.

Garanta limites de recursos suficientes

Antes de instalar o Oracle RAC no servidor da Solução Bare Metal, verifique se os limites de recursos para o usuário root e oracle são suficientes.

Use o comando ulimit para verificar os limites.

Defina a variável ORACLEASM_SCANORDER

Se você estiver usando o Oracle ASMLib, para impedir que o Oracle ASM selecione seu dispositivo ASM de caminho único primeiro, defina a ordem de verificação da seguinte maneira:

ORACLEASM_SCANORDER="dm"
ORACLEASM_SCANEXCLUDE="sd"

Essa configuração é necessária porque o ambiente de armazenamento da Solução Bare Metal usa dispositivos DM que podem ser mostrados no arquivo /proc/partitions.

Oracle é uma marca registrada da Oracle e/ou afiliadas.