[오라클]OFFLINE DROP 후 복구 절차
offline drop 명령어는 control file에서 datafile을 제거 후에
재생성 하는 것과 같은 이치입니다. 단지 차이는 데이터파일 명이 MISSING 인지
기존 파일명을 그대로 가지는지만 다르겠습니다.
- 컨트롤파일 재생성시
SQL> select name from v$datafile;
NAME
/u01/ora9i/oradata/PROD/system01.dbf
/u01/ora9i/oradata/PROD/undotbs01.dbf
/u01/ora9i/oradata/PROD/users01.dbf
/u01/ora9i/oradata/PROD/users02.dbf
/u01/ora9i/product/9.2.0/dbs/MISSING00005
/u01/ora9i/oradata/PROD/example01.dbf
일반 데이터가 들어가는 테이블스페이스의 데이터파일은 offline되었으므로
DB는 open이 가능합니다.하지만 해당 데이터파일을 복구하기 위해서는 백업과
archive가 필요합니다. offine drop된 데이터파일의 데이터를
읽으려고 할 경우에는 당연히 아래와 같은 메세지가 나고 해당 데이터는
복구 불능입니다. 일부를 추출하는 것도 여러 자료를 찾아보고
어떻게든 해보려고 했는데 안되네요.
테스트 해보기에는 block corruption 에러가 났을 경우에 수행하는
event를 적용했는데 역시 복구불능이었습니다.
dbms_repair로도 안되었습니다.
....
SQL> exec dbms_repair.admin_tables ( table_name => 'REPAIR_TABLE', -
table_type => dbms_repair.repair_table, -
action => dbms_repair.create_action, tablespace => 'EXAMPLE');
BEGIN dbms_repair.admin_tables ( table_name => 'REPAIR_TABLE', table_type => dbms_repair.repair_table, action => dbms_repair.create_action, tablespace => 'EXAMPLE'); END;
*
ERROR at line 1:
ORA-06550: line 1, column 83:
PLS-00201: identifier 'DBMS_REPAIR.REPAIR_TABLE' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
SQL> select count(*) from hr.kkk;
select count(*) from hr.kkk
*
ERROR at line 1:
ORA-00376: file 5 cannot be read at this time
ORA-01110: data file 5: '/u01/ora9i/oradata/PROD/users03.dbf'
recovery 수행
SQL> !cp /u01/ora9i/oradata/PROD_KKK/users03.dbf /u01/ora9i/oradata/PROD/users03.dbf
SQL> recover datafile '/u01/ora9i/oradata/PROD/users03.dbf';
ORA-00279: change 67160 generated at 02/05/2007 23:56:37 needed for thread 1
ORA-00289: suggestion : /u01/ora9i/oradata/PROD/archive/1_9.dbf
ORA-00280: change 67160 for thread 1 is in sequence #9
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: change 67297 generated at 02/06/2007 00:41:03 needed for thread 1
ORA-00289: suggestion : /u01/ora9i/oradata/PROD/archive/1_10.dbf
ORA-00280: change 67297 for thread 1 is in sequence #10
ORA-00278: log file '/u01/ora9i/oradata/PROD/archive/1_9.dbf' no longer needed for this recovery
ORA-00279: change 67299 generated at 02/06/2007 00:41:04 needed for thread 1
ORA-00289: suggestion : /u01/ora9i/oradata/PROD/archive/1_11.dbf
ORA-00280: change 67299 for thread 1 is in sequence #11
ORA-00278: log file '/u01/ora9i/oradata/PROD/archive/1_10.dbf' no longer needed for this recovery
Log applied.
Media recovery complete.
SQL> alter database datafile '/u01/ora9i/oradata/PROD/users03.dbf' online;
Database altered.
SQL> select name, status from v$datafile;
NAME STATUS
-------
/u01/ora9i/oradata/PROD/system01.dbf SYSTEM
/u01/ora9i/oradata/PROD/undotbs01.dbf ONLINE
/u01/ora9i/oradata/PROD/users01.dbf ONLINE
/u01/ora9i/oradata/PROD/users02.dbf ONLINE
/u01/ora9i/oradata/PROD/users03.dbf ONLINE
/u01/ora9i/oradata/PROD/example01.dbf ONLINE
6 rows selected.
SQL> select tablespace_name, status from dba_tablespaces;
TABLESPACE_NAME STATUS
---------
SYSTEM ONLINE
UNDOTBS1 ONLINE
TEMP ONLINE
USERS ONLINE
EXAMPLE ONLINE
SQL> select * from v$recover_file;
no rows selected
SQL> select count(*) from hr.kkk;
COUNT(*)
438272
'01.오라클 > 009.DB Trouble Shooting' 카테고리의 다른 글
[오라클]INVALID recompile (0) | 2013.02.23 |
---|---|
[오라클]DELETE, UPDATE 후 commit 데이터 복구 (0) | 2013.02.20 |
[오라클]ORA-00031: session marked for kill 의 해결책 (0) | 2012.12.20 |
[오라클]Plan Table is Old Version (0) | 2012.12.19 |
[오라클]IMP-00017 에러 처리 방법 (0) | 2012.12.19 |