본문 바로가기

Oracle DataBase/백업복구 실습

drop table 명령으로 삭제된 Table 복구하기

★ drop table 명령으로 삭제된 Table 복구하기 

 

Table 생성하기 

 

SQL> create table test01(no number) tablespace test

 

SQL> insert into test01 values(1);

SQL> insert into test01 values(2);

SQL> insert into test01 values(3);

SQL> commit;

 

TO_CHAR(SYSDATE,'YYYY-MM-DD:HH24:MI:SS
--------------------------------------
2012-01-08:00:08:26

 

SQL> insert into test01 values(4);.

SQL> commit;

SQL> @tt

TO_CHAR(SYSDATE,'YYYY-MM-DD:HH24:MI:SS
--------------------------------------
2012-01-08:00:09:05

 

★ test01 table 지워지는 장애 발생!

 

SQL> drop table test01 purge;

 

 

★ 복구에 필요한 파일들을 모두 임시경로에 복원하기

 

백업된 Data file 복사해오기

cp /data/backup/close/*.dbf /data/backup/temp/

cp /home/oracle/oradata/testdb/*.ctl /data/backup/temp/

cp /home/oracle/oradata/testdb/*.log /data/backup/temp/

 

SQL> !vi $ORACLE_HOME/dbs/inittestdb.ora

컨트롤파일 경로를 바꾸어준다.

 

★ Data file 위치 변경하기

 

SQL> alter database rename file '/home/oracle/oradata/testdb/system01.dbf'
to '/data/backup/temp/system01.dbf'

 

SQL> alter database rename file '/home/oracle/oradata/testdb/undo01.dbf' to '/data/backup/temp/undo01.dbf';

 

SQL> alter database rename file '/home/oracle/oradata/testdb/sysaux01.dbf' to '/data/backup/temp/sysaux01.dbf';

 

SQL> alter database rename file '/home/oracle/oradata/testdb/users01.dbf' to '/data/backup/temp/users01.dbf';

 

SQL> alter database rename file '/home/oracle/oradata/testdb/example01.dbf' to '/data/backup/temp/example01.dbf';

 

★ redo log 파일 데이터 변경

 

SQL> alter database rename file '/home/oracle/oradata/testdb/test01.dbf' to '/data/backup/temp/test01.dbf';

 

SQL> alter database rename file '/home/oracle/oradata/testdb/redo01_a.log' to '/data/backup/temp/redo01_a.log';

 

SQL> alter database rename file '/home/oracle/oradata/testdb/redo02_a.log' to '/data/backup/temp/redo02_a.log';

 

SQL> alter database rename file '/home/oracle/oradata/testdb/redo03_a.log' to '/data/backup/temp/redo03_a.log';

 

 

SQL> recover database until time '2012-01-08:00:08:26';
Media recovery complete.

( redo log에 기록되어 복구함 log switch 일어났을경우 archive 에 있던걸 복구함 )


SQL> alter database open resetlogs;

Database altered.

 

SQL> select * from test01;

 

 

★ 임시 경로에 필요한 파일은 system01.dbf, sysaux01.dbf, undotbs01.dbf 이렇게 3가지이며 Table을 생성했던 Tablespace 까지 포함해서 총 4가지만 임시경로로 복사한후에

 

mount를 시켜준후에 mount -> open 과정에서 data file 을 읽는데

control file 에는 위에 3가지 파일 말고 그외에 파일들이 기록이 되어있다 그래서 오픈이 안되기떄문에

 

SQL> alter database datafile '/home/oracle/oradata/testdb/users01.dbf'

offline drop

 

이런식으로 모두 제외를 시켜준 후에 복구를 시작하면 되겠다.