Recuperação de Datafiles

19 abr

Recuperação de Datafiles

Design sem nome (2)

Neste lab iremos acompanhar um cenário onde é realizado a deleção de um Datafile do banco de dados de forma acidental (ou não) e as formas de recuperação.

• Preparando o ambiente:

$ sqlplus / as sysdba
SQL> create tablespace lab datafile '/u01/oradata/WINT2/lab01.dbf' size 100M autoextend on next 100M;
SQL> create user lab identified by lab default tablespace lab;
SQL> alter user lab quota unlimited on lab;
$ rman target /
RMAN> report schema;
RMAN> backup datafile 10;

1º Cenário:

O Datafile foi excluído, mas a instancia do banco de dados não foi desligada. Recuperação utilizando File Descriptor do S.O.

• Excluindo o datafile:

$ cd /u01/oradata/WINT2/
$ rm lab01.dbf
$ tail /u01/app/oracle/diag/rdbms/wint2/WINT2/trace/alert_WINT2.log
$ rman target /
RMAN> validate database;
$ sqlplus / as sysdba
$ create table lab.objects tablespace lab as select * from all_objects;
$ tail /u01/app/oracle/diag/rdbms/wint2/WINT2/trace/alert_WINT2.log

• Identificando arquivo pelo file descriptor no S.O.:

$ ps -ef | grep dbw
$ cd /proc/17245/fd/
$ ls -lh
• Movendo o arquivo para o diretório de datafiles:
$ cat 268 > /u01/oradata/WINT2/lab01.dbf
$ cd /u01/oradata/WINT2/
$ ls -lh lab01.dbf
$ sqlplus / as sysdba

SQL> create table lab.objects tablespace lab as select * from all_objects;

2º Cenário:

O Datafile foi excluído, a instancia foi desligada. Recuperação utilizando backup RMAN.

• Excluindo o Datafile e reiniciando a instancia:

$ cd /u01/oradata/WINT2/
$ rm lab01.dbf
$ sqlplus / as sysdba
SQL> shut immediate;
$ tail -f /u01/app/oracle/diag/rdbms/wint2/WINT2/trace/alert_WINT2.log
$ sqlplus / as sysdba
SQL> shut abort;
SQL> startup;

• Restaurando o datafile pelo RMAN:

$ rman target /

RMAN> restore datafile 10;
RMAN> recover datafile 10;
$ sqlplus / as sysdba
SQL> alter database open;

3º Cenário:

O Datafile foi excluído, a instancia foi desligada e não temos backup RMAN.

• Removendo Datafile e reiniciando Instancia:

$ cd /u01/oradata/WINT2/
$ rm lab01.dbf
$ sqlplus / as sysdba
SQL> shut immediate;
$ tail -f /u01/app/oracle/diag/rdbms/wint2/WINT2/trace/alert_WINT2.log
$ sqlplus / as sysdba
SQL> shut abort;
SQL> startup;

• Removendo Tablespace:

SQL> alter database datafile '/u01/oradata/WINT2/lab01.dbf' offline;
SQL> alter database open;
SQL> drop tablespace lab including contents and datafiles;