Desenvolvimento

Ξ 2 comentários

Recriando instâncias ASM e resolvendo problemas com Diskgroups corrompidos

publicado por Alexandre Luis Pires

No caso de você não poder montar os seu sgrupos de discos ASM, você não será capaz de iniciar qualquer banco de dados usando esses grupos de discos. Aqui está um possível erro reportado quando estiver tentando montar grupos de discos ASM:

SQL> startup mount

ORA-15032: not all alterations performed
ORA-15063: diskgroup “<DISK GROUP NAME>” lacks quorum of 2 PST disks; 0 found
Este erro pode ocorrer se:

a) disco ASM (s) não é visível no sistema operacional.
b) parâmetro ASM_DISKSTRING não está definido corretamente na instância ASM (s)
c) metadados ASM em disco foram substituídos ou corrompidos

Se você já viu esse erro ou outro erro indicando a corrupção metadados ASM e verificou que o disco(s) é visível com as permissões corretas no sistema operacional e que o parâmetro ASM_DISKSTRING está configurado corretamente, os seus Metadados ASM podem estar corrompidos. Se este for o caso, talvez seja necessário recriar sua instância ASM (s) e seus grupo de discos. As etapas são:

1. Garantir que você tenha um backup RMAN prévia de todos os bancos de dados usando ASM
2. Encerre a instância ASM (s)
3. Use dd para limpar os metadados a partir de discos ASM
4. Re-criar o seu grupo de discos ASM (s)
5. Restaurar bancos de dados

PASSO 1: Verifique se você tiver um RMAN Backup anterior de todos os bancos de dados usando ASM
————————————————– ————————

A única maneira que você pode se recuperar de corrupção de metadados ASM é ter uma Backup RMAN do banco de dados em uma área que não foi afetados por um falha da intancia ASM. Como parte de sua estratégia de recuperação, você deve considerar backup em fita ou uso de um outro storage terciário para salvaguardar os seus backups.

Exemplo de backup RMAN:

1. Conectar ao banco de dados RMAN alvo para backup

rman nocatalog target /

2. Faça o backup seu banco de dados, logs Arquivo e arquivos de controle. Exemplo:

RMAN> backup device type disk format ‘/u03/backup/%U’ database plus archivelog;
RMAN> backup device type disk format ‘/u03/backup/ctrlf_%U’ current controlfile;

3. Manualmente façar cópias de seus SPFILEs. Exemplo:

CREATE PFILE=’/u03/app/oracle/product/10.1.0/dbs/init<sid>.ora’
FROM SPFILE=’/+DATA/V10FJ/spfile.ora’;

Se você não tem um bom backup de todos os bancos de dados (datafiles, control_files, redo logs, logs de arquivo), NÃO CONTINUE ALÉM DO PASSO 1!

PASSO 2: DESLIGUE A INSTÂNCIA(S) ASM
————————————–

Pare de suas instâncias de banco de dados e instâncias ASM com sqlplus ou srvctl (RAC)

Exemplo SQLPLUS:

setenv ORACLE_SID +ASM
sqlplus ‘/ as sysdba’
SQL> shutdown immediate

setenv ORACLE_SID DBSCOTT
sqlplus ‘/ as sysdba’
SQL> shutdown immediate

SRVCTL (RAC) Exemplo:

srvctl stop asm -n <node name 1>
srvctl stop asm -n <node name 2>
srvctl stop database -d <DB_NAME>

PASSO 3: USE DD PARA LIMPAR O METADATA de discos ASM
————————————————– –

Todos os metadados ASM devem ser limpos antes de tentar re-criar instâncias ASM e diskgroups. Comando exemplo:

dd if=/dev/zero of=/dev/rdsk/c1t4d0s4 bs=8192 count=12800

PASSO 4: Recriar o seu grupo de disco(s) ASM
—————————————-

Definir o seu ORACLE_SID à sua instância ASM e criar uma novo diskgroup.
Exemplo:
setenv ORACLE_SID +ASM
sqlplus ‘/ as sysdba’
SQL> startup nomount
SQL> create diskgroup data disk ‘/dev/rdsk/c1t4d0s4’;
SQL> shutdown immediate
SQL> startup mount

PASSO 5: DATABASES RESTORE
——————————————————–
1. Use RMAN para restaurar os control_files e o banco de dados.
Exemplo:
rman target /
RMAN> restore controlfile from ‘/u03/backup/ctrlf_<string>’; — onde <string> é uma string unica gerada pelo %U.
RMAN> alter database mount;
RMAN> restore database;
RMAN> recover database;
RMAN> alter database open resetlogs;

2. Se conecte à instância ASM e obtenha o nome do controlfile.
Exemplo:
setenv ORACLE_SID +ASM
sqlplus ‘/ as sysdba’
SQL> select name, alias_directory from v$asm_alias;

Procure o nome controlfile no diretório on estão os CONTROLFILES :Exemplo

4. Editar o init <SID>. Ora e alterare o parâmetro para apontar para control_files, aquele identificado a partir da view v$asm_alias do ASM.

5. Recrie o spfile. Exemplo:

SQL> create spfile=’+DATA/V10FJ/spfileV10FJ.ora’
from pfile=’/u03/app/oracle/product/10.1.0/dbs/pfile.out’;

6. Deslige e reinicie a instância para usar o spfile recém-criado.

7. Repita o “PASSO 5” seção para bancos de dados adicionais.

————————-

APÓS TODOS ESSES PASSOS É SOMENTE SUBIR A INTANCIA.

Inicie a instância usando a cópia local de seu pfile a partir do passo 1.

setenv ORACLE_SID DBALE
sqlplus ‘/ as sysdba’
SQL> startup nomount pfile=init<sid>.ora

É isso aí, espero ajudar muitas pessoas que sofreram com esse problema como eu sofri.

Autor

ORACLE OCE RAC 10g R2, OCP 11g, 10g , 9i e 8i - Mais de 22 anos de experiência na área de TI.

Alexandre Luis Pires

Comentários

You must be logged in to post a comment.

Busca

Patrocínio

Publicidade



Siga-nos!

Newsletter: Inscreva-se

Para se inscrever em nossa newsletter preencha o formulário.

Artigos Recentes