이것저것 테스트를 했다.
오라클 유지보수를 위해서 이것저것 테스트중인데.
분명 dbf 파일 만가지고 복구를 해야하는 일이 분명 생길것이다.
테스트 환경 : oracle 10g R2 ( 10.2.0.1 ) x64 for Linux X64
1. DATA FILE 만 빼고 나머지 전부 삭제.
$ pwd /u01/app/oracle/oradata/test01 $ ls control01.ctl control03.ctl example01.dbf re02.log sysaux01.dbf temp01.dbf users01.dbf control02.ctl re01.log re03.log system01.dbf undotbs01.dbf $ rm *.log $ rm *.ctl $ ls example01.dbf sysaux01.dbf system01.dbf temp01.dbf undotbs01.dbf users01.dbf $ |
2. nomount 로 들어가서 control file 작성하고 , resetlogs 처리로 open
$ sqlplus SQL*Plus: Release 10.2.0.1.0 - Production on Mon Dec 13 13:28:39 2010 Copyright (c) 1982, 2005, Oracle. All rights reserved. Enter user-name: /as sysdba SQL> startup nomount Total System Global Area 285212672 bytes Database altered. SQL> |
fail case 1.
상황 :
위처럼 정상적인 경우가 아닌 상황 재연을 했다.
A 서버의 1번 데이터파일만가지고
B 서버에 넣는것은 불가.
에러메세지 :
ERROR at line 1:
ORA-01503: CREATE CONTROLFILE failed
ORA-01159: file is not from same database as previous files - wrong database id
ORA-01110: data file 5: '/u01/app/oracle/oradata/test01/test.dbf'
fail case 2.
상황 :
tablespace id 가 같더라도 다른 파일로 인식한다.
에러메세지 :
ERROR at line 1:
ORA-01503: CREATE CONTROLFILE failed
ORA-01159: file is not from same database as previous files - wrong database id
ORA-01110: data file 5: '/u01/app/oracle/oradata/test01/test.dbf'
예상되는것은 local management (적어도 테스트 대상은 local 방식임 )에서는 tablespace의 id정보나 기본정보등을
각 테이블스페이스를 구성한 데이터파일의 헤더에 저장을 한다.
그렇게 생각되는것은 open 하지 않은 control파일만 생성된상태에서 복구가 되기때문.
또한 위와 같은 에러를 봤을때는 해당 dbf파일이 번호가 5번인것을 가지고있다.
지금 방금 새로 생성한 control 파일에는 당연히 없을거라 생각된다.
데이터파일번호가 5번이라는 정보를 어디서 가져왔을까?
예상되는곳은 dbf파일 한곳 밖에 없다.
'Oracle > Oracle administrator' 카테고리의 다른 글
ORACLE Event Trace Code List (15) | 2011.12.02 |
---|---|
오라클 SHRINK 대상 추출. (0) | 2011.10.24 |
ORA-06553: PLS-801: internal error [56319] (0) | 2011.01.03 |