Recuperação de Datafiles
Neste post 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;