quinta-feira, 12 de janeiro de 2017

CRIANDO BANCO DE DADOS E DEREPENTE ORA-00058!!!

Olá, sejam todos bem vindos. 

Hoje iremos tratar algo que aparentemente é bem trivial, mas para os que iniciam nos seus laboratórios e que não possuem acesso ao suporte Oracle para ter respaldo, podem muitas vezes se deparar com situações frustrantes como essa. Vamos lá?!?

O CENÁRIO

Bem, utilizamos diversas formas para simular esse erro, minha recomendação se o quiser fazer é  essa :

Máquina Virtual usada para simulação.

  • S.O : Oracle Enterprise Linux 7.3
  • Discos: 1 de 50GB para Instalação do Sistema
  • Discos: 1 de 30GB para armazenamento Formatado à 16KB ( BTRFS)
Muito simples o ambiente criada sua VM prossiga com as instalações do sistema operacional e banco.

A SIMULAÇÃO

Na tentativa de reproduzir o erro eu obviamente, tive que proceder com uma criação de banco de dados usando a GUI do DBCA, como irei mostrar abaixo nas imagens.

Obs.: Se você é do tipo caxias que não usa interface gráfica para nada, ótimo isso é muito bom para seu aprendizado e não ficar refém de ambientes com X11, mas se você se sente mas á vontade usando graficos, tudo bem também, isso é uma opção pessoal de cada um. Deve-se claro aprender a fazer dos dois modos, porém fique livre para escolher o que melhor lhe favorece, não tome como verdade a preferencia dos outros.













Até aqui sem novidades correto? Um processo normal de criação de uma nova base de dados, baseada no template Oracle da opção "GENERAL PURPOSE", um padrão adotado pela maioria e que se customiza ao gosto e definições que cada um tiver em mãos.

O ERRO

Chegamos ao ponto, seguindo este mesmo processo, porém no momento em que se vai definir o armazenamento e a blocagem do banco, nós simplesmente alteramos isso para DB_BLOCK_SIZE=16kb e o armazenamento em /u02/oradata ( disco formatado á 16kb ), vejam o que ocorre:







BINGO! nosso vilão se apresenta. Porque isso ocorre? Bem se você puder pesquisar na internet, falar com amigos mais experientes que já passaram por isso, serão unanimes em dizer : IGNORE ISSO, E RECRIE O BANCO MANUALMENTE. Opa! espere um momento, isso justifica mas não explica. Na realidade esse erro se deve ao fato da base usada como template padrão pelo instalador, que quando usamos o template de new databases baseado no GENERAL PURPOSE na terceira coluna pode-se notar uma opção chamada "INCLUDE DATAFILES = YES".

Estes datafiles por sua vez, já estão pré-formatados á 8KB e se você prestar atenção não é dado a opção de mudar o blocksize do banco nas customizações normais na aba SIZING do instalador, exceto quando solicitamos a customização dos parametros de inicialização já ao final de toda a nossa parametrização, e como todos devem saber o instalador usa RMAN para restaurar esses arquivos, e quando ele encontra essa divergência entre as blocagens , eis que se apresenta nosso erro.

Não confundam isso tudo com conversão de banco que envolve um cenário totalmente apartado e diferente, com uma dinâmica mais refinada.

Contudo podemos consultar uma nota do MOS que nos dá um direcionamento quanto a esse erro que estamos tratando aqui, segue o número da nota :


Adianto á vocês que isso afeta todas plataformas, tanto Windows quanto Linux.

COMO CORRIGIR?

Bom, uma vez que identificamos nosso inimigo e o conhecemos melhor, percebe-se que se trata mais de um WARNING do que propriamente um erro de fato. O contorno para isso é apenas uma mudança na opção de escolha no momento da criação do banco de dados veja :

Abortem a criação com erro, voltem até a tela onde tem as opções de templates e escolharm a opção de CUSTOM DATABASE onde na terceira coluna INCLUDE DATAFILES a opção está como "NO" . Isso porque quem fará a criação é o próprio instalador sem se basear em nenhum tipo de pré-configuração
 Prossigam então com as parametrizações que julgarem necessárias, e quando se depararem com essa tela ao lado no SIZING definam para 16KB sua blocagem, sigam com as demais customizações e finalizem em Ok.

Note que na figura acima já temos nosso banco em pleno vapor de criação, basta aguardar sua finalização e sucesso, temos nosso banco criado com tablespaces á 16KB em discos formatados há 16KB.

PORQUE EU DEVERIA FAZER ISSO?

Esse tipo de customização é de fato rarissima, e deve ser muito bem embasada com evidencias concretas de que a perda de performance do banco está intimamente ligada ao nível de leituras e Block Gets, Physical Reads e etc do seu Banco, tudo isso atráves do DIAGNOSTIC TUNNING PACK ( AWR, ADDM e ASH) é possível de ser obtido. Caso não haja nenhum tipo de evidencia de contenção, wait ou leituras muito longas por conta de arquitetura de discos, vão pelo padrão sempre.

Obrigado á todos pela atenção. Nos veremos em breve.

SUCESSO SEMPRE!!!