요약하자면
시작(Noarchivelog)--------------------------->Archivelog-------------------->TEST datafile손상(백업파일없음)
↑
(TEST tablespace생성)
(다른건 다 남아있고, TEST만 손상)
결론부터 말하자면, 복구하지 못합니다.
원리를 생각하시면 당연한 이치입니다. Archivelog이전에 tablespace가 생성되었으므로, Archivelog mode 전환이전의 자료들은 어떤 자료가 있었는지 알수가 없으므로 복구못합니다.
*
결국
**이후 해당 datafile을 제외해버리고 controlfile을 재생성해서 DB 를 open시키면 아래와 같은 증상이 발생합니다.
시작(Noarchivelog)--------------------------->Archivelog-------------------->TEST datafile손상(백업파일없음)
↑
(TEST tablespace생성)
(다른건 다 남아있고, TEST만 손상)
결론부터 말하자면, 복구하지 못합니다.
원리를 생각하시면 당연한 이치입니다. Archivelog이전에 tablespace가 생성되었으므로, Archivelog mode 전환이전의 자료들은 어떤 자료가 있었는지 알수가 없으므로 복구못합니다.
*
1 alter database create datafile 2* '/home/oracle/oradata/testdb/test_b01.dbf' as '/home/oracle/temp/test_b01.dbf' SQL> /위와같이 Archivelog 에서의 복구할때와 같이 임시파일은 지정해 줄 수는 있지만(손상된 시점은 Archivelog모드이므로),
결국
SQL> recover datafile '/home/oracle/temp/test_b01.dbf'; ORA-00283: recovery session canceled due to errors ORA-01610: recovery using the BACKUP CONTROLFILE option must be done복구시도하게 되면 위와 같은 메시지가 뜨게 되고, oracle에서 하라는 대로 backup control옵션을 줘서 실행시키면,
SQL> recover database using backup controlfile; ORA-00279: change 586068 generated at 02/01/2012 23:02:23 needed for thread 1 ORA-00289: suggestion : /backup/arc/1_8_771325738.dbf ORA-00280: change 586068 for thread 1 is in sequence #8 Specify log: {와 같이 Archivelog전환 이전의 자료들을 찾지못해서 복구가 불능합니다.=suggested | filename | AUTO | CANCEL} auto ORA-00308: cannot open archived log '/backup/arc/1_8_771325738.dbf' ORA-27037: unable to obtain file status Linux Error: 2: No such file or directory Additional information: 3 ORA-00308: cannot open archived log '/backup/arc/1_8_771325738.dbf' ORA-27037: unable to obtain file status Linux Error: 2: No such file or directory Additional information: 3
**이후 해당 datafile을 제외해버리고 controlfile을 재생성해서 DB 를 open시키면 아래와 같은 증상이 발생합니다.
SQL> select tablespace_name, file_name from dba_data_files; TABLESPACE_NAME FILE_NAME ------------------------------ --------------------------------------------- INDX /home/oracle/oradata/testdb/indx01.dbf EXAMPLE /home/oracle/oradata/testdb/example01.dbf USERS /home/oracle/oradata/testdb/users01.dbf SYSAUX /home/oracle/oradata/testdb/sysaux01.dbf UNDOTBS1 /home/oracle/oradata/testdb/undotbs01.dbf SYSTEM /home/oracle/oradata/testdb/system01.dbf TEST_A /home/oracle/product/10g/dbs/MISSING00007 TEST_B /home/oracle/product/10g/dbs/MISSING00008 TEST_C /home/oracle/product/10g/dbs/MISSING00009이미 포기한 tablespace들이므로 drop tablespace를 이용해서 다 지우는 수 밖에 없습니다. ㅠㅠ