Restore #4 - Tablespace UNDO sem backup
Agora vamos recuperar o banco de dados com o tablespace de UNDO comrrompido.
Criando o cenário:
1 - Localize o caminho do seu tablespace de UNDO e faça um escrita no arquivo. Forçando uma corrupção.
1 - Localize o caminho do seu tablespace de UNDO e faça um escrita no arquivo. Forçando uma corrupção.
[oracle@teste dbs]$ echo "Thiago Castro" > /u01/app/oracle/oradata/TESTE/datafile/o1_mf_undotbs1_h33p4c21_.dbf |
2 - Da mesma forma feita no Restore #3, se tentarmos fechar o banco com SHUTDOWN IMMEDIATE, não teremos sucesso. Vamos usar SHUTDOW ABORT.
SQL> shut immediate; ORA-01115: erro de IO ao ler o bloco do arquivo 18 (bloco # 1) ORA-01110: 18 do arquivo de dados: '/u01/app/oracle/oradata/TESTE/datafile/o1_mf_undotbs1_h33p4c21_.dbf' ORA-27072: Erro de entrada/saida no arquivo Additional information: 4 Additional information: 1 |
Restore:
1 - Crie um arquivo PFILE a partir do SPFILE
1 - Crie um arquivo PFILE a partir do SPFILE
SQL> CREATE PFILE FROM SPFILE; |
2 - No PFILE altere o parâmetro e realize STARTUP
UNDO_MANAGEMENT = MANUAL |
SQL> STARTUP Total System Global Area 2097150584 bytes Fixed Size 8899192 bytes Variable Size 872415232 bytes Database Buffers 1207959552 bytes Redo Buffers 7876608 bytes Banco de dados montado. ORA-01157: n?o e possivel identificar/bloquear arquivo de dados 18 - consulte arquivo de analise DBWR ORA-01110: 18 do arquivo de dados: '/u01/app/oracle/oradata/TESTE/datafile/o1_mf_undotbs1_h33p4c21_.dbf' |
3 - Veja que a instância está montada e não aberta devido ao erro.
Então vamos ignoraro datafile corrompido. Em seguida abrir o banco de dados.
4 - Agora vamos remover o tablespace de UNDO antigo e criar um novo como o mesmo nome.
5 - Se algum erro for reportado durante a exclusão do tablespace, pode existir ainda algum arquivo em uso. Então, se necessário use o parâmetro "_offline_rollback_segments". Ele pode ser adicionado no PFILE da instância.
Então vamos ignoraro datafile corrompido. Em seguida abrir o banco de dados.
SQL> ALTER DATABASE DATAFILE 18 OFFLINE DROP SQL> ALTER DATABASE OPEN; |
4 - Agora vamos remover o tablespace de UNDO antigo e criar um novo como o mesmo nome.
SQL> DROP TABLESPACE UNDOTBS1; SQL> CREATE UNDO TABLESPACE UNDOTBS1; |
5 - Se algum erro for reportado durante a exclusão do tablespace, pode existir ainda algum arquivo em uso. Então, se necessário use o parâmetro "_offline_rollback_segments". Ele pode ser adicionado no PFILE da instância.
Exemplo de uso: "_OFFLINE_ROLLBACK_SEGMENTS"=('_SYSSMU22$','_SYSSMU23$','_SYSSMU24$') Use a consulta abaixo para saber o nome dos seguementos. SQL>SELECT SEGMENT_NAME FROM DBA_ROLLBACK_SEGS WHERE STATUS = 'NEEDS RECOVERY'; |
6 - Reinicie a instância
SQL> SHUT IMMEDIATE; SQL>STARTUP |
Comentários