Uma das possibilidades de uso do DBCA é criar um template a partir de um banco de dados existente no servidor. Quando utilizamos esse recurso, temos duas opções: Criar um template somente com as caracterísitcas do banco de dados para criar um novo banco vazio ou podemos gerar um template com os datafiles e por tanto, todos os bancos de dados criados utilizando esse template terá as mesmas tablespaces e schemas.

No entanto, se o banco de dados utilizado para gerar o template tiver uma tablespace em que o seu tamanho total em megabytes seja fracionado, o DBCA comete um pequeno erro. Em vez de arredondar o tamanho do tablepsace, ele remove o caractere que indica o início da fração. Isso faz com que um tablespace de pouco mais de 1GB seja interpretado como mais de 100 GB pelo DBCA, caso tenha 2 dígitos após a vírvula.

No exemplo utilizado, a tablespace “EXAMPLE” tem um tamanho total de 1304166400 bytes, que convertido em mebabytes (bytes/1024/1024) resulta em 1243,75 MB.

Vamos criar um template com datafiles a partir desse banco de dados. Abaixo a sequência das principais etapas do DBCA para realizar esse procedimento.

Template criado, tentaremos criar um novo banco de dados utilizando ele. Acesse o DBCA novamente, selecione a opção de criar um banco de dados, selecione o modo avançado, selecione e por fim o template criado.

Quando chegamos na etapa de configuração de armazenamento, ao clicar em avançar, o DBCA retorna a crítica abaixo:

A mensagem indica que o servidor não tem espaço suficiente para criar o banco de dados. Porém, observe que ele está informando que o sistema de arquivo tem aproximademente 21 GB disponível e e que o tamanho do banco de dados a ser criado é de aproximadamente 123 GB.

O tamanho real banco de dados não chega a 2GB, podemos confirmar isso verificando o tamanho do arquivo de tamplate em $ORACLE_HOME/assistants/dbca/templates pelo terminal do Linux.

O maior arquivo, que é “template_dibiei.dfb” (contém os datafiles) tem 338 MB, improvável ter 123 GB dentro dele (se houvesse, parabéns para o algoritmo de compressão).

Voltando o DBCA para a etapa de selecionar o template, clicando no botão de exibir detalhes, vemos o datafile do tablespace “EXAMPLE” com tamanho de 124375 MB:

Para solucionar esse problema, devemos voltar ao diretório $ORACLE_HOME/assistants/dbca/templates e editar o arquivo <template>.dbc, ele contém todos os dados do template configurado em um padrão xml.

Utilizando qualquer editor de texto, navegue até os atributos de storage e identifique a linha do datafile específico, o parâmetro é o “SIZE”. Aqui é importante verificar no banco de dados de origem qual é o tamanho real do tablespace, arredondar o valor e alterar nesse xml.

Arquivo xml gerado pelo DBCA
Arquivo xml gerado pelo DBCA, alterado manualmente pelo vi

Feito a alteração, podemos abrir o DBCA novamente e selecionar o template ajustado. Observe que agora ele exibe o tamanho de 1244 MB e na etapa de configuração de armazenamento não existe mais o impasse de espaço insuficiente, somente o alerta de que o tamanho da FRA é menor que o mínimo recomendado, mas isso não impede de criarmos o banco de dados.

Leave a Reply

Discover more from Blog do Dibiei

Subscribe now to keep reading and get access to the full archive.

Continue reading