1. 정전에 의한 서버다운. 서버 기동시 DB Open
불가.
ORA-01122: database file 1 failed verification check
ORA-01207: file is more recent than control file - old control file
2. Mount 단계에서 Controlfile을 Trace 파일로 내린 후
Nomount 단계로 재기동
SQL> alter database backup controlfile to
trace;
SQL> shutdown immediate;
SQL> startup nomount;
3. Controlfile trace 를 이용하여 Controlfile
재생성
SVRMGRL> CREATE CONTROLFILE REUSE DATABASE "TBILL"
NORESETLOGS NOARCHIVELOG
2) MAXLOGFILES 32
3) MAXLOGMEMBERS 2
4) MAXDATAFILES 254
5) MAXINSTANCES 8
6) MAXLOGHISTORY 36874 …(생략)
4. Recover 수행하였으나 ORA-00600 [3020]
발생
SVRMGRL> recover database;
Wed Dec 17 01:24:18 2014
Errors in file /home/oracle/admin/tbill/udump/tbill_ora_16624.trc:
ORA-00600: internal error code, arguments: [3020],
[12593026], [1], [264959], [3], [240], [], []
Media Recovery failed with error 600
5. 이후 until cancel, control file 재생성을
resettles 로 해서 수행하였으나 마찬가지로 같은 ORA - 600 발생함.
** ORA - 00600 [3020] 은 Redo log file 손실로 인함. Redo 정보와 Database block
정보의 불일치로 인해 발생.
6. init 파라메터에 히든 파라메터
“_corrupt_blocks_on_stuck_recovery=12593026” 적용하고 Noresetlogs 로 콘트롤 파일 재생성 후 DB
mount 로 재기동
7. Recover 수행.
SVRMGRL> ALTER DATABASE RECOVER;
// 실패
— Alertlog —
Media Recovery Start
Media Recovery failed with error 1610
ORA-283 signalled during: ALTER DATABASE RECOVER
database ...
SVRMGRL> ALTER DATABASE RECOVER database using
backup controlfile until cancel; //실패
— Alertlog —
Wed Dec 17 01:53:57 2014
Media Recovery Start
WARNING! Recovering data file 1 from a fuzzy file. If not the current
file
it might be an online backup taken without entering the begin backup
command.
W ARNING! Recovering data file 2 from a fuzzy file. If not the current
file
…. (중략) …
WARNING! Recovering data file 115 from a fuzzy file. If not the current
file
it might be an online backup taken without entering the begin backup
command.
WARNING! Recovering data file 116 from a fuzzy file. If not the current
file
it might be an online backup taken without entering the begin backup
command.
8. Controlfile 을 Resetlog 재생성 하고 아래 히든 파라미터를
init 파일에 추가한 후 mount 로 재기동
_allow_resetlogs_corruption= TRUE // 추가
_corrupt_blocks_on_stuck_recovery // 제거
9. Recover 수행
SVRMGRL> ALTER DATABASE RECOVER
CANCEL;
CANCEL
SVRMGRL> ALTER DATABASE OPEN
RESETLOGS;
— Alertlog —
Wed Dec 17 02:03:21 2014
Errors in file /home/oracle/admin/tbill/udump/tbill_ora_16858.trc:
ORA-00600: internal error code, arguments: [4000],
[5], [], [], [], [], [], []
SVRMGRL> alter session set events ‘10015 trace
name adjust_scn level 1’;
SVRMGRL> alter database open
resetlogs; // 실패
11. 아래 히든 파라메터 적용하여 Mount 수행
_allow_resetlogs_corruption= TRUE
_offline_rollback_segments= RBS0, RBS1, RBS2, RBS3, RBS4, RBS5, RBS6,
ABAXRB
_corrupted_rollback_segments= RBS0, RBS1, RBS2, RBS3, RBS4, RBS5, RBS6,
ABAXRB
12. 복구 수행
SVRMGRL> alter database recover;
SVRMGRL> alter database open resetlogs;
Wed Dec 17 02:29:02 2014
Errors in file /home/oracle/admin/tbill/udump/tbill_ora_16941.trc:
ORA-00600: internal error code, arguments: [2256],
[0], [1073741824], [0], [2408695099], [], [], []
13. 초기화 파라메터의 히든 파라메터 및 이벤트 삭제하고 DB
재기동
— Alertlog —
Wed Dec 17 02:30:40 2014
Errors in file /home/oracle/admin/tbill/udump/tbill_ora_17011.trc:
ORA-00600: internal error code, arguments: [3668],
[1], [2], [134494], [134494], [4], [], []
ORA-600 signalled during: alter database open ...
14. 히든 파라메터 재 적용하고 Mount
_allow_resetlogs_corruption= TRUE
_offline_rollback_segments= RBS0, RBS1, RBS2, RBS3, RBS4, RBS5, RBS6,
ABAXRB
_corrupted_rollback_segments= RBS0, RBS1, RBS2, RBS3, RBS4, RBS5, RBS6,
ABAXRB
15. CANCEL 을 이용하여 복구 수행
SVRMGRL> alter session set event = "10015 trace name context forever, level 10"
<== Undo Segment Recovery Disable !!
SVRMGRL> alter session set event = "10013 trace name context forever, level 10"
<== Instance Recovery Disable !!SVRMGRL> alter session set event = "10015 trace name context forever, level 10"
<== Undo Segment Recovery Disable !!
SVRMGRL> recover database until
cancel;
cancel;
SVRMGRL> alter database open
resetlogs;
— Alertlog —
Wed Dec 17 02:34:54 2014
alter database open resetlogs
RESETLOGS is being done without consistancy checks. This may result
in a corrupted database. The database should be recreated.
RESETLOGS after incomplete recovery UNTIL CHANGE 2408695098
… (중략) ...
Wed Dec 17 02:35:57 2014
Dictionary check beginning
Tablespace 'TEMP' #3 found in data dictionary,
but not in the controlfile. Adding to controlfile.
Dictionary check complete
Wed Dec 17 02:35:58 2014
SMON: enabling tx recovery
SMON: about to recover undo segment 1
SMON: mark undo segment 1 as needs recovery
… (중략) ...
SMON: mark undo segment 7 as needs recovery
SMON: about to recover undo segment 8
SMON: mark undo segment 8 as needs recovery
Wed Dec 17 02:36:06 2014
Completed: alter database open resetlogs
16. Shutdown immediate 후, 아래 히든 파라메터만 남기고
재기동
_offline_rollback_segments= (RBS0, RBS1, RBS2,
RBS3, RBS4, RBS5, RBS6, ABAXRB)
17. TEMP 추가.
SVRMGRL> ALTER TABLESPACE TEMP ADD TEMPFILE
'/EPOST1_DB1/sysdata/temp_01.dbf’ REUSE;
18. 일정 시간이 지나면 아래 ORA - 00600 떨어지면서 SMON
Terminate 됨.
— Alertlog —
Wed Dec 17 02:42:06 2014
Errors in file /home/oracle/admin/tbill/bdump/tbill_smon_17075.trc:
ORA-00600: internal error code, arguments: [4097],
[], [], [], [], [], [], []
SMON: terminating instance due to error 600
Instance terminated by SMON, pid = 17075
* 해당 ORA - 600 [4097] 은 PK 사용 불가능일때 발생하는 에러. 사용자 세그먼트에서 발생할 경우는 상관 없지만 해당
에러가
딕셔니리 세그먼트에 대해 발생하여 DB 가 죽음.
19. 재기동
SVRMGRL> startup;
* 정상적으로 기동이 되나, 여깃 잠시 후 ORA - 00600 발생하며 DB 죽음.
20. DB가 죽기 직전까지의 시간을 이용하여 RBS Status 가 5 인
Rollback segment 를 Drop & Recreate.
(참조뷰 : DBA_ROLLBACK_SEGS, UNDO$ )
Drop Syntax)
DROP ROLLBACK SEGMENT <Segment_name> ;
Create Syntax)
CREATE ROLLBACK SEGMENT <Segment_name> STORAGE(INITIAL 5242880
NEXT 5242880 MAXSIZE UNLIMITED);
21. Shutdowns 후 _offline_rollback_segments
파라미터 삭제 후 재기동
- 이후 System table 에 대하여 ORA - 00600 [4097] 에러는 더이상 발생하지 않음.
22. 이후 업무 테스트 중 아래와 같은 에러 계속 발생
— Alertlog —
Errors in file /home/oracle/admin/tbill/udump/tbill_ora_19204.trc:
ORA-00600: 내부 오류 코드, 인수 : [4553], [2], [0], [], [],
[], [], []
Wed Dec 17 04:11:07 2014
Errors in file /home/oracle/admin/tbill/udump/tbill_ora_17750.trc:
ORA-00600: 내부 오류 코드, 인수 : [12700], [1554581],
[482615984], [19], [], [], [], []
23. ORA - 00600 [12700] 처리
두번째 인자가 OBJECT 번호이므로 해당 OBJECT 번호를 통해 오브젝트 확인
SQL> SELECT OWNER, OBJECT_NAME, OBJECT_TYPE FROM DBA_OBJECTS WHERE
OBJECT_ID = 12700
해당 Object 를 Rebuild 하였으나 지속적인 발생. (Status 는 Valid 였음)
해당 Object 와 관련된 모든 테이블, 인덱스를 move/rebuild 수행하니 더이상 발생하지 않음.
SQL> ALTER TABLE <tbl_name>
MOVE;
SQL> ALTER INDEX <ind_name>
REBUILD;
24. ORA - 00600 [4553] 처리
트레이트 파일을 열어 참조하는 OBJECT 확인함. 트레이스 파일의 CURRENT_SQL 부분을 참 조하여 해당 오브젝트 및 연관된
인덱스를 모두 리빌드 수행하여 줌.
더이상 에러 발생하지 않음.
댓글 없음:
댓글 쓰기