Recuperação de datafiles e tablespaces - Oracle

Veja neste artigo como recuperar datafiles e tablespaces no Oracle

Para que possamos implementar uma recuperação de datafile ou tablespace gerenciado pelo usuário, temos, é claro, que ter um backup do banco de dados, seja ele COLD (banco fora) ou HOT (banco no ar e utilizando archives). Como iremos simular a recuperação de apenas uma tablespace ou datafile, faremos um backup apenas da tablespace USERS. Uma das formas para se fazer esse backup é utilizando as técnicas mostradas no artigo anterior, ou seja, BEGIN BACKUP e END BACKUP. Então, vamos lá!

  1. Coloque a tablespace no modo BEGIN BACKUP
    ALTER TABLESPACE USERS BEGIN BACKUP;
  2. Copie o datafile da tablespace USERS utilizando os comandos do sistema operacional (COPY do WINDOWS, ou cp do Linux...)
    COPY D:\Oracle\Oradata\USERS01.DBF E:\Backup\Oracle\USERS01.DBF 1 arquivo(s) copiado(s).
  3. Coloque a tablespace no modo END BACKUP
    ALTER TABLESPACE USERS END BACKUP;

De forma a confirmar os dados que existem nas tabelas dessa tablespace, vamos fazer um select de forma a visualizar alguns dados.

SQL> select * from scott.emp; truncando (conforme solicitado) antes da coluna DEPTNO EMPNO ENAME JOB MGR HIREDATE SAL COMM 7369 SMITH CLERK 7902 17/12/80 800 7499 ALLEN SALESMAN 7698 20/02/81 1600 300 . . . . . . . . . . . . . . . . . . . . 7902 FORD ANALYST 7566 03/12/81 3000 7934 MILLER CLERK 7782 23/01/82 1300 14 linhas selecionadas. SQL> select to_char(sysdate,'dd/mm/yyyy hh:mi:ss') from dual; TO_CHAR(SYSDATE,'DD ------------------- 25/05/2006 09:50:44

Perceba que às 09:50:44 do dia 25/05/2006, tabela EMP do usuário SCOTT possuia 14 linhas.

SQL> select tablespace_name, status 2 from dba_tablespaces; TABLESPACE_NAME STATUS ------------------------------ --------- SYSTEM ONLINE UNDOTBS1 ONLINE SYSAUX ONLINE TEMP ONLINE USERS ONLINE EXAMPLE ONLINE 6 linhas selecionadas.

Perceba que a tablespace USERS está online e, portanto, as tabelas podem ser acessadas.

Alguns minutos depois, o disco onde a tablespace estava armazenada apresentou um problema e você vai precisar fazer a recuperação novamente.

ERRO na linha 1: ORA-01157: nÒo Ú possÝvel identificar/bloquear arquivo de dados 4 - consulte arquivo de anßlise DBWR ORA-01110: 4 do arquivo de dados: 'D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\USERS01.DBF' SQL> select tablespace_name, status 2 from dba_tablespaces; TABLESPACE_NAME STATUS ------------------------------ --------- SYSTEM ONLINE UNDOTBS1 ONLINE SYSAUX ONLINE TEMP ONLINE USERS OFFLINE EXAMPLE ONLINE 6 linhas selecionadas.

A tablespace agora se encontra offline, e os dados contidos nela não podem ser acessados.

Após reconstruir o file system, seja ele Windows ou Linux, você vai restaurar o datafile que sofreu o crash a partir de um backup(USERS01.DBF), e executar o comando de RECOVER TABLESPACE.

Execute a recuperação da tablespace que apresentou problema:

SQL> RECOVER TABLESPACE USERS; Recuperaþòo De Mýdia Concluýda.

Depois, coloque a tablespace em modo ONLINE

SQL> ALTER TABLESPACE USERS ONLINE; Tablespace alterado.

Consultando DBA_TABLESPACES, você poderá verificar que a tablespace está novamente disponível para uso.

SQL> SELECT TABLESPACE_NAME, STATUS 2 FROM DBA_TABLESPACES; TABLESPACE_NAME STATUS ------------------------------ --------- SYSTEM ONLINE UNDOTBS1 ONLINE SYSAUX ONLINE TEMP ONLINE USERS ONLINE EXAMPLE ONLINE 6 linhas selecionadas.

Fizemos um exemplo recuperando uma tablespace. Agora, imagine que essa tablespace fosse formada de dois datafiles, um datafile na unidade D e outro na unidade E. Da mesma forma com que você recuperou a tablespace, é possível também recuperar o datafile.

Imagine que o datafile existente na unidade D apresentou problemas de leitura no disco, e está corrompido.

Para isso, após corrigir o problema físico do disco, restaure o ultimo backup válido disponível no path determinado pela consulta:

SQL> SELECT FILE_ID, FILE_NAME 2 FROM DBA_DATA_FILES; FILE_ID FILE_NAME ---------- --------------------------------------------------- 4 D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\USERS01.DBF 3 D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\SYSAUX01.DBF 2 D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\UNDOTBS01.DBF 1 D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\SYSTEM01.DBF 5 D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\EXAMPLE01.DBF

Perceba o número de identificação do datafile USERS01.DBF(4), após identificar o número do arquivo, execute o seguinte comando

SQL> RECOVER DATAFILE 4; RECUPERAÞÒO DE MÝDIA CONCLUÝDA.

Com esse, encerramos mais um artigo referente à recuperação do banco de dados. Espero ter desmistificado um pouco o processo de recuperação gerenciado pelo usuário. Claro que ainda existem muitas possibilidades a serem exploradas.

Artigos relacionados