Para melhor visualização, recomendo resolução de no mínimo 1024 x 768 e navegador Mozilla Firefox

quarta-feira, 26 de dezembro de 2007

Restauração do ORACLE BASE e ORACLE HOME: É possível?

Olá,

Sim, é possível. Recentemente, tive um problema em um de nossos servidores de desenvolvimento utilizando o Oracle 10g release 1 (120 GB de dados) sobre o Suse Linux 9.2. O problema ocorreu após uma queda de energia elétrica na rede, o que ocasionou o desligamento abrupto da máquina sem o processo de shutdown apropriado. De fato, isto não teria acontecido se o nobreak na qual o equipamento estava ligado estivesse funcionando corretamente, entretanto, por algum defeito técnico o mesmo não forneceu carga elétrica de emergência para manter o equipamento ligado até que fosse realizado o procedimento correto de shutdown.

Devido a este fato, foi diagnosticado danos no sistema de arquivos da partição /u01 (device /dev/hda6) – partição onde fica armazenada o software do banco de dados (ORACLE BASE e ORACLE_HOME) e após constatar a inconsistência no sistema de arquivos da referida partição, foram executadas as ferramentas: e2fsck e dd para tentar corrigir o sistema de arquivos e assim tentar gerar uma cópia da partição para outro disco. Como a operação não teve o sucesso esperado, a corrupção da partição u01/dev/hda6” deixou a mesma inutilizada. Por fim, foi decretada a perda completa e irrecuperável da partição onde o software Oracle estava instalado, e como conseqüência, a mesma foi removida do sistema operacional.

Em resumo, a perda da partição u01 ocasionou a perda do arquivo de inicialização spfile do banco de dados, o arquivo listener.ora, o arquivo de senha orapwd.ora e os diretórios contendo as informações do OEM Database Console entre outros (bdump, udump, cdump ...).

Pelo fato da instalação do software Oracle estar separada dos arquivos do banco de dados, como mostradas abaixo:


DISCO 1

/
/swap
/home
/boot
/u01 (Oracle Base / Oracle Home)

DISCO 2

/u02 (arquivos de banco de dados como data files, controlfiles e redo log files)

DISCO 3

/u03 (arquivos de banco de dados como data files, controlfiles e redo log files multiplexados)

DISCO 4

/u04 (arquivos de banco de dados como data files, controlfiles e redo log files multiplexados)

então, realizei as seguintes tarefas para re-configurar o ORACLE BASE e ORACLE HOME:

  • Criei o diretório u01 na partição raiz do disco 1

Como root:

mkdir /u01
chown -R oracle.dba /u01
chmod 775 /u01

  • Instalei o software Oracle (apenas o software) no diretório /u01

./runinstaller –ignoresysprereqs

  • Após a instalação do software, utilizei o utilitário DBCA para gerar um script de criação do banco de dados (BD01.sh), para aproveitar os comandos gerados pelo mesmo:

mkdir -p /u01/app/oracle/admin/BD01/bdump
mkdir -p /u01/app/oracle/admin/BD01/cdump
mkdir -p /u01/app/oracle/admin/BD01/create
mkdir -p /u01/app/oracle/admin/BD01/pfile
mkdir -p /u01/app/oracle/admin/BD01/udump
mkdir -p /u01/app/oracle/oradata/BD01
mkdir -p /u01/app/oracle/product/10.1.0/bd01/dbs

  • Após a execução dos comandos acima, aproveitei do script (BD01.sql) a linha abaixo para criar o arquivo de senhas

/u01/app/oracle/product/10.1.0/bd01/bin/orapwd
file=/u01/app/oracle/product/10.1.0/bd01/dbs/orapwBD01

Após isso, copiei o arquivo init.ora para o diretório /u01/app/oracle/product/10.1.0/bd01/dbs com o nome de initBD01.ora e realizei as seguintes alterações:
  • Alterei o parâmetro control_files para refletir o caminho atual dos arquivos de controle presentes nas partições u02,u03 e u04
  • alterei o parâmetro db_recovery_file_dest para refletir o caminho atual em /u03/oradata/BD01/flash_recovery_area
  • Para gerar o spfile, tive apenas que abrir o SQL*PLUS e executar o comando abaixo na qual retirei do script postDBCreation.sql:

create spfile='/u01/app/oracle/product/10.1.0/bd01/dbs/spfileBD01.ora' FROM
pfile='/u01/app/oracle/product/10.1.0/bd01/dbs/initBD01.ora ';

  • Para recriar o arquivo listener.ora, utilizei o utilitário Oracle Net Manager
  • Com relação aos diretórios do OEM Database Console tive apenas que recriá-lo utilizando o comando emca –r pelo fato de o repositório já estar criado.

Pronto. Ao executar o SQL*PLUS e digitar startup, o banco de dados abriu normalmente após o processo background SMON realizar a recuperação de instância, pelo fato de o banco de dados não ter sido fechado normalmente (devido a queda de energia). Com o banco de dados funcionando normalmente, apenas realizei algumas alterações no spfile (utilizando ALTER SYSTEM ...) para ajustar alguns parâmetros de configuração.


Google+

Um comentário:

Mauricio Melnik disse...

Olá

Achei muito bom que voce utilize OFA para seus bancos de dados.

Tem muitos DBA's que nao fazem isso.

Mauricio Melnik

Postagens populares

 
BlogBlogs.Com.Br